2013-12-09 59 views
0

在我struts.xml公約隨後調用行動爲這樣一個特殊的動作類:Struts 2 json插件和通配符問題?

的struts.xml:

<package name="cdot.oss.cmsat.gma.struts" extends="struts-default" namespace="/"> 
    <action name="*ConfigureTspThreshold" 
       class="cdot.oss.cmsat.gma.struts.ConfigureTspThresholdAction" method="{1}"> 
       <result name="display">pages/ConfigureTspThresholdInput.jsp</result> 
    </action> 
</package> 

我通過通配符get方法名和ConfigureTspThresholdAction是類名。

我正在使用struts2-json-plugin將數據轉換爲JSON。現在,我想使用struts2 json插件返回JSON數據。

所以我需要使用擴展json-default和結果類型json像這樣一些行動:

<action name="*ConfigureTspThreshold" class="cdot.oss.cmsat.gma.struts.ConfigureTspThresholdAction" method="{1}">    
    <result type="json"> 
     <param name="excludeProperties"> 
      tspNameIdMap 
     </param> 
    </result> 
</action> 

<action name="*ConfigureTspThreshold" class="cdot.oss.cmsat.gma.struts.ConfigureTspThresholdAction" 
      method="{1}"> 
    <result type="json"> 
     <param name="excludeProperties"> 
     thresholdParameters 
     </param> 
    </result> 
</action> 

所以排除不同的屬性有相同的結果類型json

如何在約定中適合這些JSON結果類型? 由於最後兩個動作會有衝突,因爲它們具有相同的結果類型json

+0

@Roman C:Plz幫助。 –

+0

將不同的結果放入您的動作並從方法返回不同的結果代碼。 –

+0

@AleksandrM:結果必須是JSON。我沒有得到你。你可以詳細說明或通過一些代碼解釋? –

回答

0

其中一個選項是在結果配置中使用動態參數。執行結果前,您始終可以修改操作中的結果。看看this的答案。

1

我會怎麼做,是在你的動作類創建一個屬性myexcludedProperties

,然後在動作方法,設置此myexcludedProperties

,然後改變你的動作映射到

<action name="*ConfigureTspThreshold" class="cdot.oss.cmsat.gma.struts.ConfigureTspThresholdAction" 
      method="{1}"> 
      <result type="json"> 
       <param name="excludeProperties"> 
        ${myexcludedProperties} 
       </param> 
      </result> 
</action> 

我相信${myexcludedProperties}是正確的語法。

如果您不想編碼屬性,您必須弄清楚如何區分請求(method="{1}"),以便您可以設置正確的參數。

希望是有道理的。