[英]How spring InitBinder works?
我在網上閱讀了有關InitBinder的信息,但不清楚其工作原理。 根據我的理解,它可以用於執行交叉關注,例如設置驗證器,將請求參數轉換為某些自定義對象等
在網上遇到了以下示例
@InitBinder
public void initBinder(WebDataBinder binder) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
}
處理程序方法是
public void handlerMethod(@RequestParam("date") Date date) {
}
好處是,在DispatcherServlet調用handlerMethod之前,它將請求參數轉換為Date對象(否則開發人員必須將它作為handleMethod)。 對?
我的問題是spring如何知道哪個請求參數需要轉換為Date對象?
說我的請求字符串是/someHandler/name?user=Brian&userCreatedDate=2011-01-01&code=aaaa-bb-cc
那么spring如何知道它必須轉換userCreatedDate而不是其他兩個參數,即code / user?
它知道基於數據類型將轉換應用於哪些請求參數。
通過做這個:
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
您正在為Date
類型注冊編輯器。
所以如果你有
@RequestMapping("/foo")
public String foo(@RequestParam("date") Date date,
@RequestParam("name") String name) {
// ...
}
然后,編輯器將僅應用於第一個參數,因為第二個參數是String
而不是Date
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.