在 Spring 中,验证后我们得到一个BindingResult
对象在controller
.
很简单,如果我收到验证错误,我想重新显示我的表单,并在每个受影响的字段上方显示错误消息。
因此要检查字段上的字段错误username
of my FormObject
I call:
FieldError usernameFieldError = bindingResult.getFieldError("username");
太好了,现在我持有FieldError
对象,假设我正在使用DefaultMessageCodeResolver
现在包含 4 个可能的错误代码。
我如何从FieldError
-> 用户可以使用的字符串?
我有一个MessageSource
在我的 Web 应用程序上下文中定义,因此我可以将单个错误代码映射到消息。
但有时默认消息是最好的,有时我希望其中两个错误代码可能有相关消息,因此我们需要选择最好的一个。
我用什么方法来确定best可能会出现字段错误的错误消息?
- 我是否需要编写一些算法来遍历所有错误代码并从最具体的错误代码中进行选择?
- spring 是否提供任何支持来帮助确定最具体的错误消息?
- 整个过程看起来又长又复杂,我以为 spring 应该让这件事变得简单。也许我完全偏离了基地?
正如你所猜测的,你让自己变得比需要的更加困难。这FieldError
对象本身就是一个MessageSourceResolvable
。您不需要从中获取代码,然后手动将各个代码带到您的消息源并继续查找。您可以将其传递给您的MessageSource
它会找到在您的语言环境中定义了翻译的最具体的翻译。 (假设您的代码解析器以正确的顺序放置它们。)
但在大多数情况下,您实际上甚至不需要这样做。把Errors
通常不需要在您的支持对象上翻译它们。这form
jsp 库中的命名空间提供了一个标记,可以为您查找错误消息。您需要做的就是将Errors
in the ModelMap
。请参阅文档:
http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/view.html#view-jsp-formtaglib-errorstag http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/view.html#view-jsp-formtaglib-errorstag
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)