我似乎无法获得使用Spring MVC的基本验证。Spring MVC + Hibernate Validator + Velocity
我有以下POJO:
public class Example {
@NotNull(message="You must enter a value")
@Size(min=2, max="2", message="You must enter 2 characters")
private String value;
public String getValue() { return value; }
public void setValue(String value) { this.value = value; }
}
我非常基本的控制器是这样的:
@Controller
@RequestMapping("/value.vm")
public class ValueController {
@Autowired
private Validator validator;
@RequestMapping()
public ModelAndView display(@Valid @ModelAttribute("example") Example e, BindingResult result) {
//Details omitted
}
我Velocity模板同样简单:
<form target="_self" enctype="application/x-www-form-urlencoded" action="/value.vm" method="post">
#springBind("example")
#springFormInput("example.value", "")
#springShowErrors("<br />", "")
</form>
我的servlet。 xml文件包括:
<mvc:annotation-driven />
如果我手动验证空白表单提交(即, validator.validate(e)),我看到我的错误消息正在生成,但它们在我的BindingResult中不存在。
任何想法为什么我的绑定结果没有得到这些错误?
如果您想使用javax.validation.Validator和JSR-303验证,请将类实现放在类路径中,如hibernate-validator。 – GaryF 2011-03-10 14:04:56
@GaryF我在我的类路径上有hibernate-validator,这就是我正在使用的。然而,验证错误没有放回到BindingResult对象上,随后的#springShowErrors没有显示任何空白表单输入错误。 我错过了一些其他的配置?一旦我更改了验证实现,spring会正确显示标记中的错误。 – Scott 2011-03-10 15:53:17
你的配置对我来说看起来很好。我不熟悉速度模板标签的工作原理,但Spring侧看起来不错。 – GaryF 2011-03-10 16:55:19