easyui,springboot项目遇到一些小问题
时间问题easyui-datebox
后端数据类型为2017/7/5 11:09:57
- mybatis plus自动生成代码将该时间字段定义为 LocalDateTime;
- 前端需要传递的是2017-7-5无小时类型,使用easyui-datebox;
3.DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime validSt = LocalDateTime.parse(conctBacVo.getValidSt(),df); coactBic.setVadSt(validStart);
(最开始使用这种情况【而且还得把实体字段改成String类型,可以实现新增时间和回显时间】)-但代码审查被说这种方式不好 - 于是把时间字段类型改成Date,并且在字段上添加注解
@DateTimeFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8"):**这个貌似可以两用** private Date siggDate;
; - DateTimeFormat 是将从前端获取的STRING字段自动转为Date类型; 要转为LocalDateTime需要这样写@DateTimeFormat(pattern = “yyyy-MM-dd HH:mm”)
- JsonFormat是将从后端查询道得字段转为前端需要的YYYY-MM-DD形式(但是,获取到的为Mon Jan 02 00:00:00 cst 2017。不是easyui-datebox能显示的,所以 回显失败-一直显示当天日期);
- 页面需重写方法将Mon Jan 02 00:00:00 cst 2017转为yyyy-MM-dd(
如注释处写,会回显成功,但发现新增界面的选择时间字段没法选了-供选择时间的日历不出来);
改成这样写,时间回显和新增选择时间都成功。
总结:
@JsonFormat 把后端获取到的时间格式 转换为固定格式的String 供前端展示
@DateTimeFormat(pattern = “yyyy-MM-dd”)把前端string时间格式 转换为固定格式的LocalDateTime(Date) 供后端使用
前端时间格式为 年月
报错:参数校验失败
前端是 2023-01 (String)的年月格式,后端是2023-03-01 (数据库类型:Date)的年月日格式
代码中的格式是
@DateTimeFormat(pattern = “yyyy-MM”)
private localDate planDateEnd;
思路:报错参数校验,string【2024-03】转 localDate(localDateTime)错误
要将前端年月时间转为数据库可以接受的模式
@DateTimeFormat(pattern = “yyyy-MM”)
yyyy-MM:为收取的前端的模式,后端会转换为 英文时间 的格式传到后端
后端收取到后转换格式-需要注意此时已经是Date类型,需先转为char
<![CDATA[ and p.PLAN_DATE <= to_date(to_char(#{prodPlan.planDateEnd},'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss') ]]>
改为
@DateTimeFormat(pattern = “yyyy-MM”)
private Date planDateEnd;
参数可以校验成功