【发布时间】:2014-06-04 15:50:44
【问题描述】:
我刚刚开始学习 JSP 和 servlet。据我所知,我们可以从 servlet 设置会话属性,并使用 jsp:useBean 在 jsp 中使用它。
现在我有一个名为 Environment 的自定义类,它具有某些属性。在 servlet 中,我正在调用一个返回环境对象列表的服务方法。然后我设置会话属性。
List<Environment> environments = eService.fetchEnvironments();
session.setAttribute("environments", environments);
并使用 RequestDispatcher 将请求和响应对象转发到目标 JSP。 现在我想在 JSP 中访问这个属性。所以我在 JSP(target JSP) 中做了以下操作:
<jsp:useBean id="environments" type="java.util.List<test.project.dto.Environment>"
class="java.util.ArrayList<test.project.dto.Environment>" scope="request"></jsp:useBean>
fetchEnvironments() 方法是这样的:
List<Environment> environmentList = new ArrayList<Environment>();
//Usual stuff
//Creating & initializing Connection, Statement, Sql string
//etc
ResultSet environments = st.executeQuery(sql);
while(environments.next())
{
Environment environment = new Environment();
environment.setEnvID(environments.getInt(1));
environment.setEnvName(environments.getString(2));
environment.setEnvDescription(environments.getString(3));
environmentList.add(environment);
}
打开上述 JSP 文件时出现以下错误,
/EnvironmentManager.jsp (line: 31, column: 2) The value for the useBean class attribute java.util.ArrayList<test.project.dto.Environment> is invalid.
所以我的问题是我在这方面犯了什么错误?我给出的“类”和“类型”属性是否正确?
为了使问题更具建设性:当我有一个自定义类的 List 对象(List
【问题讨论】:
-
为什么不将列表公开为请求属性并使用 JSTL/JSP EL 访问/迭代它?
-
@DaveNewton 感谢您的回复。是的!有效。显然会话属性也有效,但只有当我使用 scriptlet 将其拉入 jsp 时。仅使用 useBean 有什么方法吗?我知道我在这里遗漏了一些非常简单的东西。可能必须更改“类”和“类型”属性的值,但不知道是什么。