2012-03-02 113 views
1

在我的應用程序中,我已經爲Default包中的動作(即動作的結果類型爲JSP或tile)配置了Session攔截器。是否有任何選項爲JSON包中的操作配置Interceptor。即帶有JSON結果的Action類。我們是否在Struts2中有JSON動作的攔截器

這裏是我的struts.xml

<struts> 
    <constant name="struts.devMode" value="false" /> 
    <package name="default" extends="struts-default"> 
     <result-types> 
      <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult" /> 
     </result-types> 
     <interceptors> 
      <interceptor name="sessionInterceptor" class="com.dar.session.SessionInterceptor" /> 
      <interceptor-stack name="myInterceptorStack"> 
       <interceptor-ref name="defaultStack"></interceptor-ref> 
       <interceptor-ref name="sessionInterceptor"/> 
      </interceptor-stack> 
     </interceptors> 
     <action name="createCampaign"> 
      <interceptor-ref name="myInterceptorStack"></interceptor-ref> 
      <result type="tiles">createCampaign</result> 
     </action> 
    </package> 
    <package name="example" namespace="/" extends="json-default"> 
     <result-types> 
      <result-type name="json" class="com.googlecode.jsonplugin.JSONResult"/> 
     </result-types> 
     <action name="peopleCountAction" class="com.dar.business.BusinessSearchAction" method="findPeopleCount"> 
      <result name="success" type="json"> 
       <param name="includeProperties">peopleCount</param> 
      </result> 
     </action> 
    </package> 
</struts> 
+0

我不確定你的包的攔截器是什麼意思,因爲包只是邏輯分隔和攔截器是根據請求觸發 – 2012-03-02 13:03:51

+0

@Umesh:在struts.xml中我們有標記。在。我們是否可以爲此動作攔截? – 2012-03-02 13:08:09

+0

你的意思是包'default'下定義的所有動作? – 2012-03-02 13:10:13

回答

3
<struts> 
<package name="default" namespace="/" extends="json-default"> 
    <interceptors> 
     <interceptor name="SecurityInterceptor" 
      class="com.i2c.cportal.framework.interceptors.SecurityInterceptor"/> 
     <interceptor name="cacheInterceptor" 
      class="com.i2c.cportal.framework.interceptors.CachingInterceptor"/> 
     <interceptor-stack name="jsonStack"> 
      <interceptor-ref name="defaultStack"></interceptor-ref> 
      <interceptor-ref name="SecurityInterceptor"></interceptor-ref> 
      <interceptor-ref name="cacheInterceptor"></interceptor-ref> 
     </interceptor-stack> 
    </interceptors> 

    <default-interceptor-ref name="jsonStack"></default-interceptor-ref> 
    <default-action-ref name="defaultAction"></default-action-ref> 
    <action method="getJsonOfOrders" name="getJsonOfOrders" class="sample.SampleAction"> 
     <result type="json" /> 
    </action> 
</package> 
</struts> 

它會工作,你只需要定義堆棧和使用,記得使用默認的堆疊其他SessionAware會話,如果你使用的是它將成爲空。