【问题标题】:How to I define and get locale-based messages in Spring MVC?如何在 Spring MVC 中定义和获取基于语言环境的消息?
【发布时间】:2011-05-10 17:14:27
【问题描述】:

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

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

因此,当他们找不到自己的资源(我尚未定义)时,语言环境应该全部默认为英语。

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

有人可以轻轻推一下我吗?

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

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

如何解决消息中的错误代码?

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

【问题讨论】:

    标签: java validation internationalization spring-mvc


    【解决方案1】:

    这取决于你想用这个文本做什么。第一种可能性是以编程方式获取消息:

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

    这种方式非常少见,因为你必须自己从Errors对象中获取消息键。

    另一种更常见的方法是使用 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

    【讨论】:

    • 很好的答案,非常感谢!!我想我更紧迫的问题是来自字段错误,它会产生类似于 4 个错误代码的东西,因此在 4 个错误代码中的哪一个(或默认消息)应选择并显示在结果页面中。但我发布了另一个更具体的问题:stackoverflow.com/questions/4202437/…谢谢你的回复,这也很有帮助!
    猜你喜欢
    • 2014-03-16
    • 2016-07-13
    • 2020-10-11
    • 2014-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    相关资源
    最近更新 更多