0

У меня есть следующий Rest контроллер:Весна веб-службы RESTful @initbinder не позволяя другую проверку

@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(); 
} 
} 

И это боб, где будет отбрасывать запрос:

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

     Setter and GEtter 
     } 
  1. В контроллер, если я укажу binder.setValidator(new ChekAtleastOneValueValidator());, будет выполняться только до ChekAtleastOneValueValidator он не будет проверять на наличие @notnull @ ValidDocumentModifiedDate`
  2. Если у меня нет binder.setValidator(new ChekAtleastOneValueValidator());, тогда контроль будет проверять на @[email protected] валидация, но не ChekAtleastOneValueValidator.

Мой вопрос: есть ли способ весной использовать Spring валидацию, аннотации и аннотацию @NotNull и получить все ошибки всех проверок или пружина позволяет использовать только пружинные валидатор?

+0

Вам нужен ['CompositeValidator'] (https://github.com/mdeinum/spring-utils/blob/master/validation/src/main/java/biz/deinum/multitenant/validation/ CompositeValidator.java), который охватывает несколько других валидаторов. Внесите 2 валидатора, которые вы хотите выполнить, и добавьте составной экземпляр 'WebDataBinder'. –

ответ

0

Собственно, сам вопрос был неправильным. Я получил ответ, я использую класс Spring Validator для проверки всего входящего запроса, а затем используйте @validated вместо @valid. Я больше не использую аннотацию в запросе и пусть класс будет POJO. это проблема решена