我的自定义JSR 303验证未被调用。这里是我的代码未调用自定义JSR 303验证
我的Spring配置有
<mvc:annotation-driven />
我的控制器的处理方法:
@RequestMapping(value="update", method = RequestMethod.POST ,
consumes="application/json" ,
produces="application/json"))
@ResponseBody
public String update(@Valid @RequestBody MyBean myBean){
return process(myBean);
}
为myBean(标注有ValidMyBeanRequest):
@ValidMyBeanRequest
public class MyBean {
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
ValidMyBeanRequest annotaion:
@Target({ TYPE })
@Retention(RUNTIME)
@Documented
@Constraint(validatedBy = {MyBeanValidator.class})
public @interface ValidMyBeanRequest {
String message() default "{validMyBeanRequest.message}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
MyBeanValidator类:
public class MyBeanValidator implements
ConstraintValidator<ValidMyBeanRequest, MyBean> {
@Override
public void initialize(ValidMyBeanRequest constraintAnnotation) {
// TODO Auto-generated method stub
}
@Override
public boolean isValid(MyBean myBean, ConstraintValidatorContext context) {
boolean isValid = true;
int id = myBean.getId();
if(id == 0){
isValid = false;
}
return isValid;
}
}
我的HTTP POST请求低于JSON数据:
{id:100}
问题是MyBeanValidator的isValid是没有得到调用。我使用的是Spring 3.1.0,HibernateValidator在类路径中。
请看我在想什么?
更新:更新的处理程序方法包含POST请求类型并消耗,产生值。还包括我的http请求与JSON数据。
'是否为非标准约束和正常@ valid'工作(表单)命令对象(没有'@ RequestBody')? – Ralph
另外,myBean绑定正确吗? – n1ckolas
@ n1ckolas myBean绑定正确。我有json映射;如果字段映射不正确,我会发生错误。 – Vinay