在一个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标签。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top