Spring Thymeleaf направляет пользователей в /users/{thisUser}/thisUsersCollectionOfThings

Я пытаюсь отправить пользователя на определенную страницу, содержащую список его элементов. До сих пор я был несколько неудачным.

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

В моем шаблоне у меня есть это:

    <li th:each = "key: ${users.keySet()}">
        <span th:text = "${users.get(key).getName()}"></span>
        <a href = "games.html" th:href = "@{/{user}/games (user=${users.get(key).getName()}) }">View games</a></li>
    </li>

который в настоящее время направляется, например, к URL-адресам http://localhost:8080/Steve/games.

Трудность, с которой я сталкиваюсь, заключается в том, чтобы узнать, как связать все остальное вместе.

У меня есть контроллер с этим сопоставлением, который, я считаю, должен вызываться, когда этот URL-адрес

    @RequestMapping("/{users}/games")
    @ResponseBody
    public String userGames(@PathVariable final String username,
                            Model model){
        .. List<Games> games= getGames(username)..
        model.addAttribute("games", games);
        return "games";
    }

поэтому я хотел бы отобразить html-страницу шаблона «игры», но со списком игр, которые я получил для этого пользователя. Однако я получаю стандартную ошибку This application has no explicit mapping for /error, so you are seeing this as a fallback. и не могу понять, где я ошибся.

Мой шаблон «Игры» следует тому же шаблону, что и предыдущий, зацикливая список:

 <ol>
    <li th:each = "game : ${games}" th:text = "${game.getName()}"></li>
</ol>

но не отображается.

Мой класс Game имеет метод для поиска имени. В трассировке стека нет исключений

Любая помощь будет принята с благодарностью, спасибо.

У вас есть метод getName() в вашем классе Game? Что-нибудь (stacktrace) отображается в консоли Java?

mate00 04.04.2019 11:44

Вместо этого вы можете проверить с помощью ${game.name}.

mate00 04.04.2019 11:45

@ mate00 - Привет, да, метод существует, нет трассировки стека использования. Никаких исключений и т. д. Я попробую game.name и посмотрю, поможет ли это!

null 04.04.2019 12:00

@ mate00 - game.name дало тот же результат.

null 04.04.2019 12:01

Возможно ли, что вы поделитесь своим проектом? Я мог бы попробовать запустить его сам и посмотреть, смогу ли я помочь.

mate00 04.04.2019 12:02

@ mate00 - возможно, мне нужно сначала привести его в порядок и сделать его несколько симпатичным :D

null 04.04.2019 12:05

Давайте продолжить обсуждение в чате.

mate00 04.04.2019 12:06
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
7
26
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Хорошо, подытоживая наш разговор в чате: в вашем классе контроллера отсутствовала аннотация @Controller, поэтому ваш метод сопоставления вообще не вызывался. Затем вы убедитесь, что строка в параметре метода контроллера имеет то же имя, что и то, что передается.

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