2016-05-24 1 views
0

У меня есть требование передать необязательный параметр (счет) в метод GET. Я попробовал ниже.Необязательный параметр пути в REST api Spring MVC

@RequestMapping(value = {"/findDetail","/findDetail/{no}"}, method = RequestMethod.GET, produces = "application/json") 
    @ResponseBody 
    public int findAll(@PathVariable Optional<Integer> no) { 
     //find method takes Optional argument. 
     return ticketService.find(no); 
    } 

Я ожидаю некоторую ценность здесь, но не всегда имеет значение null. Я что-то пропустил?

ответ

0

Я только что попробовал это, и это сработало для меня? no.get() дает 4 с GET до /findDetail/4

Я работаю с Spring MVC 4.2.6 (через Spring Boot 1.3.5), если это имеет значение?

Вы видите изменение, если вы делаете @PathVariable("no") Optional<Integer> no? (Я не понимаю, почему вы это сделаете, но стоит сделать это?)

Но вы определенно находитесь на правильном пути, - то, что вы сказали, должно работать нормально, как указано в Optional path segments in Spring MVC среди других ответов.

+0

Я пробовал с той же весенней версией, что и ваш. Я развернул его в tomcat. Во время работы в режиме отладки, чтобы проверить значение, я вовсе не значение –

+0

Хм хорошо. Не могли бы вы попробовать изменить подпись на 'public int findAll (@PathVariable Необязательный нет, запрос HttpServletRequest) {' и посмотреть, что Spring считает URL-адрес в режиме отладки? ('request.getRequestURL()') –

+0

Фактически, когда я даю несколько значений в сопоставлении запроса, он не работает. Звонок даже не приходит к методу. Но когда я даю одно значение, например value = "/ findDetail/или value ="/findDetail/{no}, он работает так, как ожидалось для этого URL-адреса. –

Смежные вопросы