我可以在 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
来注释函数,使用 defaultValue
和 paramType="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) 只是在第一次跳转的时候得到,后面就得不到