【发布时间】:2011-07-31 21:56:34
【问题描述】:
我有一个项目使用 spring 3 mvc 和 hibernate 验证器来验证表单对象。
我关注spring的document
在我的控制器中,我可以获得绑定结果,即bindingresult.hasErrors() == true。
我使用ReloadableResourceBundleMessageSource 进行错误消息绑定。
我的问题是:
是否可以在我的 jsp 网页中显示更灵活的错误消息?
例如,我想说“应用名称 UserEnteredAppName 无效。大小应介于 2 和 255 之间”。
在我的 message.property 中,我定义:
Size.appNameForm.itemName=the app name {What Should I do in this brace?} is not valid. The size should be between {1} and {2}
{1} 和 {2} 可以内插到“2”和“255”。但是如何在插值消息中获取 UserEnteredAppName?
下面是我的表单类和控制器类:
我的控制器类:
@RequestMapping(value="foo.htm")
public String handleAppNameFormSubmit(@Valid @ModelAttribute("appNameForm") AppNameForm form, BindingResult result){
}
我的表单类:
public class AppNameForm implements IForm{
@NotEmpty
@Size(min = 1, max = 255)
private String itemName;
....
}
我找到了一些给我一些提示的链接:
例如:How do I dynamically resolve message parameters with Hibernate Validator?
但我使用的是spring mvc和spring controll,哪个jsr303实现要使用,我找不到使用自定义验证器的方法,扩展了hibernate的默认ValidatorImpl。
我认为解决方案是,我可以有自定义验证器,它将拒绝 UserEnteredAppName 进入 bindingResult。可能吗?还是我应该找到其他方法?
谢谢 安德鲁
【问题讨论】:
-
仅供参考,在我的jsp中,我使用spring标签绑定错误消息:
<form:error path="itemName"/>
标签: jakarta-ee spring-mvc hibernate-validator