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
相关产品推荐
相关产品推荐

