2011-06-04 49 views

回答

1

HTTP/HTML不理解Java对象。您必须在将它们放入HTML之间时将它们转换为字符串,然后在从请求参数中提取它们时将它们转换回来。

String yourCollectionAsString = getAsString(yourCollection); 
request.setAttribute("yourCollectionAsString", yourCollectionAsString); 
request.getRequestDispatcher("/WEB-INF/page.jsp").forward(request, response); 

<input type="hidden" name="yourCollection" value="${yourCollectionAsString}" /> 

因为它序列化和反序列化Java对象转换为相对紧凑的字符串格式中的单行
String yourCollectionAsString = request.getParameter("yourCollection"); 
List<SomeObject> yourCollection = getAsObject(yourCollectionAsString); 

甲JSON解析器等Google Gson可以是此处有用Java代码(在客户端也可以重用JavaScript)。


或者,您也可以将其存储在会话与一个长期的,独特的,自动生成的ID一起,并通过该ID而不是左右。

String yourCollectionID = UUID.randomUUID().toString(); 
request.getSession().setAttribute(yourCollectionID, yourCollection); 
request.setAttribute("yourCollectionID", yourCollectionID); 
request.getRequestDispatcher("/WEB-INF/page.jsp").forward(request, response); 

<input type="hidden" name="yourCollectionID" value="${yourCollectionID}" /> 

String yourCollectionID = request.getParameter("yourCollectionID"); 
List<SomeObject> yourCollection = (List<SomeObject>) request.getSession().getAttribute(yourCollectionID); 
request.getSession().removeAttribute(yourCollectionID);