使用header作为Model属性时JSP出现异常结果的原因
问题原因与解决方案
问题原因
header是JSP的内置隐含对象,它代表当前HTTP请求的所有请求头信息集合。当EL表达式${header}被解析时,JSP引擎会优先匹配这个内置对象,完全忽略你在Spring MVC控制器的Model中添加的同名属性,所以最终显示的是请求头信息而非你设置的header1。
解决方案
有两种可行的解决方式:
重命名Model属性(推荐)
避免使用JSP内置对象的名称作为Model属性名,将控制器中的属性名修改为其他名称,比如headerContent:@RequestMapping("/ktSessions") public String ktSessionsPage(Model model) { model.addAttribute("options","option1"); model.addAttribute("headerContent","header1"); // 修改属性名 return "ktSessions"; }对应JSP页面同步修改表达式:
<div class="main"> <p>Header is <c:out value="${headerContent }"></c:out> </p> </div>指定作用域访问Model属性
如果必须保留header作为属性名,可以通过明确指定作用域来访问你设置的Model属性(Model属性默认存入request作用域):<div class="main"> <p>Header is <c:out value="${requestScope.header }"></c:out> </p> </div>
内容的提问来源于stack exchange,提问作者Rushikesh Khandekar
相关产品推荐
相关产品推荐

