Контроллер MVC GET с расширением. [точка] значение в переменной пути

Вот мой контроллер весенней загрузки

@GetMapping(value = "/{id}/{fileName}")
@ResponseStatus(HttpStatus.OK)
public Response getDocument(@PathVariable Long id, @PathVariable String filename)

Когда запрос отправляется с fileName="test.docx", значением переменной пути контроллера является test (отсутствует .docx). Есть ли способ получить параметры, переданные пользователем?

Я пробовал использовать

@GetMapping(value = "/{id}/{**fileName:.***}"). 

Однако я получил сообщение с кодом состояния 406 на сервере (даже не попав в путь кода контроллера)

«исключение»: «org.springframework.web.HttpMediaTypeNotAcceptableException», «сообщение»: «Не удалось найти приемлемое представление»,

Spring boot версии 1.5.7.RELEASE


person Chetan    schedule 04.01.2018    source источник
comment
Исправление проблемы было 2 раза: 1. используйте:. + В конечной точке отдыха контроллера, т.е. @GetMapping (value = /{id}/{name:.+}) и 2. Расширьте webmvcconfigurereadapter, чтобы переопределить метод ниже public void configureContentNegotiation (ContentNegotiationConfigurer configurer) {configurer.favorPathExtension (false); } Вот ссылка на ссылку: spring.io/blog/ 11 мая 2013 г. / content -gotiation-using-spring-mvc   -  person Chetan    schedule 06.01.2018


Ответы (1)


Используйте .+ вот так

@GetMapping("/{id}/{fileName:.+}") 
@ResponseStatus(HttpStatus.OK) public Response getDocument(@PathVariable Long id, @PathVariable String filename)
person pvpkiran    schedule 04.01.2018