在Spring中,验证后我们在BindingResult
中获得了controller
个对象。
很简单,如果我收到验证错误,我想重新显示我的表单,并在每个受影响的字段上方显示错误消息。
因此,要检查我username
的{{1}}字段FormObject
上的字段错误,请致电:
FieldError usernameFieldError = bindingResult.getFieldError("username");
很好,现在我拿着一个FieldError
对象,假设我使用DefaultMessageCodeResolver
现在包含4个可能的错误代码。
如何从FieldError
开始 - >可供用户使用的字符串?
我的webapplication上下文中定义了MessageSource
,因此我可以将单个错误代码映射到消息。
但有时默认消息最好,有时我希望其中两个错误代码可能有相关消息,因此我们需要选择最佳消息。
我可以使用哪种方法来确定要为字段错误提供的最佳可能错误消息?
答案 0 :(得分:15)
正如您所猜测的那样,您正在努力使自己变得更加困难。 FieldError
对象本身就是MessageSourceResolvable
。您无需从中获取代码,然后手动将单个代码移至消息源并继续查看。您可以将其传递给MessageSource
,它会找到在您的语言区域中定义了翻译的最具体的一个。 (假设你的代码解析器以正确的顺序放置它们。)
但在大多数情况下你甚至都不需要这样做。通常不需要将Errors
放在您的支持对象上并自己翻译它们。 jsp库中的form
命名空间提供了一个标记,可以为您查找错误消息。您需要做的就是将Errors
放在ModelMap
中。见文档: