簡體   English   中英

在Spring Framework中訪問適當的資源包

[英]Accessing proper resource bundle in Spring Framework

我正在嘗試使用Spring框架(WebFlow)訪問資源包。 一個message.properties文件以及相應的messages_ar_AE.properties文件都保存在類路徑中,Spring Framework從該路徑中訪問資源包。

使用JSTL resourceBundle屬性從xhtml文件調用的代碼。

<myCustom:includedInSetValidator set="5.0, 5.0.1, 5.1" 
                            validationMessage="#{resourceBundle['jboss.version.error']}" />

但是,無論使用"#{resourceBundle['jboss.version.error']}"語言, "#{resourceBundle['jboss.version.error']}"始終會提取默認文本,即; 來自英語;

從一些論壇上學到的信息提示,我需要使用LocaleChangeInterceptor或其他一些預定義的類來處理此問題。 一旦設置了Spring Locale,默認情況下將加載正確的資源包,從而解決了我的問題。

我需要一種以編程方式更改Spring Framework Locale來設置Locale的方法。 如何以編程方式實現這一目標?

謝謝。

解決了該問題。

繼續我的問題,當Spring Framework默認遇到諸如"#{resourceBundle['jboss.version.error']}"之類的JSTL表達式時,除非明確定義了資源束,否則它將在類路徑中查找message.properties文件。

嘗試獲取適當的資源包時,框架會在設置為的語言環境中查看。 因為在我的案例中未設置Spring Framework的語言環境,所以它沒有為我獲取預期的資源包。 在可用選項中,我選擇了Spring LocaleResolver

我在應用程序中修改了現有的JSF Custom ViewHandler,在其中添加了代碼以設置Spring Framework的語言環境。

public Locale calculateLocale(FacesContext arg0) {

HttpServletRequest request  = (HttpServletRequest)arg0.getExternalContext().getRequest();
        HttpServletResponse response  = (HttpServletResponse)arg0.getExternalContext().getResponse();

LocaleResolver localeResolver = RequestContextUtils.getLocaleResolver(request);

localeResolver.setLocale(request, response, **setYourLocaleHere**);

}

故事還沒有結束,以這種方式在語言環境解析器中設置語言環境會引發錯誤:

Cannot change HTTP accept header – use a different locale resolution strategy

請參閱無法更改HTTP接受標頭錯誤

為了克服這一點,應包括

<bean id="localeResolver"
        class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
        <property name="defaultLocale" value="en" />
    </bean>

在Spring配置文件中。

現在,設置了Spring框架所需的語言環境。

可能有比我更好的解決方案。 如果有的話,也可以提出他們的解決方案。

謝謝。

您可以按照文檔此處概述的多種方式執行此操作。

暫無
暫無

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

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