如何从带复选框的模块列表中获取选中模块的编码并提交?
实现带复选框的模块列表提交:获取选中模块编码
需求:通过带复选框的模块列表,获取选中模块的编码并完成提交操作。
修正后的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
相关产品推荐
相关产品推荐

