2014-06-16 102 views
0

我有一个html页(含Thymeleaf):如何获得选中的复选框

<form action="#" th:action="@{/changeme}"> 
    <fieldset> 
    <table style="width: 500px"> 
     <tr th:each="esfield : ${esfields}"> 
     <td> 
      <div> 
      <div class="checkbox"> 
       <input type="checkbox" name="optionsMulti" 
       th:text="${esfield}" /> 
      </div> 
      </div> 
     </td> 
     </tr> 
     <tr> 
     <td></td> 
     <td></td> 
     </tr> 
     <tr> 
     <td> 
      <button type="submit" 
      class="btn btn-xs btn-primary margin10-right paddingNew" 
      name="save">Calculate!</button> 
     </td> 
     <td></td> 
     </tr> 
    </table> 
    </fieldset> 
</form> 

当我点击Calculate!它进入我的控制器

@RequestMapping(value = "/changeme", params = { "save" }) 
public String save(final ModelMap m) { 

    m.addAttribute("centers", /*params*/); 
    return "clustering"; 
} 

我想获得在我的控制器中关于checked boxes的信息?

我该怎么做? 预先感谢您

+0

@ruhungry你可能使用'@RequestParam字符串[] optionsMulti' – Arvind

+0

可能的[值日:在复选框字段属性]重复(http://stackoverflow.com/questions/17692941/values-for -thfield-attributes-in-checkbox) – ruhungry

回答

1

您有两种基本选择:

  • 无论您为每个复选框
  • 使用不同的名称或使用Spring标签<form:checkbox>而不是本地<checkbox>

如果你不张贴数据将不允许你确切地知道哪些盒子实际上被检查过(除了全部和全部情况外)

通过这种方法,您应该在您的控制器中使用一个包含List<Boolean>的注释对象@ModelAttribute,并且spring会自动用您的复选框的值填充它。

@RequestMapping(value = "/changeme", params = { "save" }) 
public String save(@ModelAttribute BoxesForm form, final ModelMap m) { 
    // do what you need with form.getCheckboxes() ... 
    m.addAttribute("centers", /*params*/); 
    return "clustering"; 
} 

public class BoxesForm { 
    List<Boolean> checkboxes; 
    // getter and setter omitted ... 
} 
+0

嗨,谢谢。我改变了我的'控制器',我改变了一点点的HTML视图:''。现在,在我的控制器中,我可以看到一个“真”的列表。我希望能够说,哪些元素已被检查。你能解释我该怎么做吗? – ruhungry

+0

正如我在答复中所说的,你不能。你必须使用''来要求spring给你所有复选框的列表,包括true或false –

+0

我在SO上找到了一个解决方案。我将帖子标记为重复。 – ruhungry