You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从带复选框的模块列表中获取选中模块的编码并提交?

实现带复选框的模块列表提交:获取选中模块编码

需求:通过带复选框的模块列表,获取选中模块的编码并完成提交操作。

修正后的Spring MVC控制器实现

原代码中PostMapping方法缺少选中模块参数的接收逻辑,以下是补全后的完整实现:

@GetMapping("/add/{etudiant}/{section}")
public String afficherPageInscription(@PathVariable("etudiant") Integer etudiantId,
                                      @PathVariable("section") String section, Model model) {
    model.addAttribute("etudiantId", etudiantId);
    model.addAttribute("moduleDto", new Module());

    List<Module> modules = moduleService.getModulesIns();
    model.addAttribute("modules", modules);

    return "inscription/addInscription";
}

@PostMapping("/add/{etudiant}/{section}")
public String soumettreFormulaireInscription(
        @PathVariable("etudiant") Integer etudiantId,
        @PathVariable("section") String section,
        @RequestParam(value = "modulesSelectionnes", required = false) List<String> modulesSelectionnes,
        Model model) {

    if (modulesSelectionnes != null && !modulesSelectionnes.isEmpty()) {
        // 遍历选中的模块编码,执行入库操作
        for (String moduleCode : modulesSelectionnes) {
            moduleService.addInscription(moduleCode, etudiantId);
        }

        return "redirect:/module/liste"; // 处理完成后重定向到模块列表页
    } else {
        // 未选中任何模块时的错误处理
        model.addAttribute("erreur", "请至少选择一个模块。");
        return "inscription/addInscription"; // 返回表单页并显示错误提示
    }
}

关键修正点

  • 添加@RequestParam(value = "modulesSelectionnes", required = false)注解,用于接收前端复选框提交的选中模块编码列表
  • 调整错误处理的返回逻辑,重定向无法携带Model属性,改为直接返回表单页面以显示错误提示

前端页面示例(Thymeleaf)

对应控制器的addInscription.html页面,需要渲染模块复选框列表:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>模块选择</title>
</head>
<body>
    <h1>选择要注册的模块</h1>
    <form th:action="@{/add/{etudiant}/{section}(etudiant=${etudiantId}, section=${section})}" method="post">
        <div th:if="${erreur}" style="color: red;">[[${erreur}]]</div>
        <div th:each="module : ${modules}">
            <input type="checkbox" th:value="${module.code}" th:name="modulesSelectionnes"/>
            <label th:text="${module.nom}">模块名称</label>
        </div>
        <button type="submit">提交</button>
    </form>
</body>
</html>

前端说明

  • 每个复选框的name属性设置为modulesSelectionnes,与控制器的@RequestParam参数名一致
  • 使用th:value绑定模块的编码,提交时会将选中的编码作为列表传递给后端
  • 错误提示通过th:if判断是否存在erreur属性,存在则显示

内容的提问来源于stack exchange,提问作者tom schneider

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 23:55:30