[英]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
為了克服這一點,應包括
<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.