代码之家  ›  专栏  ›  技术社区  ›  David Parks

Spring:如何解决验证错误->错误代码->错误消息

  •  8
  • David Parks  · 技术社区  · 14 年前

    在春天,经过验证后,我们得到一个 BindingResult 中的对象 controller

    很简单,如果我得到了验证错误,我想在每个受影响的字段上面用错误消息重新显示我的表单。

    以便检查字段上的字段错误 username 我的 FormObject 我打电话给:

    FieldError usernameFieldError = bindingResult.getFieldError("username");
    

    很好,现在我拿着 FieldError 对象,假设我正在使用 DefaultMessageCodeResolver 现在包含4个可能的错误代码。

    我怎么走 字段错误 ->用户可使用的字符串?

    我有一个 MessageSource 在我的WebApplication上下文中定义,因此我可以将单个错误代码映射到消息。

    但有时默认消息是最好的,有时我希望其中两个错误代码可能有相关的消息,所以我们需要选择最好的一个。

    我用什么方法来确定 最好的 是否可能出现字段错误的错误消息?

    • 我需要写一些算法来检查所有的错误代码并从最具体的错误中选择吗?
    • Spring是否为帮助确定最具体的错误消息提供了任何支持?
    • 整个过程似乎漫长而复杂,我认为春天应该让这件事变得容易。也许我完全不在基地?
    1 回复  |  直到 14 年前
        1
  •  15
  •   Affe    14 年前

    正如你所猜测的那样,你会让自己变得比需要的更困难。这个 FieldError 对象本身是 MessageSourceResolvable . 你不需要去掉代码,然后手动将单个代码带到你的消息源并进行查找。你可以把它传给你的 MessageSource 它将找到最具体的一个在您的语言环境中定义了翻译。(假设您的代码解析器按正确的顺序把它们放上。)

    但在大多数情况下,你甚至不需要这样做。把 Errors 通常不需要你自己翻译你的支持对象。这个 form JSP库中的名称空间提供了一个标记,用于查找错误消息。你所要做的就是 错误 ModelMap . 见文件:

    http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/view.html#view-jsp-formtaglib-errorstag