我正在使用HttpSession将ArrayList userList
作为会话属性存储在原始Servlet中,然后再将其传递给JSP。然后在下一个JSP中调用它,然后从该JSP调用另一个Servlet。
Servlet 1 - > JSP1 - > JSP2 - > Servlet 2
在Servlet 1中,我将其设置为session:
if (!userList.isEmpty()) {
session.setAttribute("userList", userList);
}
我在JSP 1和JSP 2中迭代它并在Servlet 2中再次调用它。我需要将ArrayList用作servlet 2中另一个方法的参数。
EditStudentForm edt = (EditStudentForm)form;
List<UserApplication> studtList = new ArrayList<UserApplication>();
if ((session.getAttribute("userList")) instanceof List){
studtList = (ArrayList<UserApplication>)request.getSession().getAttribute("userList");
}
try {
uaDAO.editUser(edt,studtList);
action_forward = EDITSUCCESS;
}
看起来铸件并没有真正起作用,因为ArrayList的大小是1(我预计大小至少为30)
我做错了什么?
答案 0 :(得分:0)
Casting工作正常,与列表的大小无关。 Casting只是告诉你,你在userList
中存储的内容实际上是一个ArrayList。如果大小不同,那么它似乎意味着你的逻辑中存在一个错误。在调用userList
后,您是否更改了变量session.setAttribute()
引用的列表?
答案 1 :(得分:0)
尝试转换为List<UserApplication>
。