java - 如何将对象列表发送到 View 并返回到 Controller 中的 Post 方法

标签 java spring-mvc post

假设我有 Person 类,我制作了一个 Person 实例列表并将这个列表添加到 Model

List<Person> persons = new ArrayList<Person>();
model.addAttribute("persons",persons);
return "savePersons";

View 页面我有一个表单:

<form:form method="post" action="savePerson" modelAttribute="persons">
    <c:forEach var="person" items="${persons}">
        <form:input path="person.FName" name="FName" id="FName" value="" />
        <form:input path="person.LName" name="LName" id="LName" value="" />
    </c:forEach>

    <button type="submit"></button>
</form:form>

当我点击提交按钮时,我想将 Person List 绑定(bind)到 Controller 上的 POST 方法..

@RequestMapping(value = { "savePerson" }, method = RequestMethod.POST)
public String savePerson(Model model, HttpServletRequest request,
        HttpSession session,@ModelAttribute("persons")List<Person> persons) {
    System.out.println(persons.length);
    return "success";
}

persons 列表未在 POST 方法中绑定(bind)/获取。

是否可以以这种方式绑定(bind)列表对象,或者是否有替代方法?

最佳答案

我认为此链接将帮助您设置您正在尝试做的事情:

http://viralpatel.net/blogs/spring-mvc-multi-row-submit-java-list/

在您的表单中,您需要将其修改为:

<form:form method="post" action="savePerson" modelAttribute="persons">
    <c:forEach var="person" items="${persons}" varStatus="status">
        <form:input path="person[${status.index}].FName" name="FName" id="FName" value="" />
        <form:input path="person[${status.index}].LName" name="LName" id="LName" value="" />
    </c:forEach>

这个 SO 问题有一个很好的例子,也可以帮助你:List<Foo> as form backing object using spring 3 mvc, correct syntax?

关于java - 如何将对象列表发送到 View 并返回到 Controller 中的 Post 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15480397/

相关文章:

java - 修改 Spring @RolesAllowed 的行为

PHP/Mysqli 插入 : Cannot pass parameter 2 by reference

post - 如何将参数从命令行传递到 PHP 脚本中的 $_POST?

java - Spring Boot编码过滤器

java - 如何在 Collections.forEach() 中打印计数

java - 无法将模型对象添加到 "/"中的 jsp View ,但相同的方法正在调用/index

post - 如何使用 Jersey 获取原始 POST?

java - 柱体改造2包括大括号

Java 8 Stream,根据几个条件获取字符串长度

Java - 如何通过HTTP请求而不是文件读取xls格式数据