1

我一直在尝试在我的项目中运行以下代码。整个项目工作正常,但拦截器部分没有显示任何结果。我是拦截器部分的新手,所以如果我的代码缺少某些东西,请告诉我。我也想知道如果要运行拦截器的唯一更改是通过添加拦截器标签在 struts.xml 文件中完成?

enter code here  
<?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>
<constant name="struts.devMode" value="true"/>
<package name="default" namespace="/" extends="struts-default">
   <interceptors>  
   <interceptor name="timer" class=".."/>
   <interceptor name="logger" class=".."/>
   </interceptors>
   <action name="HelloWorld">
      <result>/HelloWorld/HelloWorld.jsp</result>
      <interceptor-ref name="timer"/>
      <interceptor-ref name="logger"/>
    </action>
    <action name="SayHello" class="com.sapient.test.HelloAction">

        <result name="SUCCESS">/HelloWorld/DisplayHello.jsp</result>
        <result name="INPUT">/HelloWorld/HelloWorld.jsp</result>
           <interceptor-ref name="timer"/>
           <interceptor-ref name="logger"/>

    </action>
</package>  

请注意,当我添加拦截器代码时,Web 应用程序的其余部分工作正常。Web 应用程序的其余部分在运行时运行,但拦截器部分不起作用。这不是缓存问题,因为我尝试多次清理服务器和目录但没有效果。请帮忙。

4

1 回答 1

0

请在 struts.xml 中配置拦截器,如下所示,

 <interceptor name="loginInterceptor" class="......." />
        <interceptor-stack name="loginInterceptorStack">
          <interceptor-ref name="loginInterceptor" />
          <interceptor-ref name="defaultStack" />
    </interceptors>

然后将您的拦截器堆栈应用于操作,

  <action name="..." class=".....">
        <interceptor-ref name="loginInterceptorStack"></interceptor-ref>
        <result name="input">.....</result>
        <result name="success">...../result>
    </action>

在操作配置的结果之前添加拦截器。还要在你的拦截器中添加正确的日志记录,这样你就可以在调用默认堆栈之前知道你的拦截器被调用了。

于 2012-11-21T11:19:09.093 回答