Spring MVC:动态添加复选框,不提交

时间:2016-10-05 18:07:48

标签: java forms spring-mvc

我有一个表单,可以根据用户在表单不同部分的选择动态生成复选框。这些复选框出现在屏幕上并且表现正常,但是在提交表单时,它们永远不会包含在请求中。从本质上讲,它的行为就像复选框元素没有绑定到模型对象一样。

这是支持对象。复选框应该绑定的字段是'存储':

public class GameplanGrouping {
private int id;
private Dba dba;
private String name;
private Set<String> stores = new LinkedHashSet<String>();
//Getters and Setters
}

以下是表格的相关部分,一旦生成全部内容:

<form id="createCategory" action="/gameplan/newGrouping" method="post" enctype="multipart/form-data"/>
...
<td>
  <input type="checkbox" id="store_0" name="stores" value="13950" class="storeCheckBox"/>13950
</td>

这是控制器:

 @RequestMapping(value={"/newGrouping"}, method = RequestMethod.POST)
 public String submitAddGrouping(HttpServletRequest request, ModelMap model, RedirectAttributes redirectAttributes, @Valid @ModelAttribute("gameplanGrouping") GameplanGrouping grouping){
   gpDao.insertGameplanGrouping(grouping);
        redirectAttributes.addFlashAttribute("message",
                "Successfully added new grouping '" + grouping.getName() + "' for division " + grouping.getDba().getName() + ".");
          return "redirect:/groupings?division=" + grouping.getDba().getName();
      }

所有其他绑定(例如&#39; name&#39;和#d;&#39;)都可以正常工作,但从不填充商店集。

奇怪的是,如果我复制其中一个生成的复选框并将其手动插入HTML,它会绑定并正确报告值。例如,如果我添加:

<input type="checkbox" id="store_dummy" name="stores" value="DUMMY" class="storeCheckBox"/>
DUMMY</td>

在单元格填充生成结果之前的表格并选择它,然后&#34; DUMMY&#34;作为&#34;商店&#34;的价值之一出现我提交时在后备对象中。为什么它绑定在一个案例中,而不是在动态生成的元素的情况下?

更新

正如评论中所建议的,我将Set切换到List,因为Spring不会绑定到Set,但这也没有帮助。行为是一样的。

但是,我感兴趣地注意到,作为Spring Boot 1.3.6的一部分打包的Spring MVC版本显然可以绑定到Sets,如下所示:enter image description here

然而,如上所述,当我手动编码复选框元素时,我只能将其绑定。它在任何情况下都不会与JQuery生成的标记绑定。

0 个答案:

没有答案