Thymeleaf - Есть ли простой способ сделать радио проверено в зависимости от состояния - PullRequest
1 голос
/ 30 марта 2020

Я использую spring boot + thymeleaf и пытаюсь создать список флажков с минимальным кодом. Флажки представляют все роли пользователя (USER, ADMIN), и необходимо проверить, есть ли у пользователя такая роль.

Итак, сначала я попытался сделать так:

<p>
    <input th:type="radio" th:value="${role}"
          th:checked="${user.getRoles().contains(role)} ? 'checked' : 'unchecked'" />
    <th:block th:utext="${role}"/>
</p>

но это не сработало.

Тогда я сделал это так:

<th:block th:each="role : ${userRoles}">
    <p>
        <th:block th:if="${user.getRoles().contains(role)}">
            <input th:type="radio" checked />
        </th:block>
        <th:block th:if="${!user.getRoles().contains(role)}">
            <input th:type="radio"/>
        </th:block>
        <th:block th:utext="${role}"/>
    </p>
</th:block>

И это работа, но есть ли простой способ сделать это, как моя первая попытка? Спасибо!

1 Ответ

1 голос
/ 30 марта 2020

Элементы <input> типа radio поддерживают общий атрибут checked. Это логический атрибут, который принимает true и false в качестве возможных значений. Сказал, что ваше условие Thymeleaf может быть помещено непосредственно в значение этого атрибута следующим образом ...

<p>
    <input th:type="radio" th:value="${role}"
      th:checked="${user.getRoles().contains(role)}" />
    <th:block th:utext="${role}"/>
</p>

Подробнее о Thymeleaf Булевы атрибуты с фиксированным значением

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...