日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringMVC注解 @initbinder 解决类型转换问题

發布時間:2023/12/18 javascript 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringMVC注解 @initbinder 解决类型转换问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。

使用 SpringMVC 時,常遇到表單中日期字符串和 JavaBean 的 Date 類型的轉換,而 SpringMVC 默認不支持這個格式的轉換,故需要手動配置,自定義數據的綁定才能解決這個問題。
在需要日期轉換的 Controller 中使用 SpringMVC 的注解?@initbinder?和 Spring 自帶的?WebDateBinder?類來操作。
WebDataBinder 是用來綁定請求參數到指定的屬性編輯器.由于前端傳到 controller 里的值是 String 類型的,當往 Model 里 Set這個值的時候,如果 set 的這個屬性是個對象,Spring 就會去找到對應的 editor 進行轉換,然后再 SET 進去。
代碼如下:

@InitBinder public void initBinder(WebDataBinder binder) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); dateFormat.setLenient(false); binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true)); }

需要在SpringMVC的配置文件加上

<!-- 解析器注冊 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <property name="messageConverters"> <list> <ref bean="stringHttpMessageConverter"/> </list> </property> </bean> <!-- String類型解析器,允許直接返回String類型的消息 --> <bean id="stringHttpMessageConverter" class="org.springframework.http.converter.StringHttpMessageConverter"/>

換種寫法

<mvc:annotation-driven><mvc:message-converters><bean class="org.springframework.http.converter.StringHttpMessageConverter"><constructor-arg value="UTF-8"/></bean></mvc:message-converters> </mvc:annotation-driven>

拓展:
spring mvc在綁定表單之前,都會先注冊這些編輯器,Spring自己提供了大量的實現類,諸如CustomDateEditor ,CustomBooleanEditor,CustomNumberEditor等許多,基本上夠用。
使用時候調用WebDataBinder的registerCustomEditor方法
registerCustomEditor源碼:

public void registerCustomEditor(Class<?> requiredType, PropertyEditor propertyEditor) {getPropertyEditorRegistry().registerCustomEditor(requiredType, propertyEditor); }

第一個參數 requiredType 是需要轉化的類型。
第二個參數 PropertyEditor 是屬性編輯器,它是個接口,以上提到的如 CustomDateEditor 等都是繼承了實現了這個接口的PropertyEditorSupport 類。
我們也可以不使用他們自帶的這些編輯器類。
我們可以自己構造:

import org.springframework.beans.propertyeditors.PropertiesEditor;public class DoubleEditor extends PropertyEditorSupport {@Overridepublic void setAsText(String text) throws IllegalArgumentException {if (text == null || text.equals("")) {text = "0";}setValue(Double.parseDouble(text));}@Overridepublic String getAsText() {return getValue().toString();} }

?

轉自:https://www.cnblogs.com/soundcode/p/6519036.html

?

另一舉例文章見 :SpringMvc 注解 @InitBinder 表單多對象精準綁定接收

總結

以上是生活随笔為你收集整理的SpringMVC注解 @initbinder 解决类型转换问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。