📜  Spring MVC-复选框示例(1)

📅  最后修改于: 2023-12-03 14:47:33.715000             🧑  作者: Mango

Spring MVC-复选框示例

介绍

在Spring MVC中,复选框是一种非常常用的组件,它可以让用户从多个选项中选择一个或多个。本示例将演示如何在Spring MVC中使用复选框组件。

环境
  • JDK 1.8或更高版本
  • Spring Framework 5.0或更高版本
  • Maven 3.0或更高版本
  • Eclipse或其他Java IDE
示例代码
实体类

首先,我们需要定义一个实体类来表示复选框中的选项。在本示例中,我们定义了一个ProgrammingLanguage类,此类包含两个属性:nameid

public class ProgrammingLanguage {
    private int id;
    private String name;
    
    // 构造方法与getter/setter略
}
表单页面

然后,我们需要编写一个表单页面来显示复选框。在本示例中,我们定义了一个form.jsp页面,此页面包含一个表单和一个复选框组件。

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Spring MVC Checkbox Example</title>
</head>
<body>
    <h2>Spring MVC Checkbox Example</h2>
    <form:form method="post" modelAttribute="formBean">
        <table>
            <tr>
                <td>Select languages:</td>
                <td>
                    <form:checkboxes items="${languages}" path="selectedLanguages"/>
                </td>
            </tr>
            <tr>
                <td colspan="2">
                    <input type="submit" value="Submit">
                </td>
            </tr>
        </table>
    </form:form>
</body>
</html>

在此页面中,我们使用了Spring的标签库form:来生成表单和复选框组件。items属性是复选框的选项,path属性是用于绑定复选框值的表达式。

控制器

最后,我们需要编写一个控制器来处理表单提交。在本示例中,我们定义了一个FormController控制器,此控制器包含两个方法:showForm()processForm()

@Controller
@RequestMapping("/form")
public class FormController {
    private static List<ProgrammingLanguage> languages = Arrays.asList(
        new ProgrammingLanguage(1, "Java"),
        new ProgrammingLanguage(2, "C#"),
        new ProgrammingLanguage(3, "Python"),
        new ProgrammingLanguage(4, "PHP")
    );
    
    @GetMapping
    public String showForm(Model model) {
        model.addAttribute("languages", languages);
        model.addAttribute("formBean", new FormBean());
        return "form";
    }
    
    @PostMapping
    public String processForm(@ModelAttribute("formBean") FormBean formBean) {
        List<ProgrammingLanguage> selectedLanguages = new ArrayList<ProgrammingLanguage>();
        for (int id : formBean.getSelectedLanguages()) {
            ProgrammingLanguage language = languages.stream()
                .filter(l -> l.getId() == id)
                .findFirst().get();
            selectedLanguages.add(language);
        }
        System.out.println("Selected languages: " + selectedLanguages);
        return "redirect:/form";
    }
}

在此控制器中,我们定义了一个静态列表来存储可选的编程语言。showForm()方法用于显示表单页面,并向模型中添加可选的编程语言和一个空的表单模型。processForm()方法用于处理表单提交,它从表单模型中取得用户选择的编程语言列表,并打印出选中的编程语言。

运行示例
  1. 克隆本示例代码到本地。
  2. 在终端或命令提示符中进入示例代码所在目录,运行命令mvn spring-boot:run
  3. 在浏览器中访问地址http://localhost:8080/form,即可看到表单页面。
  4. 选择其中一个或多个编程语言,点击提交按钮,即可在控制台中看到用户选择的编程语言。
总结

本示例介绍了如何在Spring MVC中使用复选框组件,并通过一个示例让开发者了解如何编写控制器从表单中取得复选框值。开发者可以根据自己的业务需求,修改本示例代码,以满足自己的需求。