2015-12-09 107 views
1

我正在嘗試向我創建的api發出請求。我必須提供一個名稱(字符串)和一個日期間隔(兩個日期)。 我收到以下錯誤:Java Spring REST完全API請求日期

Failed to convert value of type 'java.lang.String' to required type 'java.util.Date'; nested exception is java.lang.IllegalArgumentException: Could not parse date: Unparseable date: "20151211"

我已經嘗試了很多的日期格式,但沒有工作。 請求的URL是這樣的:

http://localhost:8080/api/avaiableRoomTypes?hotel=Marriot&start=20151211&end=20151213 

控制器方法:

@RequestMapping(value = "api/avaiableRoomTypes", method = RequestMethod.GET) 
public List<Room> CheckRoomTypeAvailability(@RequestParam(value="hotel") String name,@RequestParam(value="start") Date start,@RequestParam(value="end") Date end) { 
    Hotel hotel = hotels.findByName(name); 
    Iterable<RoomType> roomtypesList = roomtypes.findByhotel(hotel); 
    Iterator<RoomType> roomtypesIt = roomtypesList.iterator(); 
    List<Room> roomsList = new ArrayList<Room>(); 
    while(roomtypesIt.hasNext()){ 
     RoomType rt = roomtypesIt.next(); 
      roomsList.addAll(rooms.findWithDates(start, end, rt.getId())); 
    } 

    return roomsList; 

} 
+0

什麼是你的控制器方法看起來像模式? –

+0

@RossiRobinsion我加了 – MMrj

+1

這可能會有幫助:http://stackoverflow.com/questions/9038005/spring-3-1-json-date-format回答@waqas –

回答

1

你可以只添加@DateTimeFormat註釋你的參數與您使用

@RequestMapping(value ="/test") 
public @ResponseBody Date test(@RequestParam("start")@DateTimeFormat(pattern="yyyyMMdd") Date start){ 
    System.out.println(start); 
    return start; 
    }