notbugbutfeature
@notbugbutfeature
Типа вебушник

Как выводить отдельно информацию об определенной записи из БД spring boot?

Добрый вечер, Хабр! Возникла проблема при написании MVC приложения по работе с базой данных ( добавление, удаление, редактирование, просмотр). В общем отдельно таблица прекрасно отображается, как видно на примере
6096b0798d485043450231.jpeg

Я добавил в таблицу кнопку Details, которая должна показывать данные об отдельном клиенте. Все открывается, таблица выводится, но данных о клиенте, что странно, нет
6096b0cae7cd2907505332.jpeg

Ниже предоставлю код файла mustache, контроллера

@GetMapping(value = "/clients/{clientId}")
public String clientDetails(Model model, @PathVariable Integer clientId) {
Optional client = null;
try {
client = clientRepository.findById(clientId);
model.addAttribute("allowDelete", false);
} catch (Exception ex) {
model.addAttribute("errorMessage", ex.getMessage());
}
model.addAttribute("client", client);
return "client-details";
}


6096b13dc7e6a259509223.jpeg

Я просто дико извиняюсь за скриншот кода, знаю, что так не делается, просто еще не до конца разобрался, как делать вопросы в Хабре :)
Я новичок!
Извините за тупой вопрос, я просто только начал разбираться и учиться веб разработке.
Заранее спасибо за ответ!
  • Вопрос задан
  • 40 просмотров
Пригласить эксперта
Ответы на вопрос 1
azerphoenix
@azerphoenix Куратор тега Spring
Java Software Engineer
Добрый день!
Проблемы могут быть в разных местах, как на клиентской стороне, так и на серверной.
Исключите следующие ошибки:
1) С клиентской стороны отправляется корректный GET запрос с id
/clients/{clientId}
Например, /clients/6
2) В контроллере вы принимаете его в виде @PathVariable Integer
Убедитесь, что у вас в entity Client id задан integer, а не long. Иначе скорее всего будет выброшено исключение.
3)
Optional client = null;
try {
client = clientRepository.findById(clientId);
model.addAttribute("allowDelete", false);
} catch (Exception ex) {
model.addAttribute("errorMessage", ex.getMessage());
}
model.addAttribute("client", client);

Эту часть кода можно упростить. Например,

@GetMapping(value = "/clients/{clientId}")
    public String clientDetails(Model model, @PathVariable Integer clientId) {
    Optional client =  clientRepository.findById(clientId).orElseThrow(ClientNotFoundException::new);
    model.addAttribute("client", client);
    return "client-details";
    }


Но подозреваю, что у вас банальная опечатка.
В шаблоне вы используете:
{{#clients}}
А в контроллере добавляете - client.
А значит, должно быть:
{{#client}}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы