为什么别名模型对象无法从 jsp include 访问?

发布于 2024-12-01 12:56:40 字数 778 浏览 0 评论 0原文

我在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

幸福还没到 2024-12-08 12:56:40

因为 执行动态包含(它将请求分派到包含的 JSP)。 将对象存储在页面范围的属性内。根据定义,页面范围的属性仅在定义它们的页面中可见。

解决方案:

  1. 使用静态包含:<%@include file="..."/> 而不是动态包含,
  2. 将属性放入请求作用域属性中:

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:

  1. Use a static include: <%@include file="..."/> rather than a dynamic one
  2. put the attribute in a request scoped attribute: <c:set var="genericFoo" value="${foo}" scope="request"/>.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文