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

服務(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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美性一级交视频 | 精品视频中文字幕 | 国产第一页无线好源 | 3d美女触手怪爆羞羞漫画 | 欧洲喷浆乌克兰 | a在线观看欧美在线观看 | 高级黄色片 | 亚洲日本免费 | 美女模特被c免费视频 | 国产精品国产香蕉在线观看网 | 菠萝视频污 | 亚洲欧美国产在线 | caopren免费视频国产 | 波多野结在线观看 | 香蕉视频久久 | 久久精品热99看 | 亚洲国产欧美目韩成人综合 | 91亚洲视频在线观看 | 亚洲大爷操 | heyzo1754北岛玲在线视频 | 国产99热| 亚洲福利电影一区二区? | 全彩调教侵犯h本子全彩妖气he | 青春草在线观看精品免费视频 | 精品欧美日韩一区二区三区 | 精品女同同性视频很黄很色 | 日本aa大片在线播放免费看 | 青青青青久久国产片免费精品 | 欧美日韩国产亚洲一区二区三区 | 4hu四虎永久网址 | 男人天堂资源 | 无码人妻少妇色欲AV一区二区 | 日本不卡高清免费v日本 | 黑人巨大vs北条麻妃在线 | 99视频免费| 欧美粗黑巨大gay | 国产成人免费高清激情明星 | 免费观看日本 | 欧美一区二区三区视视频 | 色亚| 亚洲第成色999久久网站 |