Laydate日期乱码

     在做项目的过程中,遇到了这么一个问题,就是在分页的基础上,按照日期查询的时候,点击第一页之外的每一页,日期控件显示乱码问题,如图:

第一页:

Laydate日期乱码_第1张图片

第二页:

Laydate日期乱码_第2张图片

     在初步做这个功能的时候,点击按照日期查询,或者其他条件查询第一页都没有问题,也就没有注意当点击第二页或者更多页的时候,按照条件查询的正确与否。当测试人员将此Bug指派给我的时候,我立马想到的就是Laydate控件的问题,但是从何下手?之前考虑的是自己写的控件代码格式没有起作用,但是如果没有起作用,为何第一页正常呢?先把自己的控件代码附上:

<label>下单时间:</label>
<input type="text" name="search_GTE_createDate" style="width:160px;"
          class="laydate-icon"
          onclick="laydate({istime: true, format: 'YYYY-MM-DD'})"
          value="${startDate}">-
<input type="text" name="search_LTE_createDate" style="width:160px;"
          class="laydate-icon"
          onclick="laydate({istime: true, format: 'YYYY-MM-DD'})"
          value="${endDate}">  
     所以JSP想不出解决办法,就得从传值Controller入手了:其实很简单就是因为当翻页的时候日期乱码,传值就是乱码的,显示到JSP当然也就是乱码的了。所以只要在Controller页面转换一下代码就好:

代码如下:

// 开始日期
        //从页面获取值
        String date = (String) searchParams.get("GTE_createDate");
        //判断是否为空
        if (date != null) {
            SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.US);

            Date d = null;
            try {
                //进行判断日期格式是否正确
                d = sdf.parse(date);
            } catch (ParseException e) {
                e.printStackTrace();
            }
            //判断获取的是否是正常日期
            if (d != null) {
                sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//                String objStartCreate = sdf.format(d);
                date = sdf.format(d);

                if (date != null) {
                    searchParams.remove("GTE_createDate");
                    searchParams.put("GTE_createDate", DateUtil.strToDate(date.trim() + " 00:00:00"));
                }
            } else {
                //如果是正常格式,则正常输出
                searchParams.remove("GTE_createDate");
                searchParams.put("GTE_createDate", DateUtil.strToDate(date.trim() + " 00:00:00"));
            }
        }

     这样,再传回页面的时候则进行了转换,显示正常格式,截图如下:

Laydate日期乱码_第3张图片

     所以遇到问题多方位思考,用心去解决,其实很简单。

你可能感兴趣的:(乱码,Laydate日期控件)