【发布时间】:2011-03-23 04:39:01
【问题描述】:
我正在构建一个 Struts2 应用程序,其中数据在请求标头中发送到我的应用程序。我有一个自定义拦截器,它抓取这些数据并使用它从数据库中检索一些数据并将其存储在会话中。然后我在生成的 JSP 中使用这个会话数据。一个问题:在我刷新页面之前,会话变量为空。
这是我的堆栈:
<interceptor-stack name="myStack">
<interceptor-ref name="myInterceptor"/>
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
这是我在 myInterceptor 中的拦截方法:
ActionContext context = invocation.getInvocationContext();
HttpServletRequest request = (HttpServletRequest) context.get(StrutsStatics.HTTP_REQUEST);
HttpSession session = request.getSession(true);
MyObject obj = new MyObject();
String header = request.getHeader("HEADER_VALUE");
if(header != null) {
obj.loadByHeader(header);
session.setAttribute("value", obj);
}
return invocation.invoke();
这里是 JSP 代码:
<s:if test="#session.value == null">
...
</s:if>
就像我说的,当我使用此值刷新或转到另一个页面时,这将起作用。难道我做错了什么?或者直到下一次我才能获得价值?如果是后者,是否有其他方法可以在第一次通过时获取该数据?
【问题讨论】: