0

我正在尝试使用 Java 过滤器更改区域设置,但以下代码不起作用,因为 JSP 页面仍以英语呈现:

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,我们正在使用自己的翻译系统来获取不同语言环境的翻译:

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

1 回答 1

5

如果您使用 JSTL 来国际化您的 JSP,这很正常:JSTL 不会从响应中获取语言环境,而是从配置的作用域参数中获取,或者,如果没有设置语言环境,则从请求中获取。

利用

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

其中 Config 是类javax.servlet.jsp.jstl.core.Config.

于 2012-07-02T17:49:19.480 回答