SpringBoot#InitBinder

__震驚!!個人天啦,OMG!!前端

 


 

1. initBinder對我而言的價值在於,經過傳統表單post數據到後端的controller時候,數據類型的自動轉換。好比前端頁面填寫一個日期字符串,經過InitBinder,能夠把日期字符串轉換爲Date對象。避免了手動轉化,或者避免java.lang.IllegalArgumentException異常的產生。java

2. initBinder放在RestControllerAdvice註解標註的類中,能夠對全部控制器起做用。spring

3. initBinder對post的json沒有效果。json

4. 能夠自定義本身的Editor而後再InitBinder註冊,以完成一些操做。後端

 


 

 

demo:ide

@InitBinder
    public void InitBinder(WebDataBinder binder) {
        
        // 前端字符串格式爲yyyy-MM-dd HH:mm:ss 將在此轉換爲Date對象,而後才把轉換的值交給控制器
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        CustomDateEditor dateEditor = new CustomDateEditor(df, true);
        binder.registerCustomEditor(Date.class, dateEditor);
        
        // 對前端傳來的字符串經過TextEditor進行處理,處理完成後交給控制器
        binder.registerCustomEditor(String.class, new TextEditor());
    }

  

_post

 

demo2code

 

import org.springframework.beans.propertyeditors.PropertiesEditor;

public class TextEditor extends PropertiesEditor {
    @Override
    public void setAsText(String text) throws IllegalArgumentException {
        text = //一些業務邏輯
        setValue(text);
    }
}

  

 

 

 

 

_orm

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息