Spring @MVC и @RequestParam проверка

Я хотел бы использовать @RequestParam аннотацию как так:

@RequestMapping
public void handleRequest( @RequestParam("page") int page ) {
   ...
}

Однако я хочу показать страницу 1, если пользователь играет с параметрами URL и пытается перейти к странице "abz" или чему-то нечисловому. Прямо сейчас лучшее, которое я могу заставить Spring делать, возвратить 500. Существует ли способ переопределить это поведение чисто, не имея необходимость брать в параметре как Строка?

Я посмотрел на @ExceptionHandler аннотацию, но это, кажется, ничего не делает, когда я установил, я использую @ExceptionHandler(TypeMismatchException.class). Не уверенный, почему нет.

Предложения?

P.S. вопрос о Премии: Spring MVC называют Spring MVC. Является Spring MVC с аннотациями, просто названными Spring @MVC? Google рассматривает их как то же имя, которое является раздражающим.

7
задан Brandon Yarbrough 18 February 2010 в 09:05
поделиться

1 ответ

Начиная с Spring 3.0, вы можете установить ConversionService . @InitBinder значение указывает конкретный параметр для применения этой службы к:

@InitBinder("page")
public void initBinder(WebDataBinder binder) {
    FormattingConversionService s = new FormattingConversionService();
    s.addFormatterForFieldType(Integer.class, new Formatter<Integer>() {
        public String print(Integer value, Locale locale) {
            return value.toString();
        }

        public Integer parse(String value, Locale locale)
                throws ParseException {
            try {
                return Integer.valueOf(value);
            } catch (NumberFormatException ex) {
                return 1;
            }
        }
    });
    binder.setConversionService(s);
}
8
ответ дан 6 December 2019 в 10:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: