我正在尝试使用动态生成的表单更新信息。显然我可以做以下事情,一切都很简单:
<%
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 :(得分: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操作更容易:每个元素都有一个唯一的非位置标识符。