2

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?

1
  • Also, I try <form method="post"> <p><input type="checkbox" name="list" value="v1" /><input type="hidden" name="_list" value="on" /></p> <p><input type="checkbox" name="list" value="v2" /><input type="hidden" name="_list" value="on" /></p> <p><input type="checkbox" name="list" value="v3" /><input type="hidden" name="_list" value="on" /></p> <p><input type="checkbox" name="list" value="v4" /><input type="hidden" name="_list" value="on" /></p> <p><input type="submit" value="Send" /></p> </form> Commented Jan 27, 2012 at 9:53

2 Answers 2

2

Check : public String index(@RequestParam("list") List<String> list, ModelMap model)

Sign up to request clarification or add additional context in comments.

Comments

0

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)
{
    ...
}

2 Comments

Please provide an explanation why this resolves the issue.
If you declare public void setList(Stirng list) this.list.add(list); in TestForm @ModelAttribute can get checkbox values at the list one by one.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.