簡體   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