@Nulltiton

Как в зависимости от значения вставлять разные ссылки в Thymeleaf?

Есть табличка с колонкой "права" (authorities). В зависимости от того, какие даны права пользователю необходимо выводить разные кнопки. Например, у пользователя стандартная роль USER, тогда должны отображаться кнопки "Сделать водителем" и "Сделать админом", для пользователя с ролью DRIVER - "Сделать пользователем", "Сделать админом" и т.д.
Код таблицы:
<a th:href="@{/users/add}" href="#">Добавить пользователя</a>
<div class="table-responsive pt-3">
<table class="table table-bordered">
    <thead>
        <tr>
            <th>#</th>
            <th>Логин</th>
            <th>Фамилия</th>
            <th>Имя</th>
            <th>Отчество</th>
            <th>Дата рождения</th>
            <th>Телефон</th>
            <th>Email</th>
            <th>Организация</th>
            <th>Права</th>
            <th>Действия</th>
        </tr>
    </thead>
    <tbody>
        <tr class="Authors-item" th:each="user : ${users}">
            <td th:text="${user.id}">Id</td>
            <td th:text="${user?.username}">Username</td>
            <td th:text="${user?.userInfo.firstName}">First name</td>
            <td th:text="${user?.userInfo.middleName}">Middle name</td>
            <td th:text="${user?.userInfo.lastName}">Last name</td>
            <td th:text="${user?.userInfo.birthDate}">Birthdate</td>
            <td th:text="${user?.userInfo.phoneNumber}">Phone</td>
            <td th:text="${user?.email}">Email</td>
            <td th:text="${user?.organization?.name}">Organization</td>
            <td th:text="${user.authorities}">Authorities</td>
            <td>
                <a th:href="@{/users/edit/{id}(id=${user.id})}" href="#">Редактировать</a><br>
                <a th:href="@{/users/delete/{id}(id=${user.id})}" href="#">Удалить</a>
                <a th:href="@{/users/setuser/{id}(id=${user.id})}" href="#">Сделать пользователем</a>
                <a th:href="@{/users/setdriver/{id}(id=${user.id})}" href="#">Сделать водителем</a>
                <a th:href="@{/users/setadmin/{id}(id=${user.id})}" href="#">Сделать админом</a>
            </td>
        </tr>
    </tbody>
</table>

Код контроллера:
@GetMapping({"/index", "/", ""})
    public String showMainPage(Model model)
    {
        model.addAttribute("users", userService.getUsers());
        return "users/index";
    }

Подскажите как реализовать подобный функционал? Насколько я понимаю, это можно сделать через th, но ничего не получилось
  • Вопрос задан
  • 95 просмотров
Решения вопроса 1
<a th:href="@{/users/setdriver/{id}(id=${user.id})}" sec:authorize="!hasRole('DRIVER')">Сделать водителем</a>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы