Reputation: 781
Unable to bind checkboxes to @ModelAttribute.
HTML:
<form method="post">
<p><input type="checkbox" name="list" value="v1" /></p>
<p><input type="checkbox" name="list" value="v2" /></p>
<p><input type="checkbox" name="list" value="v3" /></p>
<p><input type="checkbox" name="list" value="v4" /></p>
<p><input type="submit" value="Send" /></p>
</form>
Java:
@RequestMapping(value = "/", method = RequestMethod.POST)
public String index(@ModelAttribute("list")List<String> list, ModelMap model)
{
LoggerFactory.getLogger(this.getClass()).debug("list: " + list.size() + " " + list);
...
}
Checked v2 and v3. In "index" first value only:
list: 1 [v2]
If I create form with spring tag:
<form:form modelAttribute="testForm">
<p><form:checkbox path="list" value="v1" /></p>
<p><form:checkbox path="list" value="v2" /></p>
<p><form:checkbox path="list" value="v3" /></p>
<p><form:checkbox path="list" value="v4" /></p>
<p><input type="submit" value="Отправить" /></p>
</form:form>
TestForm.java:
public class TestForm
{
private String[] list;
public String[] getList()
{
return list;
}
public void setList(String[] list)
{
this.list = list;
}
}
Everything is ok!
How to bind checkbox to @ModelAttribute without spring tag?
Upvotes: 2
Views: 4366
Reputation: 1
Change below sources..
TestForm.java:
public class TestForm
{
private List<String> list;
public List<String> getList()
{
return list;
}
public void setList(List<String> list)
{
this.list = list;
}
public void setList(String list)
{
this.list.add(list);
}
}
Java:
@RequestMapping(value = "/", method = RequestMethod.POST)
public String index(@ModelAttribute TestForm list)
{
...
}
Upvotes: 0
Reputation: 4928
Check : public String index(@RequestParam("list") List<String> list, ModelMap model)
Upvotes: 2