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

Spring 5中JSTL无法解析Model属性问题求助

解决Spring MVC中JSP无法解析Model属性的问题

我之前也碰到过一模一样的情况,页面能正常加载但EL表达式原封不动显示,咱们一步步来排查解决:

最核心的问题:JSP未开启EL表达式解析

你的JSP页面里没有明确开启EL支持,有些环境(尤其是老版本的Servlet容器)默认会忽略EL表达式。只需要在hometest.jsp的最顶部加上这行指令:

<%@ page isELIgnored="false" %>

修改后的完整JSP代码如下:

<%@ page isELIgnored="false" %>
<!doctype html>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring"%>
<c:out value="${users}"></c:out>

其他需要确认的排查点

  • 检查Servlet版本兼容性:如果你的web.xml是2.3或更早的版本,默认EL是禁用的。可以把web.xml的版本升级到2.4及以上(比如设置<web-app xmlns="http://java.sun.com/xml/ns/javaee" version="2.4">),这样就不需要在每个JSP里单独加isELIgnored指令了。
  • 验证Model属性是否真的传递成功:可以在Controller里加一行日志确认属性已正确添加:
    @GetMapping("/")
    public String userForm(Locale locale, Model model) {
        model.addAttribute("users", "test");
        System.out.println("已添加users属性:" + model.getAttribute("users")); // 新增日志
        return "hometest";
    }
    
    不过从你的情况看,页面显示的是${users}而非空白,大概率是EL没被解析,不是属性没传递。

为什么你的视图解析器配置没问题?

你注释掉InternalResourceViewResolver的@Bean后找不到页面,说明这个解析器确实在正常工作——它负责把返回的视图名hometest映射到/WEB-INF/jsp/hometest.jsp路径,所以问题不在视图解析器,而是JSP本身的EL解析开关没打开。

内容的提问来源于stack exchange,提问作者user3662609

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 10:06:04