在<foreach>中使用<form>几次

And*_*sky 4 java spring jstl spring-mvc

我是Spring的新手,我正在尝试使用Spring MVC + JSP + JSTL.我的目标是制作包含用户列表的JSP,并允许将每个用户与其他用户分开编辑.所以我认为我应该为列表中的每个用户使用单独的<form>标记和单独的<sumbit>按钮,我的JSP看起来像:

<c:forEach items="${userList}" var="currentUser" varStatus="index">
        <form:form method="post" action = "edit" commandName="userList[${index}]">
        <tr>
            <td><form:input path = "userList[${index}].login" value = "${currentUser.login}" /></td>
            <td><form:input path = "userList[${index}].password" value = "${currentUser.password}" /></td>
            <td><form:input path = "userList[${index}].smtpServer" value = "${currentUser.smtpServer}" /></td>
            <td><form:input path = "userList[${index}].popServer" value = "${currentUser.popServer}" /></td>
                <form:hidden path="userList[${index}].id" value=""/>
            <td>
                <a href="delete/${user.id}"><spring:message code="label.delete" /></a>
            </td>
        </tr>
           <input type="submit" value = "edit"> 
        </form:form>
    </c:forEach>
Run Code Online (Sandbox Code Playgroud)

我们的想法是有机会通过按"编辑"按钮分别编辑每个用户.当然这段代码不起作用.它给了我一个例外:

java.lang.IllegalStateException:BindingResult和bean名称'userList [javax''的普通目标对象都不能作为请求属性使用

我在Spring和网络编程方面都非常棒.我会感激任何帮助.

Boa*_*ode 5

您对$ {index}的使用并不是您的想法.要获取当前项的索引,必须将".index"附加到varStatus变量...在您的情况下,它将是$ {index.index}.为清楚起见,请考虑将varStatus命名为索引以外的其他内容...

<c:forEach items="${userList}" var="currentUser" varStatus="uStatus">
    <form:form method="post" action = "edit" commandName="userList">
    <tr>
        <td><form:input path = "userList[${uStatus.index}].login" value = "${currentUser.login}" /></td>
        <td><form:input path = "userList[${uStatus.index}].password" value = "${currentUser.password}" /></td>
        <td><form:input path = "userList[${uStatus.index}].smtpServer" value = "${currentUser.smtpServer}" /></td>
        <td><form:input path = "userList[${uStatus.index}].popServer" value = "${currentUser.popServer}" /></td>
            <form:hidden path="userList[${uStatus.index}].id" value=""/>
        <td>
            <a href="delete/${currentUser.id}"><spring:message code="label.delete" /></a>
        </td>
    </tr>
       <input type="submit" value = "edit"> 
    </form:form>
</c:forEach>
Run Code Online (Sandbox Code Playgroud)

请记住,对每个用户使用不同的表单没有意义...但是说你想一次编辑任何/所有用户....

<form:form method="post" action = "edit" commandName="userList">
    <c:forEach items="${userList}" var="currentUser" varStatus="uStatus">

    <tr>
        <td><form:input path = "userList[${uStatus.index}].login" value = "${currentUser.login}" /></td>
        <td><form:input path = "userList[${uStatus.index}].password" value = "${currentUser.password}" /></td>
        <td><form:input path = "userList[${uStatus.index}].smtpServer" value = "${currentUser.smtpServer}" /></td>
        <td><form:input path = "userList[${uStatus.index}].popServer" value = "${currentUser.popServer}" /></td>
            <form:hidden path="userList[${uStatus.index}].id" value=""/>
        <td>
            <a href="delete/${currentUser.id}"><spring:message code="label.delete" /></a>
        </td>
    </tr>

    </c:forEach>
    <input type="submit" value = "edit"> 
</form:form>
Run Code Online (Sandbox Code Playgroud)