2016-01-24 71 views
0

我在JSP中從servlet獲取輸入並將輸出傳遞給另一個servlet時具有以下代碼。如何將​​元素中的動態值傳遞給servlet

<%ShoppingServlet ss = new ShoppingServlet(); 
ArrayList<Item> itemList = ss.viewItems(); // results from another servlet 

for (Item it: itemList){ 
    out.print("<tr>"); 
    out.print("<td>"+it.getId()+"</td>"); 
    out.print("<td>"+it.getName()+"</td>"); 
    out.print("<td>"+it.getDesc()+"</td>"); 
    out.print("<td>"+it.getPrice()+"</td>"); 
    out.print("<td><input type=\"number\" min = \"0\" placeholder=\"0\" size=\"2\"></td>");//user input for quantity 
    out.print("</tr>"); 

} 
%> 

這產生如下表
enter image description here

什麼我試圖做的是允許用戶更新數量,然後通過所有的最終值到另一臺服務器。

我想將「td」元素中的值打印到「input」元素中,但在這種情況下,我將無法從原始servlet創建的arrayList中動態查看值。

我想知道是否有辦法獲得生成的值並將它們傳遞給下一個servlet。

所有幫助表示讚賞,在此先感謝。

+0

也許我還不夠清楚,但正如我在問題中提到的,如果我的值顯示在輸入元素中,獲取它們不會是一個問題。但它們動態顯示在表單元素out.print(「​​」+ it.getId()+「」);'如果我將它們包裝在輸入標記中,則需要插入值屬性不起作用 –

回答

0

要做到這一點的一種方法是讓您的輸入「名稱」的形式爲item_。你必須像值:

現在,當服務器提交你的servlet可以遍歷請求參數的形式。假設一個名爲「請求」的HttpServletRequest對象:

for(String param : request.getParameterNames()){ 
    if(param.startsWith("item_") { 
     String itemId = param.substr(5); 
     String quantity = request.getParameter(param); 

     ... update itemId with new quantity ... 
    } 
} 
+0

如果我沒有把它們放在第一個地方的輸入標籤中,什麼是ganna使表單捕獲Item的值?如果是這樣的話,我如何將數量與每件物品相關聯? –

+0

表單將發送所有輸入值。您將每個人與一個ID相關聯。你需要檢查值是否改變,然後更新你的數據庫。基本思想是每個數量通過一個id與數據庫中的項目相關聯。 – Dave

0

你可以改變你的代碼來生成表單元素表裏面。就像這樣:

out.print("<form action='/YOUR_SERVLET_MAPPING'>"); 
for (Item it: itemList){ 
    out.print("<tr>"); 
    out.print("<td>"+it.getId()+"</td>"); 
    out.print("<td>"+it.getName()+"</td>"); 
    out.print("<td>"+it.getDesc()+"</td>"); 
    out.print("<td>"+it.getPrice()+"</td>"); 
    out.print("<td><input name=\"entries\" type=\"number\" min = \"0\" placeholder=\"0\" size=\"2\"></td>");//user input for quantity 
    out.print("</tr>"); 
out.print("<input value='Send Data' type='submit'>"); 
out.print("</form>"); 
} 

當 「發送數據」 被點擊時,請求將到/ YOUR_SERVLET_MAPPING(你的servlet)進行。您可以使用getParameterValues(http://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html#getParameterValues(java.lang.String) )方法來獲取值。

String values[] = request.getParameterValues("entries"); 
+0

其實我有形式標籤包裝我的scriplet。問題是,我無法傳遞從數據庫中生成的「Item」對象的值 –

相關問題