2014-01-22 98 views
2

我需要在Struts2攔截器(不是操作類)中設置ServletRequest屬性。 ActionContext是否公開Map<String, Object>來控制請求屬性,就像會話屬性一樣?從ActionContext獲取/設置ServletRequest屬性

我看到ActionContext實現了一個map ... ActionContext本身是一個請求屬性的包裝?

回答

1

對於代碼不是一個動作裏面類(RequestAware應該用於動作類),Struts2可以將Servlet請求屬性作爲Map公開。他們可以訪問:

Map request = (Map) ActionContext.getContext().get("request"); 

請參閱Strus2 documentation瞭解更多詳情。

1

ActionContext包含保存請求對象的請求鍵。爲了回答你的問題:沒有ActionContext不是請求的包裝,但是Struts2中的請求是servlet請求的包裝。

你可以從行動方面的request

HttpServletRequest request = ServletActionContext.getRequest(); 

這樣在攔截器有用的,但在行動中更好地執行ServletRequestAware

protected HttpServletRequest request; 

public void setServletRequest(HttpServletRequest request) { 
    this.request = request; 
} 
+0

我正在尋找請求**屬性**,而不是**參數** –

+0

是的,查看已更新。 –

+0

我將在下面回答:它顯示如何只獲取請求屬性映射(而不是整個servlet請求對象)。 –