前端用time-picker选择的timestamp利用JSON传到后端,是为一长段数字的String类型的字段,后端接口利用Timestamp读的时候,nested exception is org

完整报错:

2021-08-10 19:13:45.756  WARN 9104 --- [nio-9000-exec-8] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.method.annotation.MethodArgumentTypeMismatchException: Failed to convert value of type 'java.lang.String' to required type 'java.sql.Timestamp'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [java.sql.Timestamp] for value '1628179200000'; nested exception is java.lang.IllegalArgumentException: Timestamp format must be yyyy-mm-dd hh:mm:ss[.fffffffff]]

问题分析:前端利用JSON传到后端的时候,属于是String类型,但是后端是利用Timestamp接收的,所以他分析不出来这个String类型的。

所以想到可以后端接口用String接收,然后将String类型的在后端转换为Timestamp类型的再进行后续的过程。代码如下

        Timestamp t1 = Timestamp.valueOf(workplantime);
        Timestamp t2 = Timestamp.valueOf(planfinishtime);

但是,后端又报错 格式错误

java.lang.IllegalArgumentException: Timestamp format must be yyyy-mm-dd hh:mm:ss[.fffffffff]

===========终于解决了 啊啊啊啊啊

问题分析:

Timestamp.valueOf(***)

这个valueOf函数的里面应该是"YYYY-MM-DD HH:mm:ss"这样的字符串,而我给他的的字符串是一长段数字'1628179200000',所以他自然会报错

解决办法

思考加查阅资料得,因此后端还是接收前端的String类型,然后将这个String类型转换为Long类型,可以将Long类型的13位毫秒时间撮变成Timestamp类型,代码如下

public String getberthplanList(QueryInfo queryInfo, String workplantime, String planfinishtime){
        long time1 = Long.valueOf(workplantime);
        long time2 = Long.valueOf(planfinishtime);
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String timestart = df.format(time1);
        Timestamp ts = Timestamp.valueOf(timestart);
        String timeend = df.format(time2);
        Timestamp te = Timestamp.valueOf(timeend);
        return portService.getberthplanList(queryInfo,ts,te);
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在UniApp中,可以使用uni-data-picker级联选择器来实现数据的回显以下是一种实现方法: 1 在后端接口返回的数组数据中,每个元素应包含一个唯一的标识字段和一个用于显示的字段。例如,可以使用id字段作为唯一标识,name字段作为显示内容。 2. 在前端页面中,使用uni-data-picker组件,并设置其bindchange事件监听器。 3. 在页面的data中定义一个空数组selectedItems,用于存储用户选择的数据。 4. 在bindchange事件监听器中,获取到用户选择的数据,并将其存储到selectedItems数组中。 5. 在uni-data-picker组件上设置value属性为selectedItems数组,即可实现数据的回显。 以下是一个示例代码: ```html <template> <view> <uni-data-picker @change="handleChange" :value="selectedItems"> <picker-view-column :values="data" /> </uni-data-picker> </view> </template> <script> export default { data() { return { data: [], // 后端返回的数组数据 selectedItems: [], // 存储用户选择的数据 }; }, methods: { handleChange(e) { // 获取用户选择的数据 this.selectedItems = e.detail.value; }, }, }; </script> ``` 在上述示例中,`data`是后端返回的数组数据,`selectedItems`是用于存储用户选择数据的数组。在`handleChange`方法中,将用户选择的数据存储到`selectedItems`中。通过将`selectedItems`数组赋值给uni-data-picker组件的value属性,实现数据的回显。 请注意,以上示例只是简单示例,实际情况中可能需要根据后端返回的数据结构进行适当的调整和处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值