拦截器没有在Struts中被调用

Amb*_*ber 2 java struts2 interceptor interceptorstack struts2-interceptors

我的拦截器(验证)没有在动作之前或之后被调用.任何想法如何让它工作?

注意:每次调用默认拦截器时.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
  <package name="default" namespace="/" extends="struts-default,json-default">
    <result-types>
      <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult" />
      <result-type name="json" class="org.apache.struts2.json.JSONResult" />
    </result-types>

    <interceptors>
       <interceptor name="validation" class="ValidatorBaseAction"/>
      <interceptor-stack name="default">
        <interceptor-ref name="logger"/>
      </interceptor-stack>
      <interceptor-stack name="validationStack">
         <interceptor-ref name="validation"/>
         <interceptor-ref name="default"/>
      </interceptor-stack>
    </interceptors>

    <default-interceptor-ref name="default" />

    <action
        name="viewRequest"
        class="ViewAction"
        method="execute">
      <interceptor-ref name="validationStack" /> 
      <result name="input" type="redirectAction">explore</result>
      <result name="success" type="redirect">/showRequest.do?${explorerParameters}</result>
    </action>
  </package>
</struts>
Run Code Online (Sandbox Code Playgroud)

And*_*ios 6

主要问题:

边问题:

  • ValidatorBaseAction如果是Interceptor,请不要打电话给它ValidatorBaseInterceptor.并确保内部没有任何行动 ;
  • 不要使用一个Interceptor的Interceptor Stack ,我很确定在99%的情况下它都没用.如果您不确定,只需使用defaultStack,将拦截器添加到它.

抛光: