Spring MVC and Checkboxes

2020-07-03 06:41发布

I'm using Spring MVC 3.0 and can't quite see all the parts to this problem: my controller will produce a list of domain objects. Let's say a simple User object with firstName, lastName, age, and role properties. I want to output that list of users in a table (one column per property), each row also having a checkbox which are all selected by default. The person using the page can then potentially deselect some of them. When they hit the submit button, I'd like to be able to take the list of selected users and do something with them.

I know there is a form:checkboxes tag in Spring, but I can't quite see how to use it and how to get the results in the controller.

Any help or suggestions?

2条回答
▲ chillily
2楼-- · 2020-07-03 07:07

If you User object has an id field, you can submit ids of selected users like this (you don't even need Spring's form tag for this simple scenario):

<form ...>
    <c:foreach var = "user" items = "${users}">
        <input type = "checkbox" name = "userIds" value = "${user.id}" checked = "checked" /> <c:out value = "${user.firstName}" /> ...
    </c:foreach>
    ...
</form>

--

@RequestMapping (...)
public void submitUsers(@RequestParam(value = "userIds", required = false) long[] userIds)
{
    ...
}
查看更多
一夜七次
3楼-- · 2020-07-03 07:17

When a page contains a checkbox, and its containing form is submitted, browsers do the following.

  • if the checkbox is checked, it is submitted with its 'value' attribute as a the value
  • if the checkbos is not checked, the variable is not submitted at all.

In your case, i would change @RequestParam("abono") to @RequestParam(required=false, value="abono") and then check for your Boolean to be null. If it is null, the checkbox was not ticked by the user.

查看更多
登录 后发表回答