Thymeleaf, Spring MVC, веб-приложение и модули отдыха. карта не может обработать <Fuel>на локальном хосте: 8081 / конечная точка транспорта - PullRequest
1 голос
/ 17 апреля 2020

Здравствуйте, мое приложение разделено на две части, которые имеют обмен данными в json формате web-app <-> service-rest. У меня проблема при попытке использовать localhost: 8081 / транспортная конечная точка. Это должно дать мне транспортный шаблон с данными. Вместо этого я получил ошибку:

 class java.util.LinkedHashMap cannot be cast to class com.epam.brest.courses.model.Fuel (java.util.LinkedHashMap is in module java.base of loader 'bootstrap'; com.epam.brest.courses.model.Fuel is in unnamed module of loader org.eclipse.jetty.webapp.WebAppClassLoader @6ddbbfbb)
at com.epam.brest.courses.web_app.TransportController.getFuelsMap (TransportController.java:198)

Я ищу эту проблему и нахожу, что Джексон не знает, как сериализовать или десериализовать Map в этой части: контроллер транспорта веб-приложения github

я использую эту карту для получения топлива по идентификатору, в шаблоне thymeleaf: шаблон github thymeleaf получает топливо по идентификатору с карты

есть ссылки для rest-app transportController и веб-приложение transportController

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

ps конечная точка localhost: 8081 / топлива работают нормально потому что я не использую карту там.

1 Ответ

1 голос
/ 17 апреля 2020

Я думаю, что проблема в вашем FuelService.

@Override
public List<Fuel> findAll() {
    LOGGER.debug("findAll()");
    ResponseEntity responseEntity = restTemplate.getForEntity(url, List.class);
    return (List<Fuel>) responseEntity.getBody();
}

Не используйте getForEntity (url, List.class), список не безопасен для типов. попробуйте вместо этого:

template.exchange(url, GET, new HttpEntity<>(), newParameterizedTypeReference<List<Fuel>>() { });

Это вернет тип безопасного ResponseEntity, который должен быть в состоянии работать.

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