При работе с параметрами запроса, переменными пути или полями формы в Spring MVC мне приходится обрабатывать typeMismatch
ошибки. Они происходят непосредственно перед началом валидации, что иногда может раздражать. Допустим, у меня есть параметр Integer
, помеченный стандартным ограничением проверки, вроде: @Min(value = 0, message = "Only non-negative integer values can be accepted")
. Затем я мог бы создать простой преобразователь строки в целое число, чтобы подавить NumberFormatException
, установив все не анализируемые строковые значения на -1, чтобы они могли быть в дальнейшем недействительными из-за вышеупомянутого ограничения @Min
:
@Component
final class StringToInteger implements Converter<String, Integer> {
public Integer convert(String source) {
try{
return Integer.valueOf(source);
} catch (NumberFormatException ex) {
return -1;
}
}
}
Когда при использовании с Spring Boot аннотация @Component
автоматически запускает этот конвертер и запускает его во всем контексте приложения, но что, если я хочу ограничить его использование только определенным c Controller
или даже целевым запросом? Как это сделать проще всего?