Spring-boot: параметр контроллера LocalDateTime (действительно исчерпан) - PullRequest
0 голосов
/ 09 ноября 2018

Я использую LocalDateTime параметры контроллера для получения дат:

@RequestMapping(
    path = EspaiDocConstants.Endpoints.FO_BOINTERFACE_REQUEST_MAPPING_AUDITS,
    method = RequestMethod.GET,
    produces = MediaType.APPLICATION_JSON_VALUE
)
public Collection<Audit> listAudits(
    @RequestParam(value = "deadline", required = false)
    @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)
        LocalDateTime deadline) {}

Однако он работает с проблемой "No primary or default constructor”.

Согласно этому обходному пути , мне нужно добавить этот код, чтобы избежать этого:

@ModelAttribute
LocalDateTime initLocalDate() {
    return LocalDateTime.now();
}

и затем добавьте @ModelAttribute в мой deadline параметр:

public Collection<Audit> listAudits(
    @RequestParam(value = "deadline", required = false)
    @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)
    @ModelAttribute
        LocalDateTime deadline) {}

Теперь, это не сбой, но мое значение параметра deadline всегда равно LocalDateTime.now(), независимо от значения параметра. Я тестирую с этим запросом:

https://localhost:8080/bo/audits?deadline=2000-10-31T01:30:00.000-05:00

Есть идеи?

1 Ответ

0 голосов
/ 09 ноября 2018

С аннотацией @ModelAttribute на уровне метода вы добавляете и связываете неявное возвращаемое значение метода для каждой модели каждого метода запроса. Таким образом, вам не нужно добавлять объект через model.addAttribute («ключ», значение) в каждый GET, POST, PUT и DELETE -метод.

Таким образом, для вашего случая использования необязательно иметь @ModelAttribute -аннотированный метод.

public Collection<Audit> listAudits(
    @RequestParam(value = "deadline", required = false)
    @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)
    LocalDateTime deadline) { ... }

должно работать.

Но, возможно, необходимо кодировать двоеточие в параметре запроса на стороне клиента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...