@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-связующего, обычно применяемые к различным группам атрибутов или параметров.

пожалуйста, посмотрите здесь


это старый вопрос, но мне удалось получить @InitBinder аннотация привязать мой заказ Validator до