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 に答える