我的自定义 JSR 303 验证没有被调用。这是我的代码
我的弹簧配置有
<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 注释:
@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 请求类型和消费,产生值。还包括我的带有 JSON 数据的 http 请求。