Search code examples
javajstl

Inner forEach in forEach jstl error


I faced with such problem. I write such jstl code:

<c:forEach var="package" items="${hotel.packages}">
    <c:forEach var="product_item" items="${package.items}">
           //some inputs and so on    
    </c:forEach>
</c:forEach>

my model class look like this:

Hotel class

private java.util.Set<com.acmecorp.acmeproject.model.catalog.hotel.HotelPackage> packages;
public java.util.Set<com.acmecorp.acmeproject.model.catalog.hotel.HotelPackage> getPackages() { /* compiled code */ }

public void setPackages(java.util.Set<com.acmecorp.acmeproject.model.catalog.hotel.HotelPackage> packages) { /* compiled code */ }

HotelPackage

    public java.util.Set<com.acmecorp.acmeproject.model.catalog.hotel.HotelPackageItem> getItems() { /* compiled code */ }

    public void setItems(java.util.Set<com.acmecorp.acmeproject.model.catalog.hotel.HotelPackageItem> items) { /* compiled code */ }
private java.util.Set<com.acmecorp.acmeproject.model.catalog.hotel.HotelPackageItem> items;

I'm geting this message

org.apache.jasper.JasperException: /WEB-INF/view/controls/hotelPackages/hotelPackagesView.jsp (line: 165, column: 24) "${package.items}" contains invalid expression(s): javax.el.ELException: Failed to parse the expression [${package.items}] 

while trying to open my jsp. line 164 it is this line <c:forEach var="product_item" items="${package.items}">

So, may be someone know what is the problem?


Solution

  • I believe it is because 'package' is a reserved Java keyword. Try renaming it to basically anything else.