Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsp 收集并将多个动态HTML输入的提交值保存回servlet_Jsp_Servlets_Jstl - Fatal编程技术网

Jsp 收集并将多个动态HTML输入的提交值保存回servlet

Jsp 收集并将多个动态HTML输入的提交值保存回servlet,jsp,servlets,jstl,Jsp,Servlets,Jstl,通过在列表中循环并在HTML输入标记中输出bean属性,我能够使用JSTL以JSP形式显示bean的ArrayList <c:forEach items="${listOfBeans}" var="bean"> <tr> <td><input type="text" id="foo" value="${bean.foo}"/></td> <td><input type="text" id="ba

通过在列表中循环并在HTML输入标记中输出bean属性,我能够使用JSTL以JSP形式显示bean的
ArrayList

<c:forEach items="${listOfBeans}" var="bean">
  <tr>
    <td><input type="text" id="foo" value="${bean.foo}"/></td>  
    <td><input type="text" id="bar" value="${bean.bar}"/></td>                     
  </tr>
</c:forEach>


如何对JSP进行编码,以便在页面提交时,更新的值位于
ArrayList
的相应项中?

给定此简化模型:

public class Item {
    private Long id;
    private String foo;
    private String bar;
    // ...
}
如果
${items}
列表
,您可以这样做:

在servlet中,您可以通过
request.getParameterValues()
从所有行收集
的所有值。只需在其上循环,然后通过
id
获取各个输入

for (String id : request.getParameterValues("id")) {
    String foo = request.getParameter("foo_" + id);
    String bar = request.getParameter("bar_" + id);
    // ...
}
您也可以在不使用
id
的情况下完成这一切,并以数组的形式按名称获取所有输入,如so
name=“foo”
request.getParameterValues(“foo”)
,但请求参数的顺序不受您的控制。HTML表单将按顺序发送,但最终用户可以轻松地操纵顺序

这里不需要JavaScript混乱

另见:
<input type="hidden" name="id" value="${item.id}" />
<input name="foo_${item.id}" ... />
for (String id : request.getParameterValues("id")) {
    String foo = request.getParameter("foo_" + id);
    String bar = request.getParameter("bar_" + id);
    // ...
}