使用 Java 过滤器更改语言环境不起作用



我正在尝试使用 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>

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

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

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

最新更新