我在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"/>

10-02 06:04