Spring mvc <form:input>标记,其中一些值从modelAttribute </form:input>中的调用控制器传递

时间:2013-06-28 09:29:58

标签: spring-mvc

我正在Spring MVC 3中创建CRUD应用程序。除了编辑页面之外,每件事情都很好。我希望我的编辑页面中填充了一些带有相关数据库生成值的标签,因此我可以查看,编辑是否需要并保存它们。我传递了modelAttribute中的值列表以与edit.jsp共享。我可以在edit.jsp上检索它们的值,但是我无法将这些值放在tag中,因为它没有value属性。请帮忙。

Sharing the code below----------------------------

    enter code here
<form:form id="form5" commandName="user" action="modify.htm">
<table>
    <tr>
        <th>Name</th>
        <th>Age</th>
    </tr>
    <c:forEach items="${userList}" var="user">
        <tr>
            <td> <form:input path="name" value="${user.name}"/></td>
            <td><form:input path="age" value="{user.age}"/></td>
        </tr>
    </c:forEach>
    <tr><td><button type="button" onclick="modify()">Save</button></td></tr>
</table>
</form:form>

1 个答案:

答案 0 :(得分:5)

form:input没有值属性(正如您猜测的那样)。必须仅在path属性中提及数据绑定路径。因此,根据我对您的问题的理解,解决方案如下:

您有用户类:

public class User{
    String name;
    String age;
    //Getter setters..
}

您需要一个命令/模型对象类来保存UserS列表,以便在视图中使用(如下所示)

public class Users {
    List<User> userList; 
    //Getter setter..
} 

您的控制器处理程序方法可能会将用户添加到模型

Users users = getUsers(); // Get them from somewhere(DB) and wrap in Users object
model.addAttribute("users", users);

在jsp中使用如下:

<form:form id="form5" modelAttribute="users" action="modify.htm">
    <table>
        <tr>
            <th>Name</th>
            <th>Age</th>
        </tr>
       <c:forEach items="${users.userList}" var="user" varStatus="i">
            <tr>
                <td><form:input path="userList[${i.index}].name" /></td>
                <td<form:input path="userList[${i.index}].age" /></td>
            </tr>
       </c:forEach>
       <tr><td><button type="button" onclick="modify()">Save</button></td></tr>
    </table>
</form>