Tomcat的6.0不允许用于useBean的通用的ArrayList
-
19-09-2019 - |
题
在一个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是无效的。
是否有这使得它从玻璃鱼2.1表现不同错过为Tomcat任何库中?
解决方案
EL不知道参数化类型的,所以没有必要这么做。在JSP / EL有绝对的,没有编译时检查。 EL是更基于反射。不过,我有点惊讶,它“作品”在Glassfish的,因为它不是在JSP / EL specifciation规定。
除了这一切,所述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警告,那么你可能要与这一个来代替你的行:
<% request.setAttribute("products",
new java.util.ArrayList<sgt.supermarket.entity.Product>()); %>
但BalusC仍然是正确的:当你使用经典的MVC模式那么最好是在控制器中,而不是在视图中创建此产品清单。如果您使用的是视图第一图案,那么我建议写其创建和填充干净的Java代码此产品列表自己的JSP标签。
不隶属于 StackOverflow