2014-06-16 100 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