2017-01-07 9 views
1

Я пишу интерфейс REST для своего приложения Java MVC. Вот одна функция:Формат LocalDate в запросе Get JAVA

@GetMapping(value = "/restaurant_representation", produces = MediaType.APPLICATION_JSON_VALUE) 
    public RestaurantRepresentation restaurantRepresent(
     @RequestParam(value = "date", required = false) LocalDate date, 
     @RequestParam(value = "id") Integer id) { 
      return date == null ? 
       restaurantRepresentationCompiler.compileRestaurantRepresentation(id, LocalDate.now()) : 
       restaurantRepresentationCompiler.compileRestaurantRepresentation(id, date); 
    } 

Сейчас я тестирую это, и

/отдых/админ/restaurant_representation ID = 1004

это requst обеспечивает правильный результат, но когда я пытаюсь добавить параметр даты

/rest/admin/restaurant_representation? date = 2015-05-05 & ID = 1004

это showes это:

Запрос, отправленный клиентом синтаксически некорректным.

Какой формат LocalDate верен?

ответ

2

Нам нужно использовать @DateTimeFormat(iso = DateTimeFormat.ISO.DATE)

так:

@GetMapping(value = "/restaurant_representation", produces = MediaType.APPLICATION_JSON_VALUE) 
    public RestaurantRepresentation restaurantRepresent(
     @RequestParam(value = "date", required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate date, 
     @RequestParam(value = "id") Integer id) { 
      return date == null ? 
       restaurantRepresentationCompiler.compileRestaurantRepresentation(id, LocalDate.now()) : 
       restaurantRepresentationCompiler.compileRestaurantRepresentation(id, date); 
} 
+1

вы избили меня до ответа :) –

2

Вы должны использовать @DateTimeFormat и указать формат даты, что вы принимающему.

@RequestParam(required = false, value = "date") @DateTimeFormat(pattern="yyyy-MM-dd") LocalDate fromDate