2012-10-06 80 views
1

我一直試圖在我的項目中運行下面的代碼。整個項目工作正常,但攔截器部分沒有顯示任何結果。我是攔截器部分的新手,所以請告訴我我的代碼是否缺乏我也想知道,如果要在struts.xml文件中通過添加攔截器標籤來完成運行攔截器的唯一更改在Struts中運行攔截器

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應用程序在運行時運行,但攔截器部分不起作用。它不是一個緩存問題因爲我試圖清理服務器和目錄多次,但沒有效果。請請幫助。

+0

您需要配置其他攔截器(默認堆棧下),或者在定義自己的堆棧後使用''''''''''''''''''''' .org/2.1.6/docs/interceptor-configuration.html –

+0

我試過,但我仍然困惑,可否引導我在哪裏我應該添加代碼片段 – user1649415

+0

ü拿起了文檔中的代碼,但僅適用於descriton ,你還可以通過*攔截器部分指定你的意思嗎?它不是一個緩存問題*和你想做什麼? –

回答

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> 

導致動作配置之前添加攔截器。在攔截器中添加正確的日誌記錄,以便在調用默認堆棧之前知道攔截器被調用。