2013-11-20 66 views
0

我在嘗試使用動態生成的表單更新信息。很顯然,我可以做到以下幾點,一切都將是簡單:如何在Java中從動態生成的表單處理POST數據?

<% 
String[] names = {"John", "Paula", "Mark", "Maria"}; 
for(String name: names) 
%> 
    <form method="post" action="SavePersonalDetails"> 
     <p><%= name %> 
     <input type="text" name="age"> 
     <input type="submit" value="Save"> 
    </form> 
<% 
} 
%> 

但我找不出一個非混亂的方式僅呈現與一個提交按鈕在以下情況下,用戶做同樣的:

<form method="post" action="SavePersonalDetails"> 
<% 
String[] names = {"John", "Paula", "Mark", "Maria"}; 
for(String name: names) 
%> 
    <p><%= name %> 
    <input type="text" name="age"> 
<% 
} 
%> 
<input type="submit" value="Save"> 
</form> 

有沒有辦法做到這一點?

+0

定義「凌亂」。你已經通過使用scriptlet「混亂」了;循環似乎是多餘的比較。適當的縮進,順便說一句,減少吸盤很長的路要走。 –

回答

1

使用,你可以從吸氣

String[] ages = request.getParameterValues("age"); 

的年齡數組獲得第二種方式。

數組中值的位置與頁面中使用的位置相同,因此您必須在servlet中使用相同的names數組將年齡與正確的人關聯起來。

jsp代碼似乎是正確的

+0

Grazie,非avevo visto quel metodo。 – spacitron

0

您需要將param名稱與相關用戶關聯。有任意數量的方式來做到這一點,這是典型的以某種方式嵌入在輸入元素名稱的ID或限定,例如,

<input type="text" name="age[0]"> 
<input type="text" name="age[John]"> 

或者

<input type="text" name="age_0"> 
<input type="text" name="age_John"> 

或者

<input type="text" name="age['John']"> 

等等。

然後,您遍歷參數尋找名稱startWith有問題的參數,例如age_。您將下拉列表中的參數名稱分開,或者拉出索引符號等,以便您知道誰是年齡被保存在該參數的值中。

這避免了必須依賴參數排序,並且使用JavaScript處理事情變得更容易:每個元素都有唯一的非定位標識符。

相關問題