四、在struts2中自定义拦截器后,程序运行时validate方法为什么没起作用

出现的问题是:在struts2中自定义拦截器后,程序运行时validate方法没有执行,这是怎么回事呢?

 

与项目问题相关的文件如下:

1、struts.xml文件

四、在struts2中自定义拦截器后,程序运行时validate方法为什么没起作用_第1张图片
 

2、Action类中的部分代码是如下实现的,出现的问题是添加了自定义拦截器后,validate方法就不执行了,直接执行execute方法


四、在struts2中自定义拦截器后,程序运行时validate方法为什么没起作用_第2张图片
上述问题出现的原因是什么呢?问题怎么解决呢?

回答:问题出现的原因是自定义的拦截器配置在struts.xml配置文件中后,还要手动引入defaultStack拦截器栈。否则defaultStack拦截器栈中所有拦截器的功能都无法实现。

 

struts.xml的配置应当是:

<struts>	
    <package name="example" namespace="/" extends="struts-default">
    	<interceptors>
    		<interceptor name="userInterceptor" class="com.yanln.test.action.UserInterceptor"></interceptor>
    	</interceptors>
    	<default-interceptor-ref name="defaultStack"></default-interceptor-ref> 
    	<global-results>
    		<result name="login">login.jsp</result>
    	</global-results>
        <action name="login" class="com.yanln.test.action.LoginAction">
            <interceptor-ref name="userInterceptor"></interceptor-ref> 
            <result name="success" type="redirectAction">indexAction</result>
            <result name="input">index.jsp</result>
        </action>
         <action name="indexAction" class="com.yanln.test.action.IndexAction">  
            <result name="showSystem">success.jsp</result>
        </action>
    </package>
</struts>

 或者是:

<struts>	
    <package name="example" namespace="/" extends="struts-default">
    	<interceptors>
    		<interceptor name="userInterceptor" class="com.yanln.test.action.UserInterceptor"></interceptor>
    		<interceptor-stack name="mystack">
        		<interceptor-ref name="defaultStack"></interceptor-ref>
        		<interceptor-ref name="userInterceptor"></interceptor-ref>
        	</interceptor-stack>
    	</interceptors>
    	<default-interceptor-ref name="mystack"></default-interceptor-ref> 
    	<global-results>
    		<result name="login">login.jsp</result>
    	</global-results>
        <action name="login" class="com.yanln.test.action.LoginAction">        	
            <result name="success" type="redirectAction">indexAction</result>
            <result name="input">index.jsp</result>
        </action>
         <action name="indexAction" class="com.yanln.test.action.IndexAction"> 
            <result name="showSystem">success.jsp</result>
        </action>
    </package>
</struts>

 

 

 

 

 

你可能感兴趣的:(struts2,自定义拦截器,defaultStack,struts.xml配置文件)