我有一個List
,我想將它傳遞給作爲GET查詢字符串參數的後續請求:發送列表數據與Servlet
<a href="servlet?list=<%=request.getAttribute("list")%>">link</a>
這個servlet我想如下檢索它裏面:
String[] list = req.getParameterValues("list");
它不起作用。我怎樣才能使它工作?
我有一個List
,我想將它傳遞給作爲GET查詢字符串參數的後續請求:發送列表數據與Servlet
<a href="servlet?list=<%=request.getAttribute("list")%>">link</a>
這個servlet我想如下檢索它裏面:
String[] list = req.getParameterValues("list");
它不起作用。我怎樣才能使它工作?
的list
屬性是List
,你不應該依賴於它的toString()
,這就是所謂的代碼(幕後)。
相反,您必須迭代列表並在元素之間插入逗號。
爲了能夠使用getParameterValues()
,多個參數以格式發送:
list=item1&list=item2&list=item3
但List#toString()
打印以下格式(右擊頁面在瀏覽器中,選擇查看源看它):
list=[item1,item2,item3]
這顯然不會起作用。有幾種方法來解決這個問題:
正如Bozho說,打印逗號分隔(或保持不變),並使用request.getParameter()
而是和分割字符串,並使用像split()
通常String
方法重新填充列表,substring()
,indexOf()
等
只需以預期的格式打印它。最好的是創建一個EL功能。在會議
商店吧:
request.getSession().setAttribute("list", list);
,這樣你可以從同一個會話檢索它在下一個請求:
List list = (List) request.getSession().getAttribute("list");
如果必要,可以通過密鑰請求參數。
如果您已經在服務器端(應用程序範圍,數據庫等)中有列表,那麼就不要傳遞列表。只傳遞那些參數提供足夠的信息來重新加載/重新填充servlet中的列表。查詢字符串的最大長度有一個限制,最好不要超過255個ASCII字符。如果列表中包含超過一百個項目,則可能會導致它們被截斷。
你的問題急需改寫。閱讀http://tinyurl.com/so-hints開始 – 2010-11-15 03:03:46