繁体   English   中英

首次访问Struts2 / Spring应用程序时,JSP中的会话变量为空

[英]session variable empty in the JSP on first access in a Struts2/Spring application

我在用户首次访问JSP中检索会话数据时遇到问题。

我在Struts动作中有一个会话范围的bean“上下文”,其中填充了一些“配置文件”。 在Spring Security中,URL被配置为允许匿名用户使用。

首次访问该页面时,该会话已在我的操作中正确初始化,但是当我在struts标记中使用该会话时,该会话被视为空。

当我在JSP中使用Java代码时,可以看到该会话是正确的:

<% System.out.println(((my.bean.SessionBean)session.getAttribute("context")).getProfiles()); %> => OK !!

session: <s:property value="%{#session}"/> => KO (empty)

session: ${session} => KO (empty)

结果是Struts标记无法在我的jsp中检索“配置文件”列表。

当我刷新页面时,它运行良好。 仅在首次访问时初始化会话时,它才会失败。 我已经使用Struts的调试模式进行了检查,会话变量第一次为空({})。

在首次访问时重定向到其他Struts操作可以解决该问题。 但是这种解决方案对我来说并不理想。

有谁知道这个问题吗? 为什么Struts会空会议?

谢谢

曾经有过类似的问题,而罪魁祸首就是我们所有JSP中的page指令:

<%@ page session="false"%>

当session属性为“ false”时,您将无法从JSP页面或会话范围内的任何bean访问会话对象。

我不了解OGNL,但是与您的Java代码行等效的JSP EL表达式不是${session} 它的

${sessionScope.context.profiles}

${session}查找名为“ session”的页面/请求/会话/应用程序属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM