简体   繁体   中英

Spring REStful web service @initbinder not allowing other validation

I have the following Rest controller:

 @RestController
 public class DocumentSearchController_global 
{
@InitBinder//("TestCustomAnotation")
protected void initBinder(WebDataBinder binder) {
   binder.setValidator(new ChekAtleastOneValueValidator());

}

@RequestMapping(value = "/validator", method = RequestMethod.POST, produces = { MediaType.APPLICATION_XML_VALUE, MediaType.APPLICATION_JSON_VALUE })
protected DocumentSearchResponse validatortest(@Valid @RequestBody TestCustomAnotation objDMSRequest,  Errors e, BindingResult br) throws AppException
{
    if(br.hasErrors())
        System.out.println("ERRor");
  if (e.hasErrors())
  {
      System.out.println("Got Error:      "+ e.getFieldError());
  }
    DocumentSearchResponse objDocSearchResponse =  null;


    return objDocSearchResponse;
    }




@ExceptionHandler
@ResponseStatus(value = HttpStatus.BAD_REQUEST)
@ResponseBody
public String handleMethodArgumentNotValidException(
        MethodArgumentNotValidException  error) {
    System.out.println("ERROR-->>>>>>>>>>>>>>>>>>>>>>>>" +error.getMessage());
    return "Bad request: " + error.getMessage();
}
}

And this is the bean where the request will be cast:

        public class TestCustomAnotation
        {
        @ValidDocumentModifiedDate({"7Days", "30Days","60Days"})
        String docModifiedDate;
        @NotNull
        String objectId;
        @NotNull
        String jobId;

        Setter and GEtter
        }
  1. In the controller if I specify binder.setValidator(new ChekAtleastOneValueValidator()); the contol will only go to ChekAtleastOneValueValidator it will not check for @notnull @ValidDocumentModifiedDate`
  2. If I don't have binder.setValidator(new ChekAtleastOneValueValidator()); then the control will check for @notnull@ValidDocumentModifiedDate validation but not ChekAtleastOneValueValidator .

My question is: is there a way in Spring to use Spring validation, custom annotation and @notnull annotation and get all the error of all the validation or spring allows to use only Spring validators?

Actually the question itself was wrong. I got the answer I use a Spring Validator class to validate all the request comming in and then use @validated in stead of @valid. I don't use annotation at the request anymore and let the class be a POJO. thats it problem solved

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM