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

时间:2010-11-17 07:50:26

标签: java spring-mvc validation

在Spring中,验证后我们在BindingResult中获得了controller个对象。

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

因此,要检查我username的{​​{1}}字段FormObject上的字段错误,请致电:

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

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

如何从FieldError开始 - >可供用户使用的字符串?

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

但有时默认消息最好,有时我希望其中两个错误代码可能有相关消息,因此我们需要选择最佳消息。

我可以使用哪种方法来确定要为字段错误提供的最佳可能错误消息?

  • 我是否需要编写一些算法来查看所有错误代码并从最具体的选择中选择?
  • spring是否支持帮助确定最具体的错误消息?
  • 整个过程看起来很漫长而且令人费解,我认为春天应该让这个东西变得容易。也许我完全偏离了基地?

1 个答案:

答案 0 :(得分:15)

正如您所猜测的那样,您正在努力使自己变得更加困难。 FieldError对象本身就是MessageSourceResolvable。您无需从中获取代码,然后手动将单个代码移至消息源并继续查看。您可以将其传递给MessageSource,它会找到在您的语言区域中定义了翻译的最具体的一个。 (假设你的代码解析器以正确的顺序放置它们。)

但在大多数情况下你甚至都不需要这样做。通常不需要将Errors放在您的支持对象上并自己翻译它们。 jsp库中的form命名空间提供了一个标记,可以为您查找错误消息。您需要做的就是将Errors放在ModelMap中。见文档:

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