В вашем шаблоне URI есть две проблемы:
- Некоторые контейнеры сервлетов могут обрабатывать
;
как разделитель и обрезать URI (например, ошибка Tomcat 30535 ). Таким образом, в качестве обходного пути вы можете использовать какой-то другой символ, например ,
.
- По умолчанию Spring MVC обрабатывает точку в URI как разделитель расширений и также обрезает ее. Вы можете переопределить его, указав шаблон регулярного выражения для переменной пути.
Итак, у вас будет что-то вроде
@RequestMapping(value = "/{planet}/{lat:.*},{long:.*}", method = RequestMethod.GET)
Обратите внимание, что, поскольку вы отключили обработку расширений Spring, вы должны включить ее вручную, если вам это нужно (для этого также требуется более ограничительное регулярное выражение, чтобы не путать десятичную точку с разделителем расширений):
@RequestMapping(value =
{"/{planet}/{lat:.*},{long:\\d+\\.\\d+}",
"/{planet}/{lat:.*},{long:\\d+\\.\\d+}.*"},
method = RequestMethod.GET)
Под @MaskFormat
вы, вероятно, подразумеваете аннотацию от mvc-showcase
(обратите внимание, что это встроенная аннотация). Наряду с MaskFormatAnnotationFormatterFactory
он демонстрирует новые возможности форматирования для преобразования переменных пути (то есть строк) в аргументы метода. На самом деле он преобразует String
с в String
с, поэтому он используется только для проверки.