Невозможно отобразить результат на основе идентификатора базы данных, когда идентификатор передается для просмотра

<table class = "table">

<tr>
    <th>Name</th>

</tr>

<tr th:each = "recipe : ${recipes}">
    <td th:text = "${recipe.Name}"></td>
    <td>
            <span th:each = "recipe,iterStat : ${recipes}">

            </span>
    </td>
    <td>
        <a th:href = "@{/recipe/food/{id}(id=${recipe.id})}">view</a>
    </td>
</tr>

Я пытаюсь щелкнуть эту ссылку выше, используя этот контроллер

    @RequestMapping(value = "recipe/food/{id}", method = RequestMethod.POST)
public String viewRecipe(@PathVariable int id, Model model){
    model.addAttribute("name", recipeDao.findOne(id));
    model.addAttribute("recipeText", recipeDao.findOne(id));
    return "Recipes/food" ;
}

для отображения отдельного элемента на основе его идентификатора здесь

<table class = "table">

<tr>
    <th>Name</th>

</tr>
<form method  = "post" th:action = "recipe/food/{id}" th:object=${recipe}">
<tr th:each = "recipe : ${recipes}">

    <td th:text = "${recipe.name}">text</td>
    <td th:text = "${recipe.recipeText}">text</td>
</tr>

<span th:errors = "*{recipeText}" class = "error"></span>
</form>

однако я получаю только 404, но информация об URL верна

вы можете разместить свою структуру каталогов для файлов просмотра?

shakhawat 15.01.2019 06:46

@shakhawat resources / templates / Recipes / food, Recipes / index отображает список, который у меня тоже отлично настроен.

gschmage 15.01.2019 07:11

у вас есть добавленный преобразователь представлений?

shakhawat 15.01.2019 08:40

Можете ли вы добавить указатель отладки / сообщение в обработчик сообщений, чтобы проверить, прошло ли действие публикации. Если он может публиковать успешно, то проблема заключается в представлении и распознавателе представлений.

shakhawat 15.01.2019 08:42

Вам также может потребоваться переместить resources/templates/Recipes/food в Recipes/food, как и страницу index.

shakhawat 15.01.2019 08:44

Я не уверен, как конкретно просмотреть обработчик сообщений в отладчике, а Recipes / index находится в той же структуре каталогов, что и вышеупомянутая структура Recipes / food, и отлично работает. просто не напечатал все это извини об этом

gschmage 15.01.2019 18:56
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
6
84
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Когда вы нажимаете ссылку, он выполняет GET-запрос, поэтому попробуйте изменить метод в Контроллере на method = RequestMethod.GET или просто удалите method = RequestMethod.POST.

Обновлять:

Часть шаблона еды, которая находится в третьем фрагменте кода, перебирает список с именем recipes, но метод Controller не добавляет список в качестве атрибута к модели только «name» и «recipeText». Возможно, вам нужен шаблон для отображения рецепта, по которому вы перешли по ссылке? Что-то вроде <h4 th:text = "${name}"></h4> <span th:text = "${recipeText}" />

к сожалению, это ничего не изменило.

gschmage 15.01.2019 07:12

хорошо, и у вас нет RequestMapping на уровне класса в вашем контроллере, поэтому URL-адрес не совпадает? Просматривали ли вы запрос на вкладке сети в своем браузере, чтобы убедиться, что уходящий запрос соответствует вашим ожиданиям?

nordenvall 15.01.2019 07:32

у меня есть @RequestMapping ("рецепт") над моим публичным классом RecipeController

gschmage 15.01.2019 18:53

похоже, что контроллер на самом деле не возвращает food.html браузеру и, следовательно, не передает идентификатор и т. д.

gschmage 15.01.2019 19:01

Если у вас есть @RequestMapping как в классе, так и в методе, фактический путь конечной точки - это объединение этих двух, поэтому в вашем случае это «рецепт / рецепт / еда / {id}», поэтому, вероятно, поэтому вы получаете 404 Боже, хотя вы перешли на ПОЛУЧИТЬ.

nordenvall 16.01.2019 06:49

Хорошо, я изменил сопоставление классов, и теперь моя страница шаблона начальной загрузки отображается вместе с навигацией, но она по-прежнему не отображает информацию. в инспекторе сетей мой HTML-код «Добавить» отображается, когда я перехожу к нему, а шаблон «food» - нет. Кроме того, сгенерированный шаблон, который отображается, представляет собой число, которое я должен передать в качестве идентификатора.

gschmage 16.01.2019 11:42

Извините, я не понимаю, что вы имеете в виду, это третий фрагмент кода в вашем сообщении из шаблона еды? Вы имеете в виду, что идентификатор не передается в метод контроллера, как должен?

nordenvall 16.01.2019 13:48

ах ладно извините за путаницу. поэтому идентификатор определенно передается контроллеру, я могу видеть идентификатор в URL-адресе в браузере, когда я нажимаю ссылку, по которой он был передан, но похоже, что в шаблон еды, который является третьим фрагментом кода, ничего не передается

gschmage 16.01.2019 15:13

Часть шаблона еды, которая находится во фрагменте кода, перебирает список с именем recipes, но метод Controller не добавляет список в качестве атрибута к модели, только «name» и «recipeText». Разве в шаблоне еды не должен отображаться рецепт, на который вы перешли по ссылке? Что-то вроде <h4 th: text = "$ {name}"> </h4> <span th: text = "$ {recipeText}" />

nordenvall 17.01.2019 06:55

я думаю, ты прав. Я попробую здесь через некоторое время, но, возможно, мне нужно попробовать что-то еще, ха-ха, похоже, слишком много времени потрачено на что-то настолько глупое. Большое спасибо за вашу помощь! @nordenvall

gschmage 17.01.2019 12:24

Другие вопросы по теме