@InitBinder в spring boot не работает с @RequestBody
если я использую @InitBinder без ограничения, он отлично работает с @RequestBody для проверки моих объектов.
@InitBinder
private void initBinder(WebDataBinder binder) {
binder.setValidator(validator);
}
@RequestMapping(method=RequestMethod.POST)
public CustomerQuickRegisterEntity saveNewCustomer(@Valid @RequestBody CustomerQuickRegisterEntity customerEntity,BindingResult result)
{
if(result.hasErrors())
{
return new CustomerQuickRegisterEntity();
}
return customerQuickRegisterRepository.save(customerEntity);
}
но проблема в том, что когда я ограничиваю его только один объект, делая его как @InitBinder("customerEntity")
он не проверяет объект. Поэтому я искал через stackoverflow и нашел, что @InitBinding
работает только с предметами с аннотацией @ModelAttribute
. Тогда мой вопрос в том, что он отлично работает с @RequestBody
когда я использую его как @InitBinder
но не работает хорошо, когда я использую его как @InitBinder("customerEntity")
...почему это так?
Есть ли другой способ проверить объекты (а не свойства объекта по отдельности), связанные с @RequestBody
2 ответов
документы,
по умолчанию применяется ко всем атрибутам команд / форм и всем запросам параметры, обрабатываемые аннотированным классом обработчика. Выбрав модель имена атрибутов или имена параметров запроса здесь ограничивают метод init-binder для тех конкретных атрибутов / параметров, с различные методы init-связующего, обычно применяемые к различным группам атрибутов или параметров.
пожалуйста, посмотрите здесь