如果找不到@PathVariable,它是否可以返回null?


问题内容

@PathVariable如果path变量不在url中,是否可以使返回null?否则我需要做两个处理程序。一个为/simple另一个,为/simple/{game},但即使没有定义游戏,我都做同样的事情,但是我从列表中选择第一个,但是如果定义了游戏参数,那么我就使用它。

@RequestMapping(value = {"/simple", "/simple/{game}"}, method = RequestMethod.GET)
public ModelAndView gameHandler(@PathVariable("example") String example,
            HttpServletRequest request) {

这就是我尝试打开页面时得到的/simple

原因:java.lang.IllegalStateException:在@RequestMapping中找不到@PathVariable
[example]


问题答案:

它们不能是可选的,不可以。如果需要,则需要两种方法来处理它们。

这反映了路径变量的性质-
将它们设为null并没有任何意义。REST样式的URL始终需要完整的URL路径。如果您有一个可选组件,请考虑使其成为一个请求参数(即使用@RequestParam)。这更适合于可选参数。