最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java日期接收?qǐng)?bào)錯(cuò):could?not?be?parsed,?unparsed?text?found?at?index?10解決辦法

 更新時(shí)間:2024年01月28日 15:27:11   作者:一碗情深  
在做Java開發(fā)時(shí)肯定會(huì)碰到傳遞時(shí)間參數(shù)的情況,這篇文章主要給大家介紹了關(guān)于Java日期接收?qǐng)?bào)錯(cuò):could?not?be?parsed,?unparsed?text?found?at?index?10的解決辦法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

問題背景

使用 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ò)了,那么解決日期問題就簡(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ù)的問題:

前提:

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ò),正常日期格式字符串沒問題;

2、java.util.date:空字符串解析沒問題,正常日期格式字符串用于查詢時(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)文章

最新評(píng)論

甘南县| 偃师市| 景洪市| 侯马市| 海盐县| 辽源市| 武清区| 正蓝旗| 平谷区| 农安县| 慈溪市| 上虞市| 塔河县| 大厂| 南郑县| 波密县| 焦作市| 弥勒县| 宁陵县| 关岭| 榆树市| 松溪县| 海南省| 奉节县| 德江县| 金堂县| 长兴县| 霍林郭勒市| 建始县| 广昌县| 修水县| 武汉市| 苏尼特左旗| 保康县| 尤溪县| 彭泽县| 会宁县| 怀柔区| 江山市| 乐业县| 蓝田县|