2011-09-30 76 views
0

我想在两个JSP页面之间传递List。这是我写的一个类的对象列表。在JSP页面之间传递列表/数组

如何在JSP页面之间传递此列表? request.setAttribute似乎适用于字符串,但不是其他任何东西。而且,如果使用列表无法轻松完成,我可以将列表转换为数组并将其传递,没有问题。

+0

转换为JSON字符串,然后使用'request.setAttribute'。 –

+3

*“request.setAttribute似乎适用于字符串,但不是其他任何东西”*这是不正确的。这个假设只是基于误解。 – BalusC

回答

5

首先,非常糟糕的设计会导致像在不同的JSP页面之间传递列表这样的问题。 “扼杀萌芽”将创建一个单独的java类,其中包含列表并初始化它,然后您可以根据需要在尽可能多的jsp页面上访问列表。

但是,如果您确实想要这样做,您可以将该列表放入会话中。

request.getSession().setAttribute("list",myListObject); 

那么其他的页面上,你可以得到

List<MyType>myListObject=(List<MyType>) request.getSession().getAttribute("list"); 

你应该从会话清除列表,你不要求后,

request.getSession().removeAttribute("list"); 
+0

这给了我第二页上的构建错误。 ()“)给出这个错误:类型不匹配:无法从对象转换为列表 user906153

+1

我编辑了我的答案 – 2011-09-30 18:25:05

2

最简单的回答是:这取决于。

如果您有例如one.jsp你呼叫重定向到second.jsp - 您可以使用请求范围

<c:set var="list" value="${yourListObject}" scope="request" /> 

如果你有one.jsp和几页之后,你要显示你的列表中,那么你应该使用会话范围:

<c:set var="list" value="${yourListObject}" scope="session" /> 

上显示second.jsp列表:

${list} 

yourListObject您可以通过

取代
  • <%= Java表达式%>
  • 使用豆具有这种列表,并只是通过参考这里
+0

不错........... – 2011-09-30 18:36:47