2012-09-25 46 views
1

我正在學習S2並在應用程序上工作,現在我想在我的操作類中使用ParameterNameAware,但在此之前我只想向自己澄清一些問題。請幫我...如何使用ParameterNameAware

  1. ParameterNameAware如何工作(有基本知識,但要說明)
  2. 多久acceptableParameterName叫
  3. 當我執行的應用程序,並試圖以打印acceptableParameterName參數(字符串)方法,它返回的不止是輸入參數。它們是什麼以及這種方法實際提供了什麼。
  4. 什麼是避免不可接受參數(除了ParameterNameAware之外)的最佳方法。

如果其中任何一個問題沒有意義,請忽略。

更多的解釋將非常感激。在此先感謝:-)

回答

1

那麼這裏有幾個輸入,使您的觀點更清晰。

有關此接口的整個想法是維護有效參數名稱的列表,並通過拒絕不在此列表中的任何請求參數。

如果您希望您的操作僅接受某些值,您只需在您的操作中實現ParameterNameAware接口,即可將消息傳遞到底層S2框架,而您只希望接受某些僅用於操作類的參數集。

Parameters Interceptor從A ctionContext.getParameters()獲取所有參數,並通過調用ValueStack.setValue(String, Object)將它們設置在值棧上。 ParameterNameAwareParametersInterceptor.協同工作在設置動作類中的參數時,如果接口已由動作類實現,Interceptor將檢查動作類中是否允許參數,並只設置允許的參數。

其他處理參數黑名單或白名單的方法是將acceptParamNamesexcludeParams的列表作爲參數傳遞給您的ParametersInterceptor