2013-11-27 45 views
1

爲了採取哪些行動接受你必須在參數的控制:Struts 2個的可接受參數的名稱

讓你的行動落實ParameterNameAware像:

public class sample implements ParameterNameAware(){ 

    public boolean acceptableParameterName(String parameterName) { 
     if (("amount".equals(parameterName) || 
      "sourceAccount".equals(parameterName) || 
      "destinationAccount".equals(parameterName)) 
      return true; 
     else 
      return false; 
    } 

} 

這種方法被調用的排斥性param屬性。

所以,你需要配置params攔截排除所有參數,所以acceptableParameters獲得通過params攔截器被稱爲機會。

<interceptor-ref name="params"> 
    <param name="excludeParams">\w+((\.\w+)|(\[\d+\])|(\(\d+\))|(\['\w+'\])|(\('\w+'\)))*</param> 
</interceptor-ref> 

我是否正確?這對我來說似乎有點奇怪(不包括全部參數,然後在每個操作中添加它們)。

+0

我也使用ParameterNameAware,但不必配置excludeParams –

+0

我正在使用Struts 2.3.15.3,如果不首先排除它,那麼不會調用acceptableParameter。可能你的版本太舊了。如果是這樣,我建議儘快升級它 –

回答

0

Struts2 params針對接受或拒絕參數的攔截行爲可通過ParameterNameAware操作進行擴展。如果這些攔截器被排除,則它們將被接受或忽略,所有參數均由此攔截器處理。擴展點檢查可接受的參數。如果它們被攔截器接受,則它們被傳遞,但是通過調用acceptableParameterName來執行額外的檢查,但是如果攔截器接受到參數,則它是無用的。另一方面,如果參數被攔截器排除,那麼調用這個方法會產生一個權力。共存這兩種方法看起來很奇怪,因爲它們被設計爲相互排斥。

相關問題