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

如何在Java中处理动态生成表单中的POST数据?,java,jsp,servlets,Java,Jsp,Servlets,我正在尝试使用动态生成的表单更新信息。显然,我可以做到以下几点,一切都很简单: <% String[] names = {"John", "Paula", "Mark", "Maria"}; for(String name: names) %> <form method="post" action="SavePersonalDetails"> <p><%= name %> <input type="t

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

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



有办法做到这一点吗?

使用从getter获得的第二种方法

String[] ages = request.getParameterValues("age");
一系列的年龄

值在数组中的位置与页面中使用的位置相同,因此您必须在servlet中使用相同的
名称
数组才能将年龄与正确的人关联


jsp代码似乎是正确的

您需要将参数名与所讨论的用户关联起来。有很多方法可以做到这一点,通常是在输入元素名称中以某种方式嵌入ID或限定符,例如

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



等等

然后在参数上迭代,查找与所讨论的参数
startWith
相关的名称,例如
age
。您可以在下划线上拆分参数名称,或拉出索引符号等,以便知道该参数的值中包含了谁的年龄


这避免了依赖于参数排序,也使得使用JavaScript操作更加容易:每个元素都有一个唯一的非位置标识符。

定义“凌乱”。通过使用scriptlet,您已经变得“混乱”;相比之下,循环似乎是多余的。顺便说一句,适当的压痕对减少吸吮有很大帮助。
<input type="text" name="age_0">
<input type="text" name="age_John">
<input type="text" name="age['John']">