在struts2中使用了权限拦截器和防止重复提交的拦截器,是通过定义拦截器栈的方式组合使用的。但是在程序运行过程中,每个action都返回
No result defined for action com.pde.web.action.SysUserAction and result invalid.token
这样的错误。
配置文件如下:
- XML code
<package name="struts2" extends="struts-default"> <interceptors> <!-- 定义一个包含权限控制的拦截器栈 --> <interceptor name="authority" class="com.pde.web.common.AuthorityInterceptor" /> <!-- 定义一个包含权限控制的拦截器栈 --> <interceptor-stack name="mydefault"> <interceptor-ref name="authority" /> <interceptor-ref name="defaultStack" /> </interceptor-stack> <!-- 定义一个包含权限控制和tokenSession的拦截器栈 --> <interceptor-stack name="mysession"> <interceptor-ref name="authority" /> <interceptor-ref name="tokenSession"/> </interceptor-stack> </interceptors> <!-- 定义默认拦截器 --> <default-interceptor-ref name="mydefault" /> <!-- 定义全局处理结果 --> <global-results> <result name="loginout">/page/loginout.jsp</result> </global-results> <action name="usermenu" class="UseMenuAction"> <result name="sucess">/page/common/left.jsp</result> </action> <action name="sysuser" class="SysUserAction"> <interceptor-ref name="mysession"> <param name="includeMethods">save</param> </interceptor-ref> <interceptor-ref name="mydefault"/> <result name="sucess">/page/SysUserList.jsp</result> <result name="edit">/page/SysUserEdit.jsp</result> <result name="input">/page/SysUserEdit.jsp</result> <result name="changpwd">/page/ChangePwd.jsp</result> </action> </package>
拦截器的代码
- Java code
public class AuthorityInterceptor extends MethodFilterInterceptor{ private static final long serialVersionUID = 1358600090729208361L; public String doIntercept(ActionInvocation actionInvocation) throws Exception{ ActionContext ctx=actionInvocation.getInvocationContext(); Map session=ctx.getSession(); SysUser user=(SysUser)session.get("SysUser"); if(user!=null){ return actionInvocation.invoke(); } ctx.put("tip","您还没有登录,请登陆系统"); return "loginout"; }}
authority拦截器是用来判断是否已经有用户登录了。
定义两个拦截器的目的是:mydefault拦截器栈的目的是要求每个访问的页面都需要登录,没有登录用户是无法访问页面的。
mysession拦截器栈的目的是保存数据时也必须用户是登录的,而且使用了防止重复提交的tokenSession拦截器。
但现在的问题是,随便访问一个action,都返回上面所说的错误。但是实在想不明白是什么原因。
请各位赐教!!!!!!!!!!!!!!!
------解决方案--------------------------------------------------------
No result defined for action com.pde.web.action.SysUserAction and result invalid.token
你要定义一个invalid.token result,例如
- XML code
<result name="invalid.token">/page/invalidToken.jsp</result>