Thymeleaf — тег внутри th: текст

#java #thymeleaf

#java #thymeleaf

Вопрос:

Мне нужно поместить тег или текст на основе некоторого выражения. Я попробовал выражение, подобное этому bud, не сработало.

 <td th:text="${reservation[0] == null ? <a href="/reserve">Reserve</a> : reservation[0] == request.username ? <a href="/cancel">Cancel</a> : Reserved}"></td>
 

Ответ №1:

Попробуйте это :

 <td th:utext="${reservation[0] == null} ? '<a href="/reserve">Reserve</a>' :  ${reservation[0] == request.username} ? '<a href="/cancel">Cancel</a>' : 'Reserved'"></td>
 

Вы также можете упростить чтение с помощью нескольких условий тестирования:

 <td th:if="${reservation[0] == null}"><a href="/reserve">Reserve</a></td>
<td th:if="${reservation[0] == request.username}"><a href="/cancel">Cancel</a></td>
 

Если условие не выполнено, то тег th не отображается.

Ответ №2:

Оператор переключения Thymeleaf предоставляет чистую альтернативу:

 <table>
    <tr>
    <th:block th:switch="${reservation[0]}">
        <td><a th:case="null" th:text="Reserve" href="/reserve"></a><td>
        <td><a th:case="${request.username}" th:text="Cancel" href="/cancel"></a><td>
        <td th:case="*" th:text="'Reserved'"></td>
    </th:block>
    </tr>
</table>