簡體   English   中英

ActionMappingParametersInteceptor - 為什么我需要它

[英]ActionMappingParametersInteceptor - why do I need it

我試圖了解Struts2中ActionMappingParametersInteceptor類的使用。

查看API:

此攔截器為此請求的值堆棧上的操作映射設置所有參數。 它的操作與ParametersInterceptor完全相同,只有參數來自ActionMapping ,而不是ActionContext.getParameters()方法。

是否存在ActionMapping類可能包含一組不同於我從ActionContext.getParameters()獲取的請求參數的情況?

struts的defaultStack攔截器似乎首先調用了ParametersInterceptor ,然后調用了ActionMappingParametersInteceptor ,但我看不出有任何理由這樣做。

實際上,擴展params攔截器的actionMappingParams是使用兩個被覆蓋的方法從動作映射處理參數,並且應該被覆蓋: retrieveParametersaddParametersToContext 第一種方法真正使用ActionMapping參數。 第二個是將額外參數添加到操作上下文中。

在這個類中,這是一個無操作,因為參數是從同一位置獲取的。 在子類中,應重寫retrieveParameters()addParametersToContext()

“no-op”意味着永遠不會工作

向此攔截器添加行為的最佳方法是在您的操作中使用ParameterNameAware接口。 但是,如果您希望應用未在操作中實現的全局規則,則可以擴展此攔截器並覆蓋ParametersInterceptor.acceptableName(String)方法。

ParameterNameAware:

此接口由要聲明可接受參數的操作實現。 ParametersInterceptor一起使用。 例如,操作可能希望創建他們將接受的參數的白名單,或者他們將拒絕的參數黑名單,以防止客戶端設置其他意外(並且可能是危險的)參數。

這是唯一可以將額外參數添加到操作上下文的情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM