使用@PathVariable接收两个参数
目录
- @PathVariable接收两个参数
- 首先
- 在Controller这样接收
- 记一个使用@PathVariable的坑
- 发现问题
- 解决过程
- 解决方案
- 第一种
- 第二种
- 第三种
- 第四种
@PathVariable接收两个参数
首先
@PathVariable无法接收对象,但是可以接收多个值
var data = https://www.it610.com/article/obj.data; if(obj.event ==='edit'){//var tmpData = https://www.it610.com/article/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这样接收
@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:.+}”)
第二种 【使用@PathVariable接收两个参数】
UrlEncode
第三种 request.ServletPath() 拿到路径截取字符串
第四种 不拼接路径,改成'xxxxx?name=Oliver.wang' 请求参数
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
推荐阅读
- 由浅入深理解AOP
- 【译】20个更有效地使用谷歌搜索的技巧
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- MybatisPlus使用queryWrapper如何实现复杂查询
- iOS中的Block
- Linux下面如何查看tomcat已经使用多少线程
- 使用composer自动加载类文件
- android|android studio中ndk的使用
- 使用协程爬取网页,计算网页数据大小