Spring 引导 addFlashAttribute 未在 HTML 中显示消息
Spring boot addFlashAttribute not displaying message in HTML
我一直在此处和在线搜索如何以最佳方式使用 addFlashAttribute,但无论我做什么,它都不适合我。我有一个学生模型,我正在尝试更新它并闪现成功或失败的消息。数据库和所有查询都有效,我被重定向到 showStudentDetail 页面,只是没有显示消息。这是代码:
学生服务:
public String updateStudent(Student student) {
if(studentDAO.update(student))
return "update student was successful!";
return "error: failed to update student, please try again";
}
public Student getStudentInfo(String username) {
Student student = studentDAO.get(username);
return student;
}
学生控制器:
@PostMapping("/updateStudent")
public String updateStudent(@ModelAttribute("student") Student student, RedirectAttributes redirectAttrs) {
String res = studentService.updateStudent(student);
redirectAttrs.addAttribute("username", student.getUsername()).addFlashAttribute("message", res);
return "redirect:/students/{username}/details";
}
@GetMapping("/students/{username}/details")
public String showDetailPage(@PathVariable String username, Model model) {
Student student = studentService.getStudentInfo(username);
model.addAttribute("student", student);
return "student_detail";
}
student_detail(div 未显示)
<div>
<div th:if="${param.username}" class="alert alert-info" role="alert" th:text="${param.message}"></div>
</div>
控制器中模型的名称是 student,但在视图中您使用的是“param”名称。将“参数”更改为“学生”。
我终于通过更改为消息而不是 param.message 解决了这个问题。
我真的不知道为什么它现在可以工作了,但这就是我的问题的解决方案。
仅将 html 更改为:
<div th:if="${message}" class="alert alert-info" role="alert" th:text="${message}"></div>
我一直在此处和在线搜索如何以最佳方式使用 addFlashAttribute,但无论我做什么,它都不适合我。我有一个学生模型,我正在尝试更新它并闪现成功或失败的消息。数据库和所有查询都有效,我被重定向到 showStudentDetail 页面,只是没有显示消息。这是代码:
学生服务:
public String updateStudent(Student student) {
if(studentDAO.update(student))
return "update student was successful!";
return "error: failed to update student, please try again";
}
public Student getStudentInfo(String username) {
Student student = studentDAO.get(username);
return student;
}
学生控制器:
@PostMapping("/updateStudent")
public String updateStudent(@ModelAttribute("student") Student student, RedirectAttributes redirectAttrs) {
String res = studentService.updateStudent(student);
redirectAttrs.addAttribute("username", student.getUsername()).addFlashAttribute("message", res);
return "redirect:/students/{username}/details";
}
@GetMapping("/students/{username}/details")
public String showDetailPage(@PathVariable String username, Model model) {
Student student = studentService.getStudentInfo(username);
model.addAttribute("student", student);
return "student_detail";
}
student_detail(div 未显示)
<div>
<div th:if="${param.username}" class="alert alert-info" role="alert" th:text="${param.message}"></div>
</div>
控制器中模型的名称是 student,但在视图中您使用的是“param”名称。将“参数”更改为“学生”。
我终于通过更改为消息而不是 param.message 解决了这个问题。 我真的不知道为什么它现在可以工作了,但这就是我的问题的解决方案。
仅将 html 更改为:
<div th:if="${message}" class="alert alert-info" role="alert" th:text="${message}"></div>