溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

SpringBoot表單提交全局日期格式轉(zhuǎn)換器如何實(shí)現(xiàn)

發(fā)布時(shí)間:2023-04-17 11:49:28 來(lái)源:億速云 閱讀:139 作者:iii 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要介紹“SpringBoot表單提交全局日期格式轉(zhuǎn)換器如何實(shí)現(xiàn)”,在日常操作中,相信很多人在SpringBoot表單提交全局日期格式轉(zhuǎn)換器如何實(shí)現(xiàn)問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”SpringBoot表單提交全局日期格式轉(zhuǎn)換器如何實(shí)現(xiàn)”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

分析

?當(dāng)前臺(tái)的提交數(shù)據(jù)的Content-Type為以下情況

  • application/x-www-form-urlencoded: 表單提交。

  • multipart/form-data: 二進(jìn)制流提交,多用于上傳文件。

的時(shí)候,使用此轉(zhuǎn)換方式。

? 會(huì)用到全局日期轉(zhuǎn)換工具類(lèi)DateUtil.formatDateStrToDateAllFormat()

一. 實(shí)現(xiàn)Converter<S, T>接口的方式

實(shí)現(xiàn)SpringConverter接口,指定將String轉(zhuǎn)換為Date

import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;

import java.util.Date;

@Component
public class GlobalFormStrToDateConvert implements Converter<String, Date> {

    @Override
    public Date convert(String dateStr) {
        try {
            return DateUtil.formatDateStrToDateAllFormat(dateStr);
        } catch (Exception e) {
            return null;
        }
    }
}

二. 全局@ControllerAdvice + @InitBinder注解的方式

@ControllerAdvice注解會(huì)攔截所有controller請(qǐng)求,配合@InitBinder注解,在參數(shù)封裝到實(shí)體類(lèi)之前將String日期轉(zhuǎn)換為Date日期。

import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.InitBinder;

import java.beans.PropertyEditorSupport;
import java.util.Date;

@ControllerAdvice
public class GlobalFormStrToDateConvert {

    @InitBinder
    protected void dateStrToDate(WebDataBinder binder) {

        binder.registerCustomEditor(Date.class, new PropertyEditorSupport() {

            @Override
            public void setAsText(String dateStr) throws IllegalArgumentException {
                Date date = DateUtil.formatDateStrToDateAllFormat(dateStr);
                setValue(date);
            }
        });
    }
}

三. RequestMappingHandlerAdapter的方式

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.bind.support.WebBindingInitializer;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter;

import java.beans.PropertyEditorSupport;
import java.util.Date;

@Configuration
public class GlobalFormStrToDateConvert {

    @Bean
    public RequestMappingHandlerAdapter webBindingInitializer(RequestMappingHandlerAdapter requestMappingHandlerAdapter) {
		
		// 通過(guò)lombda表達(dá)式創(chuàng)建WebBindingInitializer對(duì)象
        WebBindingInitializer webBindingInitializer = binder -> binder.registerCustomEditor(Date.class, new PropertyEditorSupport() {
            @Override
            public void setAsText(String dateStr) {
                Date date = DateUtil.formatDateStrToDateAllFormat(dateStr);
                setValue(date);
            }
        });
        requestMappingHandlerAdapter.setWebBindingInitializer(webBindingInitializer);
        return requestMappingHandlerAdapter;
    }
}

四. 效果

?前臺(tái)JS

const jsonData = {
	// ????待處理的日期字符串?dāng)?shù)據(jù)
    birthday: '20210105',
    nameAA: 'jiafeitian',
    hobby: '吃飯'
};

$.ajax({
    url: '后臺(tái)url',
    type: 'POST',
    // 對(duì)象轉(zhuǎn)換為json字符串
    data: jsonData,
    // 指定為表單提交
    contentType: "application/x-www-form-urlencoded",
    success: function (data, status, xhr) {
        console.log(data);
    }
});

?后臺(tái)Form

import lombok.Data;
import java.util.Date;

@Data
public class Test15Form {

    private String name;

    private String hobby;

    private String address;
	
	// 用來(lái)接收的Date類(lèi)型的數(shù)據(jù)
    private Date birthday;
}

可以看到前臺(tái)提交的日期字符串被轉(zhuǎn)換為Date格式了

SpringBoot表單提交全局日期格式轉(zhuǎn)換器如何實(shí)現(xiàn)

到此,關(guān)于“SpringBoot表單提交全局日期格式轉(zhuǎn)換器如何實(shí)現(xiàn)”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI