Я хотел бы использовать @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 рассматривает их как то же имя, которое является раздражающим.
Начиная с 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);
}