__震驚!!個人天啦,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