@PathVariable为空时指定默认值,
可以指定多个匹配路径,然后设置参数非必要的,就可以了,例子如下
1
2
3
4
5
6
7
|
@RequestMapping (value = { "/timeline/{uid}" , "/timeline/{uid}/{size}" })
public ModelAndView getTimeline( @PathVariable (value= "uid" ) String articleUserId,
@PathVariable (value= "size" , required = false ) Integer size,
ModelAndView modelAndView) {
if (size == null ) size = 50 ;
//逻辑
}
|
对于下面两种URL都是可以处理的
http://www.leixingke.com/article/timeline/leixing
http://www.leixingke.com/article/timeline/leixing/100
补充:@PathVariable设置为空的问题(required=false)
最近学习springMVC的时候,学到@PathVariable后,发现@PathVariable有个required属性,于是将其设置为false,发现访问请求时报错。
刚开始我的代码是这样的:
1
2
3
4
5
6
|
@RequestMapping (value={ "/user/{id}/{name}" })
public User getUser( @PathVariable (value= "id" ,required= false ) Integer id, @PathVariable (value= "name" ,required= false ) String name ){
System.out.println( "--------------:" +id+ "," +name);
User user= new User(id,name);
return user;
}
|
后面发现上面的文章,将方法改成如下就可以了:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
/**
* http://localhost:8080/helloWorld/user/1/zhangsan
* http://localhost:8080/helloWorld/user/1
* http://localhost:8080/helloWorld/user
* @param id
* @param name
* @return
*/
@RequestMapping (value={ "/user/{id}/{name}" , "/user/{id}" , "/user" })
public User getUser( @PathVariable (value= "id" ,required= false ) Integer id, @PathVariable (value= "name" ,required= false ) String name ){
System.out.println( "--------------:" +id+ "," +name);
User user= new User(id,name);
return user;
}
|
原因就是地址是不一样的,需要配置多个地址映射。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。如有错误或未考虑完全的地方,望不吝赐教。
原文链接:https://blog.csdn.net/csdnluolei/article/details/107041110