Как использовать SpEL с hasRole для установки атрибута html? - PullRequest
0 голосов
/ 10 декабря 2018

Весной / Thymeleaf: я хочу установить атрибут в зависимости от того, есть ли у пользователя ROLE_A или нет.

  1. Я пробовал HTML ниже:

<section class="footer" ... th:someattr="#{hasRole('ROLE_A')} ? 'true' : 'false'">

Он всегда отображается как <section class="footer" ... someattr="true"> независимо от того, был ли пользовательROLE_A или нет:

Я пробовал также $ {hasRole ('ROLE_A')}?'true': 'false', но это не сработало ():

SpelEvaluationException: EL1004E: (pos 0): вызов метода: метод hasRole (java.lang.String)) не найден в org.thymeleaf.spring4.expression.SPELContextMapWrapper тип

Как установить для атрибута значение true | false в зависимости от назначенных ролей аутентификации.Спасибо.

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

Я думаю, что вы ищете что-то вроде:

<section class="footer" ... th:someattr="${#request.isUserInRole('A') ? 'true' : 'false'}">

(«дополнительные» не требуются.)

0 голосов
/ 10 декабря 2018

Иногда это является причиной, из-за конфигурации вашего проекта.Итак, давайте внесем некоторые изменения и используем следующий код.

<section class="footer" ... th:someattr="${#authorization.expression('hasRole(''ROLE_A'')' ? 'true' : 'false'}">

Чтобы использовать #authorization, вам необходимо добавить следующую зависимость, хотя бы, thymeleaf-extras-springsecurity4.

<dependency>
    <groupId>org.thymeleaf.extras</groupId>
    <artifactId>thymeleaf-extras-springsecurity4</artifactId>
</dependency>

Если вы используете <artifactId>spring-boot-starter-parent</artifactId>, вам не нужно будет добавлять какие-либо версии к своим дополнениям Thymeleaf, поскольку Spring Boot управляет этим для вас.Если нет, попробуйте добавить эту версию <version>3.0.4.RELEASE</version>.

Примечание: Если она не работает, измените ее на thymeleaf-extras-springsecurity5, в зависимости от вашей версии Spring, одна будет работать, а другая выиграет«т.

...