在spring中从html表单获取作为数组的复选框值

vyswwuz2  于 2021-07-26  发布在  Java
关注(0)|答案(5)|浏览(375)

我有一个显示列表中所有项目的窗体。每个元素旁边都有一个复选框:

<input type="checkbox" name="selected" value="${product.id}">

单击“继续”按钮后,我进入一个控制器,希望在其中选中所有复选框的列表。我试着这样做:

@GetMapping
    public String getOrderForm(Model model, @RequestParam(value = "selected") String[] selected){

但我得到的错误是,没有这样的对象。如何获取此复选框列表?

fjnneemd

fjnneemd1#

控制器将接受复选框作为逗号分隔的字符串。

@GetMapping
public String getOrderForm(Model model, @RequestParam("selected") String selected){
    String[] stringArray = selected.split(",");
    List<String> list = Arrays.asList(stringArray);

    ... <your code>

    return "somePage";
}
rdlzhqv9

rdlzhqv92#

钱德拉·康德所说的是对的,但还有一件事你需要知道,才能让这一切顺利进行。您必须保持每个复选框的名称相同,然后只有它工作。它将自动生成一个以逗号分隔的字符串。您可以通过只在控制器中打印它来测试它,也可以在url中看到它。

@GetMapping
 public String getOrderForm(@Param("selected") String selected){
  System.out.println(selected);//just to check whether we are getting comma separated value or not
  String[] selectedArray = selected.split(",");
  List<String> list = Arrays.asList(stringArray);
}
b5lpy0ml

b5lpy0ml3#

在控制器中以字符串数组形式接收选定的复选框值。必须为复选框组指定所有相同复选框的name属性值。然后您将在控制器中以数组的形式接收选定的复选框值。
对于同一组复选框,请为一组复选框的“名称”属性指定相同的值:

<input type="checkbox" name="selected" value="${product1.id}">
<input type="checkbox" name="selected" value="${product2.id}">
<input type="checkbox" name="selected" value="${product3.id}">

在控制器中:

@GetMapping
    public String getOrderForm(Model model, @RequestParam(value = "selected") String[] selected){
8cdiaqws

8cdiaqws4#

这对我有用

@GetMapping
 public String getOrderForm(Model model, @RequestParam("selected") String selected){
  System.out.println(selected);//just to check whether we are getting comma separated value or not
  String[] selectedArray = selected.split(",");
  List<String> list = Arrays.asList(stringArray);
}
mrwjdhj3

mrwjdhj35#

在html表单中,需要添加以下内容:

<input type="checkbox" name="selected" th:value="${product.id}">

我的控制器现在看起来像这样:

@GetMapping
    public String getOrderForm(Model model, @RequestParam(value = "selected", required = false)Integer[] selected){

如果未选中任何复选框,则“选中”将为空

相关问题