Is it possible to make the @PathVariable
to return null if the path variable is not in the url? Otherwise I need to make two handlers. One for /simple
and another for /simple/{game}
, but both do the same just if there is no game defined i pick first one from a list however if there is a game param defined then i use it.
@RequestMapping(value = {"/simple", "/simple/{game}"}, method = RequestMethod.GET)
public ModelAndView gameHandler(@PathVariable("example") String example,
HttpServletRequest request) {
And this is what I get when trying to open page /simple
:
Caused by: java.lang.IllegalStateException: Could not find @PathVariable [example] in @RequestMapping
They cannot be optional, no. If you need that, you need two methods to handle them.
This reflects the nature of path variables - it doesn't really make sense for them to be null. REST-style URLs always need the full URL path. If you have an optional component, consider making it a request parameter instead (i.e. using @RequestParam
). This is much better suited to optional arguments.