如何在Java中处理动态生成的表单中的POST数据?

时间:2013-11-20 21:18:28

标签: java jsp servlets

我正在尝试使用动态生成的表单更新信息。显然我可以做以下事情,一切都很简单:

<%
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>

有办法做到这一点吗?

2 个答案:

答案 0 :(得分:1)

使用第二种方式,您可以从getter获取

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

一系列年龄。

数组中值的位置与页面中使用的位置相同,因此您必须在servlet中使用相同的names数组,才能将年龄与合适的人员关联起来。

jsp代码似乎是正确的

答案 1 :(得分: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操作更容易:每个元素都有一个唯一的非位置标识符。