首页 > 解决方案 > 从 JSP 将输入的动态列表映射到 Spring MVC 中的模型属性

问题描述

类似于这里的这个问题:List<Foo> as form backing object using Spring 3 MVC,正确的语法?

@RequestMapping(value = "/FOO", method = RequestMethod.POST)
public String getSendEmail(List<Foo> foos, Model model) {
    // ...
}

<form:form id="frmFoo" modelAttribute="foos">
   <c:forEach items="${foos}" var="foo">
     <form:input path="${foo.name}" type="text"/>

发布表单时,我需要能够将列表作为模型属性。包括上述示例在内的所有示例都假定列表中存在现有条目。但是,如果一个人正在填写新表格,情况就不会如此。

所以我的问题是,当您登陆页面时不存在列表条目时,如何动态发布模型属性列表。如何动态创建将映射到我的模型属性的 null 或空列表的输入。

标签: javaspringspring-mvc

解决方案


我想到了!假设您有一个模型(为简洁起见,省略了 getter/setter)

class SomeModel {
    List<SomeModelChildClass> children;
}

class SomeModelChildClass {
    String someString;
}

在您的 JSP 中,您可以像这样映射到孩子(即使它是空白的)...

这将映射 SomeModelChildClass 与 someString = "I Did it!" 当您发布到控制器时。这当然假设您在 SomeModel 的控制器中设置了表单和模型属性。然后你可以通过输入发布,它会用列表填充你的模型!


推荐阅读