Я переношу приложение с Spring 2.0.7 на 3.1.1, и я столкнулся с проблемой с initBinder. Раньше у нас были методы, похожие на@InitBinder с использованием командного объекта в редакторах свойств ...
protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) throws Exception {
MyCommand command = (MyCommand)binder.getTarget();
binder.registerCustomEditor(CustomerCard.class, createEditorFromCommand(command));
}
где цель используется PropertyEditor. Этот метод больше не вызывается, когда я сделал это аннотированный контроллер поэтому я добавил @InitBinder
аннотации:
@InitBinder
protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) throws Exception {
MyCommand command = (MyCommand)binder.getTarget();
binder.registerCustomEditor(CustomerCard.class, createEditorFromCommand(command));
}
binder.getTarget()
К сожалению, это просто какой-то объект по умолчанию. Документация @InitBinder также утверждает, что я не могу получить команду в качестве параметра либо:
Таких методы инициализации-связующих поддерживают все аргументы, которые {@link RequestMapping} поддерживает для команд/форм объектов, за исключением и соответствующие объекты результатов проверки.
Каков правильный способ сделать это?
Этот код дает ту же проблему. Команда - это просто «объект», а не моя зарегистрированная команда. –