Spring+Thymeleaf渲染数据崩溃,报EL1007E及405请求错误
解决Spring+Thymeleaf数据展示405及EL1007E问题
一、修复405请求错误
- 你的
/answers路径仅配置了POST请求处理逻辑,GET请求无对应方法支持,导致直接访问或页面跳转时返回405状态码。需要在Controller中补充GET方法:
@Controller public class AnswerController { // 处理GET请求,初始化页面模型 @GetMapping("/answers") public String showAnswerPage(Model model) { // 提前注入空对象,避免Thymeleaf渲染时报空指针 model.addAttribute("answers", new Answers()); return "你的模板文件名"; } // 处理POST提交,接收前端数据 @PostMapping("/answers") public String submitAnswers(@ModelAttribute("answers") Answers answers, Model model) { // 数据处理逻辑(如存储、校验等) model.addAttribute("answers", answers); // 将接收后的对象回传至模型 return "你的模板文件名"; } }
二、解决EL1007E空指针报错
- 日志报错核心原因是Thymeleaf渲染时
answers对象为null,无法读取answer1属性。两种可行解决方式:- 按上述Controller示例,在GET请求时提前往Model中放入空的
Answers对象 - 在Thymeleaf模板中添加空值判断或使用安全导航运算符:
- 按上述Controller示例,在GET请求时提前往Model中放入空的
<!-- 方式1:条件判断过滤空对象 --> <div th:if="${answers != null}"> <p>Answer 1: <span th:text="${answers.answer1}"></span></p> </div> <!-- 方式2:安全导航运算符(直接避免空指针) --> <p>Answer 1: <span th:text="${answers?.answer1}"></span></p>
三、关键排查点
- 确认Controller中POST方法处理完成后,是否将
answers对象重新存入Model,否则页面跳转后模型无数据可展示 - 检查Thymeleaf模板中变量名与Controller中
model.addAttribute的键名完全一致(比如都是"answers",注意大小写)
内容的提问来源于stack exchange,提问作者knighttru
相关产品推荐
相关产品推荐

