2012-07-02 37 views
0

我試圖使用Java過濾器來改變語言環境而作爲JSP頁面仍呈現在英文下面的代碼不起作用:使用Java過濾器來改變區域設置不工作

public class PreferenceFilter implements Filter { 

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) 
     throws IOException, ServletException { 

     HttpServletRequest req = (HttpServletRequest) request; 
     HttpServletResponse res = (HttpServletResponse) response; 

     Locale locale = StringUtils.parseLocaleString("fr"); 

     res.setLocale(locale); 
     chain.doFilter(req, res); 
    } 
} 

我還使用Spring MVC和我們使用的是自己的翻譯系統獲得的翻譯不同語言環境:如果您正在使用JSTL國際化JSP中

<bean id="messageSource" 
    class="com.mycompany.web.translations.DatabaseDrivenMessageSourceImpl" scope="singleton"> 
    <property name="cacheSeconds" value="3"/> 
    <property name="defaultEncoding" value="UTF-8"/> 
</bean> 
+0

JSP頁面是否生成正確的內容?也許它也是設置場所本身。嘗試設置*鏈接後的區域設置*。 –

+0

你好,我已經編輯了這個問題,增加了一些關於我們如何爲不同的語言環境獲得不同翻譯的細節。我應該在第一次這樣做。 –

回答

4

,這是正常的:在JSTL不會得到現場響應,但來自已配置的作用域參數,或者如果未設置語言環境,則從請求中刪除美東時間。

使用

Config.set(request, Config.FMT_LOCALE, locale); 

,其中配置是類javax.servlet.jsp.jstl.core.Config.

+0

你好,我已經編輯了這個問題,增加了一些關於我們如何爲不同語言環境獲得不同翻譯的細節。我應該在第一次這樣做。我不確定在哪裏放置你的代碼,這是否會進入過濾器? –

+1

請參閱http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/htmlsingle/spring-framework-reference.html#mvc-localeresolver瞭解Spring如何獲得首選語言環境。例如,您可以使用SessionLocaleResolver在會話中存儲區域設置,或者將區域設置存儲到任何地方並使用您自己的區域設置解析程序。 –

+0

這非常有幫助謝謝。你知道我還可以看看原始代碼嗎?我問的原因是我被告知要使用由Java相當新的資深開發人員創建的Filter。 –