java后端向jsp传日期,jsp调用数据错误问题

发布于:2024-07-13 ⋅ 阅读:(165) ⋅ 点赞:(0)

问题

今天遇到个bug,后端使用request.setAttribute("key", value);startDateendDate两个日期字符串传递到jsp中,使jsp可以获取到日期进行查询操作。但接口拼接的参数startDate2017endDate1986,让人百思不得其解。

request.setAttribute("startDate", "2024-06-01");
request.setAttribute("endDate", "2024-07-31");

尝试将jsp中 var startTime = ${startDate}; var endTime = ${endDate};加双引号 var startTime = "${startDate}"; var endTime = "${endDate}";,发现获取到的值变为正常,但不知其所以然。

原理

不加引号会导致表达式 ${startDate}${endDate} 被解析为 JavaScript 代码的一部分,而不是字符串。在此问题中,因js中没有加双引号定义传过来的值为字符串,默认js认为是数值类型,将2024-06-01判断为数值计算,计算后得出2017.

源码

<script type="text/javascript">
    //关闭加载状态
    $(top.hangge());
    var drugsCode = ${drugsCode};
    var supplierCode = ${supplierCode};
    var startTime = ${startDate};
    var endTime = ${endDate};
    layui.use(['table', 'layer'], function () {
        var table = layui.table, layer = layui.layer;
        table.render({
            elem: '#supplierDetail',
            url: '/oms/xx/xxx/xxxx/', //
            page: {  
                layout: ['prev', 'page', 'next', 'countPage', 'count', 'skip'], //自定义分页布局
                groups: 2,//只显示 1 个连续页码
                first: false, //不显示首页
                last: false//不显示尾页
            },
            height: 'full-150',
            toolbar: true,
            defaultToolbar: ['print'],
            limits: [10000],
            limit: 10000,
            cols: [[{type: 'numbers', title: '序号'},
            ......
            ]],
            id: 'supplierDetail',
            where: {
                drugsCode: drugsCode , 
                supplierCode: supplierCode , 
                startDate: startTime , 
                endDate: endTime
            },
            done: function (res) {
            }
        });
    });
</script>
@Override
	public List queryShortageSupplierDetail(String drugsCode, String supplierCode,String startDate, String endDate) {
		Map<String,String> param = new HashMap();
		param.put("drugsCode",drugsCode);
		param.put("supplierCode",supplierCode);
		param.put("startDate",startDate);
		param.put("endDate",endDate);
		return dao.select("AccompanyingOrderMapper.queryShortageSupplierDetail",param);
	}   

网站公告

今日签到

点亮在社区的每一天
去签到