Java 使用<;表格>;在<;foreach>;几次

Java 使用<;表格>;在<;foreach>;几次,java,spring,spring-mvc,jstl,Java,Spring,Spring Mvc,Jstl,我对Spring非常陌生,我正在尝试使用SpringMVC+JSP+JSTL。我的目标是制作包含用户列表的JSP,并允许单独编辑每个用户。因此,我认为应该为列表中的每个用户使用单独的标记和单独的按钮,我的JSP如下所示: <c:forEach items="${userList}" var="currentUser" varStatus="index"> <form:form method="post" action = "edit" commandName="

我对Spring非常陌生,我正在尝试使用SpringMVC+JSP+JSTL。我的目标是制作包含用户列表的JSP,并允许单独编辑每个用户。因此,我认为应该为列表中的每个用户使用单独的
标记和单独的
按钮,我的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>

这样做的目的是通过按下“编辑”按钮,有机会分别编辑每个用户。当然,这个代码不起作用。这给了我一个例外:

java.lang.IllegalStateException:既不是BindingResult也不是plain bean名称“userList[javax”的目标对象可作为请求提供 属性


我在Spring和web编程方面也完全不在行。我会感谢您的帮助。

我不明白您为什么要使用
userList[${index}]
,因为每个用户都有不同的表单。无论如何,您的代码在这一行不正确
commandName=“userList[${index}]”

以下是我的建议:

<c:forEach items="${userList}" var="currentUser" varStatus="index">
    <form:form method="post" action = "edit" commandName="user">
    <tr>
        <td><form:input path = "login" value = "${currentUser.login}" /></td>
        <td><form:input path = "password" value = "${currentUser.password}" /></td>
        <td><form:input path = "smtpServer" value = "${currentUser.smtpServer}" /></td>
        <td><form:input path = "popServer" value = "${currentUser.popServer}" /></td>
            <form:hidden path="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>


根据您的用户类是用户。

< p>您使用${index }不是您所想的。要获取当前项的索引,必须将“.index”附加到您的ValStand变量……在您的情况下,它将是${index .index }。为了清楚起见,考虑命名您的ValStand除了索引……/P>以外的其他东西。
<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>

请记住,对每个用户使用不同的表单是没有意义的…但是假设您想同时编辑任何/所有用户

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

那是因为我是noob:)谢谢!你完全正确!所以不是所有的都有效!谢谢:)