我正在尝试向我创建的 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
Controller 方法:
@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;
}
最佳答案
您需要在方法头中声明一个字符串,然后在方法中解析日期。
您还应注意 Date 的字符串构造函数已弃用 https://docs.oracle.com/javase/8/docs/api/java/util/Date.html#Date-java.lang.String- .文档建议使用 DateFormat。好吧,这是假设您使用的是 Java 8。
关于带有日期的 Java Spring RESTFul API 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34185986/