Spring Thymeleaf - 如何将对象ID从html页面传递给控制器​​?

时间:2018-03-22 02:08:00

标签: java html spring spring-boot thymeleaf

在我的应用程序中,用户会显示一个考试对象列表,然后选择一个进行编辑。 当他们点击编辑链接时,它会将他们带到一个HTML页面,其中URL包含该考试ID。

我想知道如何将考试的ID传递给控制器​​。 我收到此错误:"缺少URI模板变量' id'对于Long"

类型的方法参数

我还想知道如何使现有值显示在表单文本框中。

HTML allSubjects.html,用户选择要编辑的主题:(这一切都有效)

    <h4> exams:</h4>
<div th:each="exam : ${subject.exam}"> 
<h4 th:text="${exam.examTitle}"/>
<a th:href="@{/editExam.html(id=${exam.examId})}">Edit Exam</a>

编辑考试HTML:

<form action="#" th:action="@{/editExam.html{examId}}"  th:object="${exam}" method="put">


    <table>
        <tr>
        <td> Exam Title:</td>
         <td><input type="text" th:field="*{examTitle}" th:text="${exam.examTitle}"/></td>
    <!--    <td th:if="${#fields.hasErrors('examTitlee')}" th:errors="*{examTitle}">error message</td>  --> 
        </tr>  
        <tr>
            <td> Exam grade worth </td>
            <td><input th:field="*{examGradeWorth}" /></td>
        <!--    <td th:if="${#fields.hasErrors('examGradeWorth')}" th:errors="*{examGradeWorth}">error message</td> -->
            </tr>  
            <tr>
                <td>examGradeAchieved</td>
                <td><input th:field="*{examGradeAchieved}"/></td>
                </tr>
            <tr>
                <td><button type="submit">Submit post</button></td>
                </tr>
    </table>
    </div>
</form>  

我的控制器:

@RequestMapping(value = "/editExam.html{examId}", method = { RequestMethod.GET, RequestMethod.PUT })
public String editExam(@ModelAttribute("exam") @PathVariable(value = "id")Long examId, @RequestBody Exam exam,Model model, BindingResult result) {

         examRepository.findOne(examId);
            model.addAttribute("examTitle", exam.getExamTitle());
            model.addAttribute("examGradeWorth", exam.getExamGradeWorth());
            model.addAttribute("examGradeAchieved", exam.getExamGradeAchieved());


    exam.setExamTitle(exam.getExamTitle());
         exam.setExamGradeWorth(exam.getExamGradeWorth());
         exam.setExamGradeAchieved(exam.getExamGradeAchieved());

         examRepository.save(exam);

    return "editExam";
}

当我尝试运行以上所有代码时,只是为了查看表单是否显示我收到以下错误:缺少URI模板变量&#39; id&#39;对于String

类型的方法参数

0 个答案:

没有答案