У меня есть следующий 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
}
- В контроллер, если я укажу
binder.setValidator(new ChekAtleastOneValueValidator());
, будет выполняться только доChekAtleastOneValueValidator
он не будет проверять на наличие@notnull
@ ValidDocumentModifiedDate` - Если у меня нет
binder.setValidator(new ChekAtleastOneValueValidator());
, тогда контроль будет проверять на@[email protected]
валидация, но неChekAtleastOneValueValidator
.
Мой вопрос: есть ли способ весной использовать Spring валидацию, аннотации и аннотацию @NotNull и получить все ошибки всех проверок или пружина позволяет использовать только пружинные валидатор?
Вам нужен ['CompositeValidator'] (https://github.com/mdeinum/spring-utils/blob/master/validation/src/main/java/biz/deinum/multitenant/validation/ CompositeValidator.java), который охватывает несколько других валидаторов. Внесите 2 валидатора, которые вы хотите выполнить, и добавьте составной экземпляр 'WebDataBinder'. –