2017-02-20 93 views
0

我想发布一个字符串列表到我的控制器。 但它总是只取第一个选定的值。Thymeleaf弹簧启动后列表

我thymeleaf HTML表单:

<form action="/add" method="post"> 
    <div class="form-group"> 
     <label for="roleId">ID</label> <input type="text" class="form-control" id="roleId" name="id" required="required" /> 
    </div> 
    <div class="form-group"> 
     <label for="rolePrivileges">Privileges</label> 
     <select class="form-control" id="rolePrivileges" name="privileges" multiple="multiple" size="10" required="required"> 
      <option th:each="type : ${privilegesList}" th:value="${type}" th:text="${type}">Privilege</option> 
     </select> 
    </div> 
    <button type="submit" class="btn btn-default">Create</button> 
</form> 

我的控制器:

@RequestMapping(value = "/add", method = RequestMethod.POST) 
public String addSomething(Model model, @ModelAttribute("id") String id, 
     @ModelAttribute("privileges") List<String> privileges) { 
    // add something with a service 
    return "redirect:/roles"; 
} 
+1

用'@ RequestParam'代替'@ ModelAttribute'尝试使用 –

+0

感谢它! – silb78

+0

Thomas Pawlitzki打了我几分钟,你应该验证他的答案。 –

回答

3

我觉得你有与

@RequestParam("privileges") 

签注privilges它不是一个的ModelAttribute但您会收到它来自请求

编辑:两个SO线程以更好地了解@RequestParam@ModelAttribute之间的差异。