Spring-boot Thymeleaf: Как отобразить имя объекта из базы данных и сделать это имя гиперссылкой?

Jill спросил: 31 июля 2018 в 09:41 в: java

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

Ниже приведена моя строка кода, которая отображает имя темы :

<li class="list-group-item" th:each="subject : ${subjects}" th:text="${subject.subjectName}"

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

    th:href="@{/viewSubject} + ${subject.subjectId}"

До сих пор мне удалось поставить ссылку "Тема темы" рядом с именем темы, но я бы предпочел, чтобы они просто нажимали имя для ссылки.

Я пробовал следующее, и это не сработало, оно отображает имя, но оно не доступно для кликов, если это имеет смысл:

 <div class="container">
<ul class="list-group">
 <li class="success" >My Subjects</li>
<li class="list-group-item" th:each="subject : ${subjects}" 
th:text="${subject.subjectName}" th:href="@{/viewSubject} + 
${subject.subjectId}">
View Subject
</li>

3 ответа

Есть решение
Xaltotun ответил: 31 июля 2018 в 09:49

Вы можете сделать что-то вроде этого:

<li class="list-group-item" th:each="subject : ${subjects}"  >
<a th:href="@{/viewSubject} + ${subject.subjectId}" th:text="${subject.subjectName}" >some text </a>
</li>

Возможно, это потребует некоторой доработки, но элемент будет кликабельным.

Jill ответил: 31 июля 2018 в 09:54
Это сработало отлично, большое спасибо
abdul ответил: 31 июля 2018 в 09:50

Вы можете просто сделать

th:href="${'/viewSubject' + subject.subjectId}"

, но я думаю, что вы хотите сделать

th:href="${'/viewSubject/' + subject.subjectId}"

, это создаст URL, который выглядит как "/viewSubjec/12" 12 является идентификатором субъекта.

Sebastian ответил: 31 июля 2018 в 09:54

Это должно сделать работу:

<ul th:each="subject : ${subjects}">
    <li>  
        <a th:text="${subject.subjectName}" 
           th:href="@{/subjects/{subjectId}(subjectId=${subject.subjectId})}>
        </a>
    </li>
<ul>

Я бы держался подальше от конкатенации URL. Лучше использовать переменные.

https://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html#link-urls