如何在Spring MVC中定义和获取基于语言环境的消息?

时间:2010-11-16 09:45:11

标签: java validation internationalization spring-mvc

我想定义一组错误消息,以便当验证错误生成代码时,这些代码会选择相应的错误消息并打印出来。

为了学习和开发可扩展的Web应用程序,我想遵循正确的i18n路径,尽管我现在只需要定义一组(英语)消息。

因此,当他们找不到自己的资源(我还没有定义)时,语言环境应该都默认为英语。

我从未使用过Java的任何i18n功能。春天的文档假设我有这方面的知识。

有人可以给我一个正确的方向吗?

我在messageSource webapp上下文中定义了dispatcher-servlet.xml。我有一个验证器,它生成一个BindingResult对象,其中包含被拒绝的字段"username",代码为"username.taken"。我可以生成默认消息。

现在我只需要在我的视图中从errormessages.properties文件中获取错误消息。

如何解决邮件的错误代码?

<bean id="messageSource"
      class="org.springframework.context.support.ResourceBundleMessageSource">
  <property name="basenames">
    <list>
      <value>errormessages</value>
    </list>
  </property>
</bean>

1 个答案:

答案 0 :(得分:9)

这取决于您要对此文本执行的操作。第一种可能性是以编程方式获取消息:

@Autowired
private MessageSource messageSource;

@RenderMapping(params = "render=details")
public String showDetails (Model model, Locale locale) {
    messageSource.getMessage(<your key goes here>, null, locale);
}

这种方式非常罕见,因为您必须自己从错误对象中获取消息密钥。

另一种更常见的方法是使用spring mvc附带的视图扩展中的内置版本。你没有写它,但我猜你使用的是JSP。在这种情况下,您只需在JSP中编写类似的内容:

<!-- showing errors -->
<div>
    <form:errors path="*" />
</div>

<!-- showing arbitrary messages -->
<div>
    <spring:message code="${success.messageKey}"/>
</div>

如需进一步阅读,我建议您http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/view.html