Java日期接收?qǐng)?bào)錯(cuò):could?not?be?parsed,?unparsed?text?found?at?index?10解決辦法
問(wèn)題背景
使用 Element-UI 的 el-date-picker 組件 將日期轉(zhuǎn)給Java,Java報(bào)錯(cuò)
java.time.format.DateTimeParseException: Text ‘2024-01-03T16:00:00.000Z’ could not be parsed, unparsed text found at index 10
代碼
Vue
<el-date-picker v-model="form.removalDate" type="date" placeholder="選擇日期" style="width: 300px" />
Java實(shí)體類
@Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) public class AppProjects implements Serializable { @TableField(updateStrategy = FieldStrategy.IGNORED) @JsonFormat(pattern = "yyyy-MM-dd") private Date removalDate; }
Java控制層
import com.alibaba.fastjson.JSONObject; public Object update(@RequestBody JSONObject object) { AppProjects appProjects = object.toJavaObject(AppProjects.class); boolean update = appProjectsService.updateById(appProjects); return update; }
當(dāng)執(zhí)行 toJavaObject
方法時(shí),報(bào)錯(cuò)如下
java.time.format.DateTimeParseException: Text ‘2024-01-03T16:00:00.000Z’ could not be parsed, unparsed text found at index 10
修改Java控制層
更改為使用實(shí)體類接收參數(shù) @RequestBody AppProjects appProjects
public Object update(@RequestBody AppProjects appProjects) { boolean update = appProjectsService.updateById(appProjects); return update; }
執(zhí)行方法時(shí)不報(bào)錯(cuò),但是日期的值卻比實(shí)際少一天,為什么呢?
因?yàn)榍岸藢?shí)際選擇日期為 ‘2024-01-04’ ,傳值為 ‘2024-01-03T16:00:00.000Z’,該時(shí)區(qū)不是東八區(qū),使用實(shí)體類接收時(shí)去掉了時(shí)分秒,導(dǎo)致日期保存為 ‘2024-01-03’
已經(jīng)不報(bào)錯(cuò)了,那么解決日期問(wèn)題就簡(jiǎn)單了!
解決方法
在 el-date-picker組件 使用屬性 value-format="yyyy-MM-dd"
將綁定的格式不指定為 Date 對(duì)象,綁定的值會(huì)轉(zhuǎn)為 string 對(duì)象,那么實(shí)際選擇哪一天的日期,就是 yyyy-MM-dd
格式的字符串啦!這樣后端就能正確接收日期了
<el-date-picker v-model="form.removalDate" type="date" value-format="yyyy-MM-dd" placeholder="選擇日期" style="width: 300px" />
補(bǔ)充:java后端接收前端傳遞的日期參數(shù)為空字符串時(shí)報(bào)錯(cuò)
一、關(guān)于接收前端傳遞的日期參數(shù)的問(wèn)題:
前提:
Date類型的屬性上添加了以下注解:
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd") @JSONField(format = "yyyy-MM-dd")
1、java.sql.date:空字符串解析報(bào)錯(cuò),正常日期格式字符串沒(méi)問(wèn)題;
2、java.util.date:空字符串解析沒(méi)問(wèn)題,正常日期格式字符串用于查詢時(shí)報(bào)錯(cuò);
二、方案:
1、Controller層添加以下方法,自定義解析參數(shù)(只在該Controller層生效)
@InitBinder public void initBinder(WebDataBinder binder){ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); // spring提供的日期解析器(格式化,是否允許為空)選擇true則將空字符串解析為null CustomDateEditor customDateEditor = new CustomDateEditor(simpleDateFormat, true); // 為Date類型的屬性注冊(cè)解析器 binder.registerCustomEditor(Date.class, customDateEditor); }
2、java.util.date用于查詢時(shí)格式化為yyyy-MM-dd
3、前端傳遞正確的日期/不傳遞該參數(shù)
總結(jié)
到此這篇關(guān)于Java日期接收?qǐng)?bào)錯(cuò):could not be parsed, unparsed text found at index 10解決辦法的文章就介紹到這了,更多相關(guān)Java日期接收?qǐng)?bào)錯(cuò)could not be parsed內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Mybatis常用分頁(yè)插件實(shí)現(xiàn)快速分頁(yè)處理技巧
這篇文章主要介紹了Mybatis常用分頁(yè)插件實(shí)現(xiàn)快速分頁(yè)處理的方法。非常不錯(cuò)具有參考借鑒價(jià)值,感興趣的朋友一起看看2016-10-10Java FTPClient連接池的實(shí)現(xiàn)
這篇文章主要介紹了Java FTPClient連接池的實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-06-06Spring Bean三級(jí)緩存機(jī)制的技術(shù)指南
在 Spring 框架中,Bean 的創(chuàng)建和管理是容器的核心功能之一,了提高性能,Spring 采用了多級(jí)緩存機(jī)制來(lái)減少不必要的對(duì)象創(chuàng)建和配置,本文將詳細(xì)介紹 Spring 中 Bean 三級(jí)緩存的實(shí)現(xiàn)原理,并通過(guò)代碼示例幫助你理解這個(gè)機(jī)制的工作方式,需要的朋友可以參考下2025-04-04springboot config 攔截器使用方法實(shí)例詳解
本文介紹Spring-Boot中使用攔截器的相關(guān)知識(shí),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2018-05-05SpringBoot 普通類調(diào)用Bean對(duì)象的一種方式推薦
這篇文章主要介紹了SpringBoot 普通類調(diào)用Bean對(duì)象的一種方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11詳解springboot項(xiàng)目啟動(dòng)時(shí)如何排除用不到的bean
使用springboot開(kāi)發(fā)項(xiàng)目,我們有時(shí)候會(huì)排除一些項(xiàng)目里面用不到的bean,不然的話項(xiàng)目啟動(dòng)會(huì)報(bào)錯(cuò),這種情況通常是發(fā)生在什么場(chǎng)景里呢,以及如何解決呢,今天咱們就聊一聊2024-01-01Spring?MVC各種參數(shù)進(jìn)行封裝的方法實(shí)例
這篇文章主要給大家介紹了關(guān)于Spring?MVC各種參數(shù)進(jìn)行封裝的相關(guān)資料,SpringMVC內(nèi)置多種數(shù)據(jù)類型轉(zhuǎn)換器,可以根據(jù)請(qǐng)求中的參數(shù)與后端控制器方法的參數(shù)的關(guān)系為我們實(shí)現(xiàn)簡(jiǎn)單的數(shù)據(jù)封裝,需要的朋友可以參考下2023-06-06