Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Struts2会话数据在刷新之前在JSP中不可用_Java_Jsp_Session_Struts2 - Fatal编程技术网

Java Struts2会话数据在刷新之前在JSP中不可用

Java Struts2会话数据在刷新之前在JSP中不可用,java,jsp,session,struts2,Java,Jsp,Session,Struts2,我正在构建一个Struts2应用程序,其中数据以请求头的形式发送到我的应用程序。我有一个定制的拦截器,它获取这些数据,并使用它从数据库中检索一些数据并将其存储在会话中。然后在生成的JSP中使用该会话数据。一个问题:在刷新页面之前,会话变量为null 这是我的堆栈: <interceptor-stack name="myStack"> <interceptor-ref name="myInterceptor"/> <interceptor-ref na

我正在构建一个Struts2应用程序,其中数据以请求头的形式发送到我的应用程序。我有一个定制的拦截器,它获取这些数据,并使用它从数据库中检索一些数据并将其存储在会话中。然后在生成的JSP中使用该会话数据。一个问题:在刷新页面之前,会话变量为null

这是我的堆栈:

<interceptor-stack name="myStack">
    <interceptor-ref name="myInterceptor"/>
    <interceptor-ref name="defaultStack"/>
</interceptor-stack>
下面是JSP代码:

<s:if test="#session.value == null">
    ...
</s:if>

...
正如我所说,当我刷新或使用此值转到另一个页面时,此选项起作用。我做错什么了吗?或者我可以等到下一次才能得到值吗?如果是后者,是否有其他方法可以在第一次通过时获取数据?

您应该能够一次性设置并使用它!我认为您提供的内容没有任何问题,我的猜测是您第一次呈现视图时没有经过拦截器

有两种可能发生这种情况:1、您有多个包。其中一个包定义了自定义拦截器堆栈,而另一个包没有。第一次不渲染视图,然后后续渲染会通过您的拦截器,2)如果您有多个操作将渲染视图,并且在操作级别应用拦截器,也有可能

将打印/日志消息抛出到拦截器中,并确保在您认为是的时候执行它

编辑:与defaultStack和myInterceptor的顺序相反,因为params interceptor不会在myInterceptor之前运行

您应该能够一次性设置并使用它!我认为您提供的内容没有任何问题,我的猜测是您第一次呈现视图时没有经过拦截器

有两种可能发生这种情况:1、您有多个包。其中一个包定义了自定义拦截器堆栈,而另一个包没有。第一次不渲染视图,然后后续渲染会通过您的拦截器,2)如果您有多个操作将渲染视图,并且在操作级别应用拦截器,也有可能

将打印/日志消息抛出到拦截器中,并确保在您认为是的时候执行它


编辑:与defaultStack和myInterceptor的顺序相反,因为params interceptor不会在myInterceptor之前运行

很抱歉,您尚未回答所提供约束中的问题。如果我正在刷新页面并使其工作,那么它必须遵循相同的路径。此外,我有日志记录。我有一个日志记录头已经被发送,并且我用如下内容记录结果:“session.getAttribute(“value”)在session中设置”。它很好地打印出来,告诉我它已正确设置。很抱歉,我没有阅读,答案已修改。很抱歉,您没有回答提供的约束中的问题。如果我正在刷新页面并使其工作,那么它必须遵循相同的路径。此外,我有日志记录。我有一个日志记录头已经被发送,并且我用如下内容记录结果:“session.getAttribute(“value”)在session中设置”。它很好地打印出来,告诉我它设置正确。很抱歉,我读得不如应该读的好,答案被修改了。
<s:if test="#session.value == null">
    ...
</s:if>