SpringBoot#InitBinder


__震驚!!我的天啦,OMG!!

 


 

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

2. initBinder放在RestControllerAdvice注解標注的類中,可以對所有控制器起作用。

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

4. 可以自定義自己的Editor然后再InitBinder注冊,以完成一些操作。

 


 

 

demo:

    @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());
    }

  

_

 

demo2

 

import org.springframework.beans.propertyeditors.PropertiesEditor;

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

  

 

 

 

 

_

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM