java - How do I make Spring call a validator on a REST service? -


i have studied many, many answers , still can't see i'm doing wrong.

i have rest service controller takes bean parameter , validate fields on bean set.

the following (a portion of) configuration object.

@configuration @componentscan({...}) @enablewebmvc public class appconfig extends webmvcconfigureradapter {     @bean     public validator validator() {         localvalidatorfactorybean validatorbean = new localvalidatorfactorybean();         return validatorbean;     }      @override     public validator getvalidator() {         return validator();     } } 

i can't tell if necessary, can tell they're never called, maybe they're in wrong place?

the following (a portion of) pom.xml:

<dependency>     <groupid>javax.validation</groupid>     <artifactid>validation-api</artifactid>     <version>1.1.0.final</version> </dependency> <dependency>     <groupid>org.hibernate</groupid>     <artifactid>hibernate-validator</artifactid>     <version>5.1.3.final</version> </dependency> <dependency>     <groupid>org.hibernate</groupid>     <artifactid>hibernate-validator-annotation-processor</artifactid>     <version>5.1.1.final</version> </dependency> <dependency>     <groupid>javax.el</groupid>     <artifactid>javax.el-api</artifactid>     <version>3.0.0</version>     <scope>provided</scope> </dependency> 

i don't think el necessary i'm doing, included in case made difference.

here (a portion of) bean class needs validated:

public class contactinfo {     @notnull     @size(min=1, max=50)     private string phone;     public string getphone() {         return phone;     }     public void setphone(string phone) {         this.phone = phone;     } } 

and finally, (a portion of) rest controller:

@restcontroller @requestmapping("/contact") public class contactcontroller {     private static final string user_id_attribute = "userid";      @autowired     private validator validator;      @autowired     @qualifier("contactservice")     private contactservice service;      @requestmapping("/submit")     public void submitcontact(         @valid @requestbody contactinfo formdata, bindingresult result) throws exception {         assert(validator != null);         if(result.haserrors()) {             throw new exception("i don't 1 bit.");         }         service.submitcontact(formdata);     } } 

in debugger, can see validator passed in optionalvalidatorfactorybean, , result.haserrors() false.

the json passed in controller includes this:

{ "phone":"" } 

i think should trigger validation error because doesn't meet minimum size.


Comments