2

foo在 MVC 控制器的 ModelMap 中添加了一个模型对象(“”):

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 -->
4

1 回答 1

4

因为<jsp:include>没有动态包含(它有点将请求分派到包含的 JSP)。并将<c:set>对象存储在页面范围的属性中。根据定义,页面范围的属性仅在定义它们的页面中可见。

解决方案:

  1. 使用静态包含:<%@include file="..."/>而不是动态的
  2. 将属性放在请求范围的属性中:<c:set var="genericFoo" value="${foo}" scope="request"/>
于 2011-08-25T15:06:50.510 回答