为什么别名模型对象无法从 jsp include 访问?
我在 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 -->
I have a Model object ("foo
") added to the ModelMap in the MVC controller:
Spring MVC Controller:
Foo foo = new Foo("FooName");
model.addAttribute("foo", foo);
return "foo";
I can call properties of the object in foo.jsp
. I also set an alias for the foo
object so that genericFoo
can access the object - genericFoo
expects the object to be called genericFoo
.
foo.jsp:
<c:out value="${foo.name}"/> <!-- Displays "FooName" -->
<c:set var="genericFoo" value="${foo}"/>
<jsp:include page="genericFoo.jsp" />
However, genericFoo.jsp
does not display properties of the object.
Why not?
genericFoo.jsp:
<c:out value="${genericFoo.name}"/> <!-- No value displayed displayed -->
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
因为
执行动态包含(它将请求分派到包含的 JSP)。
将对象存储在页面范围的属性内。根据定义,页面范围的属性仅在定义它们的页面中可见。解决方案:
<%@include file="..."/>
而不是动态包含,
。Because
<jsp:include>
does a dynamic include (it sort of dispatches the request to the included JSP). And<c:set>
stores the object inside a page-scoped attribute. By definition, page-scoped attributes are only visible from the page which defined them.Solutions:
<%@include file="..."/>
rather than a dynamic one<c:set var="genericFoo" value="${foo}" scope="request"/>
.