springMVC中引數格式化

pucheung發表於2015-04-28

     SpringMVC中的資料編輯器主要用於在資料傳遞過程中的資料型別轉化,例如:我們的前端有一個“2015-04-28”的日期格式的字串,我們在將其傳遞時,直接轉化為我們所需要的Date型別,這是後就需要屬性編輯器。

  在這裡我們仍然使用日期型別轉換為例:

   需要匯入包:joda-time-2.1.jar

   index.jsp

 <form action="date" method="post">
    date:<input type="text" id="date" name="date"/><br/>
    <input type="submit" value="date"/>
    </form>

  Controller

     @InitBinder
protected void initBinder(WebDataBinder wdb)
{
SimpleDateFormat sdf=new  SimpleDateFormat("yyyy-MM-dd");
wdb.registerCustomEditor(Date.class,new CustomDateEditor(sdf,true));
}

       @RequestMapping("/date")
public String date(@RequestParam("date") Date date)
{
System.out.println(date);
return "";
}


  當我們點選按鈕傳送請求傳遞輸入yyyy-MM-dd格式的字串時,就會被識別然後通過引數註解Date型別的引數,就可以實現轉換:public String date(@DateTimeFormat(pattern="yyyy-MM-dd") @RequestParam("date") Date date)。@InitBinder是一個初始化編輯器繫結,會將我們指定的編輯器繫結到該Controller中,因此@InitBinder只在當前的Controller中有效。通過registerCustomEditor註冊一個我們自己定義的日期編輯器,SpringMVC在引數的傳遞過程中,預設是不能識別yyyy-MM-dd格式的資料,因此通過以上方式就實現引數型別的轉換。

    其實對日期格式的轉換在SpringMVC提供了一個非常簡單方式那就是是使用@DateTimeFormat註解,將 該註解註釋到接受引數的形參前面,然後指定其屬性pattern的值,“yyyy-MM-dd” 或"yyyy/MM/dd"就可以識別前端傳遞的引數。

   在這裡提一下@RequestParam(value=“”) 的過程:當引數傳遞過來會嘗試將字串轉換為我們所需要的型別(例如int、long),如果能轉化(springMVC內建),則轉化成功,否則就會報錯。

    在SpringMVC中提供了豐富的引數格式化,DateTimeFormetter NumberFormetter可以參考

        http://www.cnblogs.com/liukemng/p/3748137.html

      

   因此,對於一些特殊的轉換我們主需要在引數使用註解,並且制定pattern。





    

相關文章