我可以在 Spring MVC 的 RequestMapping 中为路径变量设置默认值吗?

Posted

技术标签:

【中文标题】我可以在 Spring MVC 的 RequestMapping 中为路径变量设置默认值吗?【英文标题】:Can I set a default value for a path variable at RequestMapping in SpringMVC? 【发布时间】:2015-02-01 18:55:49 【问题描述】:

是否可以在 SpringMVC 中为 @PathVariable 设置默认值?

@RequestMapping(value = "/core/organization/pageNumber", "/core/organization" , method = RequestMethod.GET) public String list(@PathVariable Integer pageNumber, ModelMap modelMap)

在这种情况下。如果我访问没有 pageNumber 的页面,我想将默认值设置为 1。

这可能吗?

【问题讨论】:

我对此表示怀疑,因为您不能在 java 中为方法参数设置默认值 不,您不能为路径变量设置默认值,因为没有该变量,URL 会有所不同,因此不匹配。您始终可以为 /core/organization 创建一个映射,该映射在内部使用您想要的默认值调用 list 方法。 【参考方案1】:

无法设置默认值,但您可以创建两种方法:

@RequestMapping(value = "/core/organization/pageNumber", "/core/organization" , method = RequestMethod.GET)
    public String list(@PathVariable Integer pageNumber, ModelMap modelMap)
...



@RequestMapping(value = "/core/organization/", "/core/organization" , method = RequestMethod.GET)
    public String list(@PathVariable Integer pageNumber, ModelMap modelMap)
Integer pageNumber=defaultvalue;
...

【讨论】:

【参考方案2】:

我不确定这是否是你想要的,但如果你想在 swagger 中显示默认值,你可以使用 @ApiImplicitParams/@ApiImplicitParam 来注释函数,使用 defaultValueparamType="path"指定。

【讨论】:

以上是关于我可以在 Spring MVC 的 RequestMapping 中为路径变量设置默认值吗?的主要内容,如果未能解决你的问题,请参考以下文章

Spring mvc HandlerInterceptor 怎样获取 rest 参数值

Angular 6 - Spring MVC :: Options preflight request throws 500 internal Server Error

理解Spring MVC Model Attribute和Session Attribute

spring mvc里request.getSession().setAttribute("user",user) 只是在第一次跳转的时候得到,后面就得不到

Spring MVC 的@RequestParam注解和request.getParameter("XXX")

spring mvc上传下载文件