91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringMVC注解@initbinder如何解決類型轉換問題

發布時間:2021-07-28 13:55:05 來源:億速云 閱讀:108 作者:小新 欄目:編程語言

小編給大家分享一下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 {
  @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();
  }
}

以上是“SpringMVC注解@initbinder如何解決類型轉換問題”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

成都市| 都昌县| 灵丘县| 西城区| 家居| 名山县| 东明县| 融水| 达尔| 肃南| 镇安县| 高要市| 定日县| 广丰县| 建宁县| 靖州| 台安县| 公安县| 瓮安县| 玉环县| 阳山县| 镇康县| 万山特区| 琼中| 龙里县| 定日县| 桐梓县| 巴东县| 上栗县| 南靖县| 海门市| 万载县| 通榆县| 蒲江县| 福鼎市| 图片| 资溪县| 岗巴县| 惠安县| 稷山县| 玛纳斯县|