我在MVC控制器中的ModelMap中添加了一个Model对象(“ foo
”):
Spring MVC控制器:
Foo foo = new Foo("FooName");
model.addAttribute("foo", foo);
return "foo";
我可以在
foo.jsp
中调用对象的属性。我还为foo
对象设置了别名,以便genericFoo
可以访问该对象-genericFoo
希望该对象称为genericFoo
。foo.jsp:
<c:out value="${foo.name}"/> <!-- Displays "FooName" -->
<c:set var="genericFoo" value="${foo}"/>
<jsp:include page="genericFoo.jsp" />
但是,
genericFoo.jsp
不显示对象的属性。为什么不?
genericFoo.jsp:
<c:out value="${genericFoo.name}"/> <!-- No value displayed displayed -->
最佳答案
因为<jsp:include>
进行动态包含(它将请求分派到所包含的JSP)。 <c:set>
将对象存储在页面范围的属性内。根据定义,页面范围的属性仅在定义它们的页面中可见。
解决方案:
使用静态包含:<%@include file="..."/>
,而不是动态包含
将属性放入请求范围内的属性:<c:set var="genericFoo" value="${foo}" scope="request"/>
。