spring mvc как улучшить мой initBinder

Я использую spring mvc и все еще пытаюсь разобраться с связующими, форматтерами и конвертерами.

У меня есть специальный биндер за одним из моих контроллеров...

@InitBinder
public void initBinder(WebDataBinder webDataBinder) {
    SimpleDateFormat df = new SimpleDateFormat(dateFormat);
    df.setLenient(false);
    webDataBinder.registerCustomEditor(Date.class, new CustomDateEditor(df, true));
}

Этот конкретный пользовательский биндер не относится только к форме для этого контроллера, но будет использоваться во всем приложении.

Каков наилучший способ сделать это более общим для всех моих контроллеров?

P.S. У меня есть служба конвертации, поэтому я мог бы использовать ее, если это подходящее место для этого.

public class ApplicationConversionServiceFactoryBean extends FormattingConversionServiceFactoryBean

спасибо


person Richie    schedule 23.02.2014    source источник


Ответы (1)


Вы можете рассмотреть возможность использования аннотации @ControllerAdvice. Классы с этой аннотацией помогают каждому контроллеру.

Итак, вы можете написать что-то вроде этого:

@ControllerAdvice
public class GlobalInitializer {

    @InitBinder
    public void globalBinder(WebDataBinder webDataBinder) {
       SimpleDateFormat df = new SimpleDateFormat(dateFormat);
       df.setLenient(false);
       webDataBinder.registerCustomEditor(Date.class, new CustomDateEditor(df, true));
    }
}
person gipinani    schedule 23.02.2014
comment
Привет. Я использую Spring MVC 3.1.0. Я понимаю, что совет контроллера только с весны mvc 3.2. Есть ли что-то подобное в 3.1.0, которое я могу использовать? - person Richie; 26.02.2014
comment
@Ричи Привет! Взгляните на этот ответ stackoverflow.com/questions/21165135/ - person gipinani; 26.02.2014