2014-02-17 116 views
0

我有一個類Room的ArrayList。我需要將它從一個jsp發送到一個servlet。將一個類的ArrayList從一個jsp傳遞給一個servlet

這似乎是一個HTML或JSP可以發送值到一個servlet是通過表單的唯一途徑,我試過的方法是把它作爲一個隱藏的參數如下:

<input type="hidden" name="allRooms" value="<%=request.getAttribute("allRooms") %>" /> 

但在servlet來我提出這種形式我得到其中編譯錯誤「字符串不能被轉換爲List」爲以下:

List<Room> allRooms=(List<Room>)request.getParameter("allRooms"); 

就在參數變換到對象類型的第一,然後將其轉換爲一個列表如下所示給出相同的異常,但是這次是運行時異常:

Object a=(Object)request.getParameter("allRooms"); 
List<Room> allRooms=(List<Room>)a; 

是否有任何方法將List傳遞給servlet,或者我將不得不將它設置爲JSP中的會話變量?

在此先感謝。

+1

請理解,一個jsp輸出HTML。當瀏覽器提交表單時,它會發送一個包含HTML中文本值的http請求。此時沒有涉及Java對象。 –

回答

2

是否有任何方法將List傳遞給servlet,或者我將不得不將它設置爲JSP中的會話變量?

使用session。這是一個最佳的解決方案。

有沒有辦法來表示HTML的ArrayList通過HTML形式發送。改爲使用session

0

我認爲,如果你通過以下參數,可以和形成的servlet側

param[0]=ss , param[1]=ssw 

陣列你可以做到這一點。

List<String> roomParams =(List<String>)request.getParameter("param"); 

但是要做到這一點。

List<Room> allRooms=(List<Room>)request.getParameter("allRooms"); 

,我認爲是不可能的,所以你應該使用會話屬性

session.setAttribute("allRooms", new ArrayList<Room>()); 
+0

請求屬性不合適。 –

+0

你是對的,更新我的迴應使用會話,而不是一旦用戶改變頁面將會消失的請求。 – Koitoer

+0

如果我使用request屬性,我將不得不通過request.getRequestDispatcher發送它,並且我的表單輸入將不會被髮送。另外我通過表格發送詳細信息。所以它的形式細節或列表。無法同時發送! 我想使用會話是唯一的解決方案!謝謝。 – Crusaderpyro

0

我認爲你不應該直接發送到ListServlet應該去尋找其他的選擇。

你是如何生成的瀏覽器頁面上的ArrayList?如果它是從UI中的多選元素生成的,那麼您可以訪問請求參數值ArrayServlet

Shishir

相關問題