在Spring中,经过验证,我们在controller
中得到一个BindingResult
对象。Spring:如何解决验证错误 - >错误代码 - >错误信息
足够简单,如果我得到验证错误,我想重新显示我的表单,并在每个受影响的字段上方显示错误消息。
所以检查领域错误的现场username
我FormObject
我打电话:
FieldError usernameFieldError = bindingResult.getFieldError("username");
太好了,现在我持有FieldError
物体,假设我使用的DefaultMessageCodeResolver
现在包含类似4个可能的错误码。
我该如何从FieldError
- >一个字符串是消费者可以使用的?
我在我的web应用上下文中定义了MessageSource
,所以我可以将单个错误代码映射到消息。
但有时默认的信息会最好,有时候我希望两个错误代码可能有相关的信息,所以我们需要选择最好的信息。
使用什么方法来确定最佳可能出现的错误消息以显示字段错误?
- 我是否需要编写一些算法来检查所有的错误代码,并从最具体的?
- 春天是否提供任何帮助确定最具体的错误信息?
- 整个过程看起来如此漫长和复杂,我认为春天应该让这件事变得容易。也许我完全脱离基地?
哦,我明白了,我没赶上MessageSource.get(MessageSoureResolvable,...),我只注意到了get(字符串,...)选项,这是关键环节(实际上我可能已经注意到了,并且在学习新的框架/ API时,我们迷失了无数的细节)。谢谢!! – 2010-11-17 08:20:00
关于JSP taglib的有趣点,我正在使用Velocity,但Spring提供了宏的形式。但我还没有使用它,因为它似乎相当反春天,即使我的视图呈现与春季框架。我认为我的控制器现在调用Spring特定的MessageSource而不是Java标准的ResourceBundle已经够糟糕了。但是,也许我正在推翻它?这是我第一次与春天。 – 2010-11-17 08:22:29
确实如此,但就视图技术而言,通常最终会与*相关联。*如果您尝试仅使用JSTL和servlet API,那么您会做很多重新发明! WebMVC和WebFlow是非侵入性的,使用标签库,您可以很容易地创建自己的.tag文件来包装它们,并将依赖关系“隔离”到稍后可以更改实现的单个位置。使用标签还可以消除对后台对象中Errors接口的依赖,使您可以使用无弹簧的pojo。 – Affe 2010-11-17 18:12:51