簡體   English   中英

Spring InitBinder如何工作?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM