2016-06-11 74 views
1

我是Struts 2的新手,我正在將Struts 1代碼遷移到Struts 2,在那裏我有類似的情況,Action Servlet已擴展,並且在擴展類「process」方法中,locale已按請求設置,如圖所示下面,Struts2中Requestprocessor.processLocale方法的等效代碼是什麼?

public class TestServlet extends ActionServlet { 

    protected void process(HttpServletRequest request, HttpServletResponse response) 
        throws IOException, ServletException { 
      Locale locale = Locale.ENGLISH; 
     locale = Locale.FRENCH; 
     request.setAttribute("_locales", locale); 

     super.process(request, response); 

    } 

}

我怎麼能遷移這種變化在支柱2,這是什麼在Struts 2的等價的工作方式?

回答

1

在Struts2中,您不再需要動作服務器或請求處理器,所有事情都是通過i18n攔截器完成的。

希望你會在this找到答案。

Struts2的國際攔截國際化可以用來 動態更改當前用戶區域設置用戶特定語言環境 爲用戶的會話。

「或者,可替換地,只對當前請求(因爲XWork的2.1.3)」通過使一個HTTP請求,包含「區域設置的值提供一個請求參數 request_locale

en_US「,它爲英語,美國創建 語言環境。

該語言環境下 「WW_TRANS_I18N_LOCALE」屬性保存在默認情況下,會話和期間 用戶會話用作電流區域設置。每次請求時,當前語言環境也會被此攔截器推送到ActionContext地圖中。這允許支持本地化的框架組件使用 ActionContext的區域設置。


此外,如果你想了解如何獲得當前的語言環境,你應該看過我的答案Get user locale detected by i18n interceptor in action class

+0

我是否需要在struts.xml文件中爲每個動作配置i18n攔截器,或者是否爲所有動作自動啓用?以及它將如何只設置語言環境「en」和「fr」進入會話? – CMG

+0

你有另外一個問題嗎?您可以將其作爲新問題發佈,評論部分用於澄清當前的問題或答案。溫你有足夠的聲譽,你可以發表評論任何問題或答案。如果它幫助你解決你的問題或者通過閱讀來學習,不要忘記接受答案。 –

+0

因爲在這裏很少有人投票贊成,如果你發現這個答案有幫助,請不要猶豫,立即投票。 –

相關問題