一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - 詳解SpringMVC注解@initbinder解決類型轉(zhuǎn)換問題

詳解SpringMVC注解@initbinder解決類型轉(zhuǎn)換問題

2021-04-12 09:21aheizi Java教程

本篇文章主要介紹了詳解SpringMVC注解@initbinder解決類型轉(zhuǎn)換問題,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

在使用SpringMVC的時候,經(jīng)常會遇到表單中的日期字符串和JavaBean的Date類型的轉(zhuǎn)換,而SpringMVC默認(rèn)不支持這個格式的轉(zhuǎn)換,所以需要手動配置,自定義數(shù)據(jù)的綁定才能解決這個問題。

在需要日期轉(zhuǎn)換的Controller中使用SpringMVC的注解@initbinder和Spring自帶的WebDateBinder類來操作。

WebDataBinder是用來綁定請求參數(shù)到指定的屬性編輯器.由于前臺傳到controller里的值是String類型的,當(dāng)往Model里Set這個值的時候,如果set的這個屬性是個對象,Spring就會去找到對應(yīng)的editor進(jìn)行轉(zhuǎn)換,然后再SET進(jìn)去。

代碼如下:

?
1
2
3
4
5
6
@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的配置文件加上

?
1
2
3
4
5
6
7
8
9
10
<!-- 解析器注冊 -->
<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"/>

換種寫法

?
1
2
3
4
5
6
7
<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自己提供了大量的實(shí)現(xiàn)類,諸如CustomDateEditor ,CustomBooleanEditor,CustomNumberEditor等許多,基本上夠用。

使用時候調(diào)用WebDataBinder的registerCustomEditor方法

registerCustomEditor源碼:

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

第一個參數(shù)requiredType是需要轉(zhuǎn)化的類型。

第二個參數(shù)PropertyEditor是屬性編輯器,它是個接口,以上提到的如CustomDateEditor等都是繼承了實(shí)現(xiàn)了這個接口的PropertyEditorSupport類。

我們也可以不使用他們自帶的這些編輯器類。

我們可以自己構(gòu)造:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import org.springframework.beans.propertyeditors.PropertiesEditor;
public class DoubleEditor extends PropertyEditorSupport {
  @Override
  public void setAsText(String text) throws IllegalArgumentException {
    if (text == null || text.equals("")) {
      text = "0";
    }
    setValue(Double.parseDouble(text));
  }
 
  @Override
  public String getAsText() {
    return getValue().toString();
  }
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

原文鏈接:https://www.cnblogs.com/aheizi/p/5440884.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 香蕉动漫库| 草久网| 亚洲成色爱我久久 | 性欧美13处丶14处 | 国产午夜一区二区在线观看 | beeg日本高清xxxx18 | 奇米影视在线观看 | 天美传媒在线视频 | 日本成人高清视频 | 91在线亚洲精品一区 | 日韩在线视精品在亚洲 | 欧美日本一道高清免费3区 欧美人做人爱a全程免费 | 亚洲欧美日韩另类在线一 | 91麻豆精品国产自产在线 | 久草草在线视视频 | 韩国情事伦理片观看地址 | 女人特黄大aaaaaa大片 | 精品在线播放 | 四虎精品成人免费视频 | 国产黄频在线观看高清免费 | 亚洲 日本 天堂 国产 在线 | 亚洲精品一区二区久久这里 | 视频一区二区国产 | 成人在线免费播放 | 亚洲AV人无码综合在线观看蜜桃 | 日本xxxx18vr69 | 美女脱得一二净无内裤全身的照片 | 倩女还魂在线观看完整版免费 | 青青草原伊人网 | 好女孩韩剧免费观看 | 亚洲欧美国产精品久久久 | 国产精品成人亚洲 | 欧美整片在线 | 女教师巨大乳孔中文字幕免费 | 娇妻被又大又粗又长又硬好爽 | 天堂资源wwww在线看 | 深夜免费在线视频 | 扒开老师两片湿漉的肉 | 毛片 ftp| 精品无码乱码AV | 97青草香蕉依人在线播放 |