jsp - Tomcat 6.0 不允许将泛型 ArrayList 用于 useBean

标签 jsp tomcat generic-list usebean

在一个 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/

相关文章:

java - JSP 使用服务器时区显示服务器日期和时间

java - 如何配置 Jetty 处理程序?

c# - 按日期属性对 GenericList<T> 进行排序

java - OSX 上的 Java 和 Blade VPS 之间无法解释的差异

java - 这个 SQL 语法有什么问题?

java - 将具体 map 分配给通用类型 map

asp.net - 将通用列表绑定(bind)到 ASP.NET DropDownList

javascript - 如何在 HTML 表中获取自动序列号列

java - 有没有办法在 JSP 中仅对 POST 变量进行 request.getParameter ?

apache - Tomcat 服务 URLs mod_proxy 和 apache 错误