在一个 jsp 文件中我有这样的声明:
<jsp:useBean scope="request" id="products" class="java.util.ArrayList<sgt.supermarket.entity.Product>"/>
此声明适用于 GlassFish 2.1,但是,当我切换到 Tomcat 6.0 时,会抛出异常:
useBean 类属性 java.util.ArrayList 的值无效。
Tomcat 是否缺少任何使其行为不同于 Glass Fish 2.1 的库?
最佳答案
EL 不了解参数化类型,因此没有必要这样做。在 JSP/EL 中,绝对没有编译时检查。 EL更多的是基于反射。然而,我有点惊讶它在 Glassfish 中“有效”,因为它没有在 JSP/EL 规范中指定。
除此之外,jsp:useBean
在一个体面的 MVC 应用程序中是相当多余的,其中 Servlet
用于控制和预处理请求。
List<Product> procucts = productDAO.list();
request.setAttribute("products", products);
request.getRequestDispatcher("products.jsp").forward(request, response);
products
现在只能通过 ${products}
在 EL 中访问。不需要 jsp:useBean
。
关于jsp - Tomcat 6.0 不允许将泛型 ArrayList 用于 useBean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1906123/