カスタム 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 はクラスパスにあります。
私が欠けているものを見てください??
Update : POST リクエスト タイプを含むようにハンドラー メソッドを更新し、値を消費、生成します。また、JSON データを含む http 要求も含めました。