使用 Spring MVC 的 JSP EL 中的会话属性问题

发布于 2024-10-12 09:35:42 字数 588 浏览 7 评论 0原文

我试图使用 JSP EL 在 jsp 页面中显示会话属性“userSession”,但它返回 null(情况 1)。不过,请求属性在 EL 表达式中正确显示。

如果使用 java scriptlet,其行为如情况 2 和 3 所示:

  1. \\Returns null
  2. \\工作正常 - 返回会话属性
  3. \\抛出异常:找不到变量会话

情况 3 的异常可能与情况 1 的问题有关,例如由于某种原因无法识别会话变量并影响 EL 表达式。

我正在使用 Spring MVC 2.5 和 JSTL 1.1.2。

我可以发布任何其他需要澄清问题的内容。

I'm trying to show a session attribute "userSession" in a jsp page using JSP EL, but it returns null (case 1). Request attributes are shown properly in EL expressions though.

Using java scriptlet instead, behaves as shown in cases 2 and 3:

  1. <c:out value="${userSession}"/> \\Returns null
  2. <c:out value='<%=request.getSession().getAttribute("userSession")%>'/>
    \\Works fine - returns session attribute
  3. <c:out value='<%=session.getAttribute("userSession")%>'/>
    \\Throws exception: cannot find variable session

Exception of case 3 may be related to case 1 problem, something like not recognizing the session variable for some reason and that affecting the EL expression then.

I'm using Spring MVC 2.5 and JSTL 1.1.2.

I can post anything else needed to clarify the problem.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

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

评论(3

逆光下的微笑 2024-10-19 09:35:42

固定的。问题出在我的页面使用的 include.jsp 中发现的 <%@ page session="false" %> 指令,我将其从该全局位置中删除。

它阻止 jsp 页面访问会话范围变量。所以只有 <%=request.getSession().getAttribute("foo")%> 在这种情况下有效......

Fixed. Problem was with a <%@ page session="false" %> directive found in an include.jsp used by my page, which I removed from that global place.

It prevents a jsp page from access to session scope variables. So only <%=request.getSession().getAttribute("foo")%> works in that case...

血之狂魔 2024-10-19 09:35:42

什么是:

<c:out value="${sessionScope.userSession}"/>

<c:out value="${sessionScope['userSession']}"/>

给予?

What does:

<c:out value="${sessionScope.userSession}"/>

or

<c:out value="${sessionScope['userSession']}"/>

give?

影子是时光的心 2024-10-19 09:35:42

或只是 ${sessionScope} 列出 portlet 应用程序范围中的所有属性。

所以,你可以尝试用这个表达式来获取你的属性!

<c:out value="${sessionScope}"/> or just ${sessionScope} list all the attributes in portlet application scope.

so, You can try to get your attribut with this expression !

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文