You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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属性。两种可行解决方式:
    1. 按上述Controller示例,在GET请求时提前往Model中放入空的Answers对象
    2. 在Thymeleaf模板中添加空值判断或使用安全导航运算符:
<!-- 方式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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 02:51:59