您好,登錄后才能下訂單哦!
這篇文章主要介紹“SpringBoot表單提交全局日期格式轉換器如何實現”,在日常操作中,相信很多人在SpringBoot表單提交全局日期格式轉換器如何實現問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”SpringBoot表單提交全局日期格式轉換器如何實現”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
分析
?當前臺的提交數據的Content-Type
為以下情況
application/x-www-form-urlencoded
: 表單提交。
multipart/form-data
: 二進制流提交,多用于上傳文件。
的時候,使用此轉換方式。
? 會用到全局日期轉換工具類DateUtil.formatDateStrToDateAllFormat()
實現Spring
的Converter
接口,指定將String
轉換為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
注解會攔截所有controller
請求,配合@InitBinder
注解,在參數封裝到實體類之前將String日期
轉換為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); } }); } }
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) { // 通過lombda表達式創建WebBindingInitializer對象 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; } }
?前臺JS
const jsonData = { // ????待處理的日期字符串數據 birthday: '20210105', nameAA: 'jiafeitian', hobby: '吃飯' }; $.ajax({ url: '后臺url', type: 'POST', // 對象轉換為json字符串 data: jsonData, // 指定為表單提交 contentType: "application/x-www-form-urlencoded", success: function (data, status, xhr) { console.log(data); } });
?后臺Form
import lombok.Data; import java.util.Date; @Data public class Test15Form { private String name; private String hobby; private String address; // 用來接收的Date類型的數據 private Date birthday; }
可以看到前臺提交的日期字符串被轉換為Date格式了
到此,關于“SpringBoot表單提交全局日期格式轉換器如何實現”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。