2

鉴于我的项目中我的 JSP 文件的以下预览:

<%@ page contentType="text/html; charset=utf-8" language="java"%>
<%@ page import="java.util.ArrayList"%>
<%@ page import="beans.UserBean"%>
<jsp:useBean id="userBean" class="beans.UserBean" scope="session" />
<jsp:useBean id="students" type="ArrayList<beans.UserBean>" scope="session" />
<jsp:useBean id="teachers" type="ArrayList<beans.UserBean>" scope="session" />
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

我在 Eclipse 中收到以下错误:

Undefined type: ArrayList

它出什么问题了 ?即使我正在导入ArrayList,Eclipse 也无法识别它,并在以下两行中显示上述消息:

<jsp:useBean id="students" type="ArrayList<beans.UserBean>" scope="session" />
<jsp:useBean id="teachers" type="ArrayList<beans.UserBean>" scope="session" />

为了更清晰的图片:

知道我哪里出错了吗?谢谢

4

1 回答 1

4

type属性应该代表类的完全限定名称,而不是通用声明等。更重要的是,JSP/EL 不知道任何方式的泛型类型。

改用java.util.ArrayList

<jsp:useBean id="students" type="java.util.ArrayList" scope="session" />
<jsp:useBean id="teachers" type="java.util.ArrayList" scope="session" />

所有这些@page import都是不必要的。它们仅在使用scriptlet时使用(那些自 JSP 2.0 以来<% %>一直不鼓励使用的老派东西)。

顺便说一句,如果这些数组列表是事先准备好的并由 servlet 放入作用域中,而您只需要在 EL 中访问它们,那么您根本不需要这些<jsp:useBean>标签。使用type属性而不是class属性暗示您实际上正在使用 servlet。<jsp:useBean>没有这些标签,它也能正常工作。另请参阅我们的 servlets wiki 页面

于 2012-06-30T23:58:44.457 回答