【问题标题】:Bind a list of radio buttons with Spring and Thymeleaf使用 Spring 和 Thymeleaf 绑定单选按钮列表
【发布时间】:2019-04-14 03:46:21
【问题描述】:

我的问题是我需要获取在 HTML 文件中选择的单选按钮并在 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>

但是我不知道如何获取单选按钮的值并将其保存在字符串数组中

@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}";
}

谢谢

【问题讨论】:

    标签: java spring thymeleaf


    【解决方案1】:

    您需要将输入的名称从 th:name="${question.question_ID}" 更改为 th:name="${'solution['+ question.question_ID + ']'}"。之后,您需要更改您的控制器,以便它接收一个 HashMap,而不是一个字符串数组,您将在其中获得每个 id 所选择的解决方案。

    表格

    <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) { ... }
    

    【讨论】:

      猜你喜欢
      • 2015-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-09
      相关资源
      最近更新 更多