BootStrap a标签模态框传值缺失问题及解决

/ JavaCode / 没有评论 / 80浏览
转载请标明出处:
原文首发于:http://www.zhangruibin.com
本文出自RebornChang的博客

博主最近在做项目上的一个小功能,遇到一个问题,解决后来记录下经过,如果有人遇到同样问题,希望看到有益。

首先说下项目基础架构:后端SSM,前端jQuery+bootStrop。

问题:在使用Bootstrap的模态框进行a标签跳转时,a标签文本前台打印出来无误,但是后台接收是部分参数缺失。

a标签定义如下:

<a
                           href="${base}/....../${content.id}?interfaceMonitorStartTime=${query.interfaceMonitorStartTime}&interfaceMonitorEndTime=${query.interfaceMonitorEndTime}"
                           data-toggle="modal" data-backdrop="static" data-target="#myModal">
                       <span class="glyphicon glyphicon-search">查看详情</span>
                   </a>

博主想要进行传递的参数类型是这样的:

......?interfaceId=10001&starTime=2019-01-01 00:00:00&endTime=2019-01-01 23:59:59 后台使用springMVC接收链接,使用@ModelAttribute("query")Object query进行多参数的接收。

出现的情况: 因为博主是使用bean来接收前台的参数,interfaceId可以接收到值为10001。但是:starTime的值为2019-01-01,endTime的值为null。

也就是说,通过这个bootstrap的a标签进行链接的跳转时有部分参数经过封装后跳转引起了部分参数缺失。

那么来分析一下原因吧:

可能性1: 链接过长,后面的参数被截取掉了。

可能性2: 参数里面包含空格,空格后的被截掉了。

基于上面的两种猜测,博主开始进行针对性的实验。

实验1: 手动拼接不包含空格的长字符串进行标签跳转,结果可以得到全部的字符串,所以,应该不死链接过长被截掉。

实验2: 将我想传递的两个时间字符串中的空格去掉传输,实验后,后台成功获取到参数。

结论: 在使用bootStrap的data-toggle="modal" data-backdrop="static" data-target="#myModal"给指定参数域赋值的时候,a标签的href中不能包含空格,否则空格后的参数将被截取无法传递,可在将指定参数中的空格去掉,或者替换为特殊标识符,然后在接收到条件参数后对指定的数据进行处理(比如将空格补上去,或者将特殊标识符替换成空格)。

通篇都是文字,下面几张图是博主遇到这问题的处理前后截图:

1:想要传递的时间参数 想要传递的时间参数 2:直接获取时间进行传递的效果 直接获取时间进行传递的效果 3:将时间字符串中间的空格去掉之后再传递 将时间字符串中间的空格去掉之后再传递 4:将处理后的时间重新处理得到需要的时间格式 将处理后的时间重新处理得到需要的时间格式