Search code examples
jsptomcatgeneric-listusebean

Tomcat 6.0 does not allow generic ArrayList to be used for useBean


In a jsp file I have this declaration:

<jsp:useBean scope="request" id="products" class="java.util.ArrayList<sgt.supermarket.entity.Product>"/>

This declaration works fine with GlassFish 2.1, however, when I switch to Tomcat 6.0, exceptions is thrown:

The value for the useBean class attribute java.util.ArrayList is invalid.

Is there any library missed for Tomcat that makes it behave different from Glass Fish 2.1?


Solution

  • EL isn't aware of parameterized types, so there is no need to do so. In JSP/EL there are absolutely no compile-time checks on that. EL is more based on reflection. I am however a bit surprised that it "works" in Glassfish as it isn't specified in JSP/EL specifciation.

    Apart from it all, the jsp:useBean is fairly superfluous in a decent MVC application wherein a Servlet is been used to control and preprocess the requests.

    List<Product> procucts = productDAO.list();
    request.setAttribute("products", products);
    request.getRequestDispatcher("products.jsp").forward(request, response);
    

    The products is now just accessible in EL by ${products}. No need for a jsp:useBean.