@PathVariable接收两个参数
首先
@PathVariable无法接收对象,但是可以接收多个值
1
2
3
4
5
6
7
8
9
10
11
12
13
|
var data = obj.data;
if (obj.event === 'edit' ){
//var tmpData = encodeURI(JSON.stringify(data));
layer.open({
//layer提供了5种层类型。可传入的值有:0(信息框,默认)1(页面层)2(iframe层)3(加载层)4(tips层)
type: 2 ,
title: "配置摄像头信息" ,
area: [ '750px' , '560px' ],
content:
[ '${pageContext.request.contextPath}/sectionInfo/configAntennaIndex/' +data.dmmc+ '/' +data.cdh+ '' , 'no' ]
//iframe的url,no代表不显示滚动条
});
}
|
在Controller这样接收
1
2
3
4
5
|
@RequestMapping ( "configAntennaIndex/{dmmc}/{cdh}" )
public ModelAndView configAntennaIndex( @PathVariable String dmmc, @PathVariable String cdh){
//...
}
|
记一个使用@PathVariable的坑
发现问题
前端路径拼接用户名,因为用户名中是带'.‘这个字符的。类似'Oliver.wang'。前端浏览器F12,发现路径正常拼接'xxxxxx/Oliver.wang?xxx=xxx',后端代码发现,controller层的参数,接收到只有'Oliver'。
解决过程
在方法中多加了一个参数(xxx,HttpServletRequest request){},输出request.ServletPath(),发现路径正常'/xxx/xxx/Oliver.wang'。
解决方案
第一种
加上 {:.+} ,比如 @getMapping(“xxx/{name:.+}”)
第二种
UrlEncode
第三种
request.ServletPath() 拿到路径截取字符串
第四种
不拼接路径,改成'xxxxx?name=Oliver.wang' 请求参数
以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/xhf852963/article/details/84585779