我已經實現了一個自定義的ActionMapper,它從URI(URI本身,而不是請求參數)獲取區域設置。從ActionMapper.getMapping()中,如何設置當前操作的區域設置?如何設置自定義的區域設置Struts 2 ActionMapper
這裏有一些想法,我認爲:
- ActionContext.getCurrent()的setLocale()。不幸的是,當動作被調用時,似乎創建了新的ActionContext,並且區域設置被重置爲默認值。
- 設置參數request_locale,由i18n攔截器處理。不幸的是,i18n攔截器堅持不僅爲當前操作設置語言環境,而且還爲當前會話設置語言環境,這會引發異常,因爲會話沒有爲我的應用程序啓用。
- 通過實現setLocale(),設置一個參數並在動作本身中對其進行處理。直截了當,但這意味着沒有任何攔截器可以訪問區域設置。
- 設置一個參數並編寫一個攔截器(基本上和i18n攔截器完全相同,而不需要假設會話支持)。對於這樣一個簡單的問題似乎過度殺傷,更不用說重新發明輪子。
有沒有簡單的方法來實現這一目標?
如果您需要在您的攔截器的語言環境,我想你堅持重新發明用自定義的i18n攔截輪。令我驚訝的是ActionContext被重新創建 - 我想你的第一個想法也會起作用。 – Pat 2009-08-19 01:08:53