2011-06-04 45 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);