使用 Spring 和 Thymeleaf 绑定单选按钮列表 [英] Bind a list of radio buttons with Spring and Thymeleaf
问题描述
我的问题是我需要获取在 HTML 文件中选择的单选按钮并在 PostMapping 中使用它.
my problem is that I need to get the radio buttons that are selected in HTML file and use it in the PostMapping.
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml"
xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Do Test Excercise</title>
<script language="javascript">
</script>
</head>
<body>
<h1>Do Test Exercise</h1>
<form method="POST">
<span align="left" th:each="question : ${exercise.getQuestions()}">
<p valign="top" th:text="${question.text}">Text</p>
<tr align="left" th:each="solution : ${question.getSolutions()}">
<input width="5%" type="radio" th:name="${question.question_ID}" th:text="${solution.text}"
th:value="${solution.text}"/><BR>
</tr>
</span>
<input type="submit" value="Submit">
</form>
</body>
</html>
但是我不知道如何获取单选按钮的值并将其保存在字符串数组中
However I don't know how to get that values for the radio buttons and save it in a array of String
@GetMapping("doTest/{post}/{exercise}")
public String doTest(Model model, @PathVariable String exercise) {
model.addAttribute("exercise", exercisesDAO.getExerciseByType(exercise, "Test"));
return "exercise/doTestExercise";
}
@PostMapping("doTest/{post}/{exercise}")
public String doTest(@RequestParam(value = "solution") String[] solution, @PathVariable String post, @PathVariable String exercise, RedirectAttributes redirectAttributes) {
exercisesDAO.solve(exercise, solution, "admin", "Test");
redirectAttributes.addAttribute("post", post);
redirectAttributes.addAttribute("exercise", exercise);
return "redirect:/showMark/{post}/{exercise}";
}
谢谢
推荐答案
您需要将输入的名称从 th:name="${question.question_ID}"
更改为 th:name="${'solution['+ question.question_ID + ']'}"
.之后,您需要更改您的控制器,以便它接收一个 HashMap,而不是一个字符串数组,您将在其中获取每个 id 所选择的解决方案.
You need to change the name of your inputs from th:name="${question.question_ID}"
, to th:name="${'solution['+ question.question_ID + ']'}"
. After that, you need to change your controller, so that instead of an array of Strings, it will receive a HashMap, where you will get for each id, the chosen solution.
表格
<form method="POST" th:action="@{doTest/${post.id}/${exercise.id}}">
<span align="left" th:each="question : ${exercise.getQuestions()}">
<p valign="top" th:text="${question.text}">Text</p>
<tr align="left" th:each="solution : ${question.getSolutions()}">
<input width="5%" type="radio" th:name="${'solution['+ question.question_ID + ']'}" th:text="${solution.text}" th:value="${solution.text}"/><BR>
</tr>
</span>
<input type="submit" value="Submit">
</form>
控制器
@PostMapping("doTest/{post}/{exercise}")
public String doTest(@RequestParam(value = "solution") HashMap<String, String> solutions, @PathVariable String post, @PathVariable String exercise, RedirectAttributes redirectAttributes) { ... }
这篇关于使用 Spring 和 Thymeleaf 绑定单选按钮列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!