今天对struts2增加一个判断session 是否过期的过滤器,结果导致所有action获取不到request值和用户请求的值. public String intercept(ActionInvocation actionInvocation) throws Exception {
System.out.println("判断用户是否过期");
Map<String, Object> session = actionInvocation.getInvocationContext()
.getSession();
LoginUser user = (LoginUser) session.get("loginUser");
String invoke = "";
if (user != null) {
System.out.println("正常." + user.getName());
invoke = actionInvocation.invoke();
} else {
System.out.println("不正常.");
Map request = (Map) actionInvocation
.getInvocationContext().getContext().get("request");
request.put("message", "登陆超时,请重新登陆。");
invoke = "reLogin";
}
return invoke;
}
public String fplQuery() throws Exception {
PageBean pageBean = new PageBean();
pageBean.setPageNum(request);//
public class Freig***yAction extends ActionSupport implements
ServletRequestAware, ModelDriven<Frei****Model> {在获取request对象的时候就抛null指针异常modeldriven除了前面一个action给set进去的值外,用户页面输入的值在modeldriven里面都为空.各位有没什么好的建议

解决方案 »

  1.   

    补充<interceptor name="userValidator"
    class="com.web.interceptor.UserValidatorInterceptor" />
             <interceptor-stack name="validateUser">
                 <interceptor-ref name="defaultStack"/>
             <interceptor-ref name="userValidator" />         </interceptor-stack> <package name="desktop" namespace="/" extends="">
    <action name="desktopAction" class="desktopAction">
    <result name="inArticle">/desktop/inArticle.jsp</result>
    <interceptor-ref name="userValidator"/> 
    </action>
    </package>
      

  2.   

    配置文件调用错了我调用的是userValidator,其实应该是validateUser,
    要把defaultStack系统的堆栈放在里面否则效果一样.