LocaleChangeInterceptor - 预期的行为是什么?

时间:2012-10-23 15:05:04

标签: model-view-controller internationalization interceptor

我刚迈出国际化领域的第一步,我将准备一个用于多语言使用的Spring MVC应用程序。我用谷歌搜索并阅读了一些例子(比如这个:http://viralpatel.net/blogs/spring-3-mvc-internationalization-i18n-localization-tutorial-example/),看起来很简单。我使用了此示例中完全相同的设置以及其中引用的修复程序中的代码。我在不同论坛的一些帖子中看到过相同的设置。

我不完全理解的一点是:我有一个控制器方法,其映射看起来像这样:

@RequestMapping(value =“/ placeDetails.htm”,method = RequestMethod.GET) public String showPlaceDetails(Model model,@ RequestParam(value =“placeId”,required = true)int placeId,Locale locale){

它会捕获像这样的请求: www.me.com/placeDetails.htm?placeId=123。

我添加到“更改语言”菜单项的href表示href =“?lang = en”。据我所知,我最终得到了网址www.me.com/placeDetails.htm?lang=en(当我将鼠标悬停在菜单项上时,我会看到这一点)。上面的方法请求映射将无法识别这一点,我从Tomcat收到一条错误消息,说“客户端发送的请求在语法上是不正确的()。”。我的控制器知道没有使用名为lang的参数调用www.me.com/placeDetails.htm。

我(而且仍然是)我的假设是我不应该使用包含lang参数的请求映射添加另一个方法。我假设LocaleChangeInterceptor将拦截此调用并处理它。

所以我的问题是:我做出了正确的假设,如果不是,当控制器方法有其他参数时,拦截器应该如何工作。如果我做出正确的假设 - 任何想法为什么这不起作用。

1 个答案:

答案 0 :(得分:1)

尝试这种非常简单直接的方法。它对我有用。

http://semikas.blogspot.gr/2012/07/spring-3-internationalization-and.html