0

春のi18nを扱っています。2 つの Bean を定義しましたspring-mvc.xml

<bean name="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
    <property name="paramName" value="lang" />
</bean>

<bean name="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
    <property name="defaultLocale" value="en" />
</bean>

言語を切り替えるための jsp の 2 つのアンカー

<span>
    <a href="?lang=en">english</a>
    | 
    <ahref="?lang=zh">chinese</a>
</span>

コントローラーでパラメーターを取得し、lang/localejavascript の前に結果を i18nしようとしましたが(java スクリプトを i18n したいため)、機能しません。

request.getLocale().getDisplayName();
request.getParameter("lang");

Localeコントローラーでを取得するにはどうすればよいですか? または i18n Java スクリプトの良いアイデアはありますか?

前もって感謝します!

4

3 に答える 3

1

Spring Web MVC パラメーター リファレンスをご覧ください: http://docs.spring.io/spring/docs/4.0.0.RELEASE/spring-framework-reference/htmlsingle/#mvc-ann-arguments

サポートされているメソッドの引数の型
...
java.util.Locale現在のリクエスト ロケールに対して、使用可能な最も具体的なロケール リゾルバーによって決定され、事実上、LocaleResolverサーブレット環境で構成されます。

つまりjava.util.Locale、Controller メソッドで引数を使用するだけで、現在解決されているロケールが Spring MVC によってこの引数に割り当てられます。

@RequestMapping(value = "/{viewName}", method = GET)
public String handle(@PathVariable String viewName, Locale locale) {
    return "info/" + locale.getLanguage() + '/' + viewName;
}
于 2014-05-17T09:39:07.390 に答える
0
@Controller
public class MyController{
    @RequestMapping(value = "/test")
    public test(HttpServletRequest request, HttpServletResponse response){
        Locale locale = RequestContextUtils.getLocale(request);
        System.out.println("Locale >>> " + locale);
    }
}

結果:

Locale >>> en
于 2013-06-27T01:58:45.190 に答える