在Spring / Thymeleaf中:我想根据用户是否具有ROLE_A来设置属性。
<section class="footer" ... th:someattr="#{hasRole('ROLE_A')} ? 'true' : 'false'">
无论用户是否具有ROLE_A,它始终呈现为<section class="footer" ... someattr="true">
:
SpelEvaluationException:EL1004E:(pos 0):方法调用:方法 在以下位置找不到hasRole(java.lang.String) org.thymeleaf.spring4.expression.SPELContextMapWrapper类型
如何根据分配的身份验证角色将属性设置为true | false。 谢谢。
答案 0 :(得分:0)
有时候,这是由于项目的配置引起的。因此,让我们进行一些更改并使用以下代码。
<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 Extras添加任何版本,因为Spring Boot会为您管理。如果不是,请尝试添加此版本<version>3.0.4.RELEASE</version>
。
注意:如果它不起作用,请将其更改为thymeleaf-extras-springsecurity5
,具体取决于您的Spring版本,而另一个则无效。
答案 1 :(得分:0)
我认为您正在寻找类似的东西:
<section class="footer" ... th:someattr="${#request.isUserInRole('A') ? 'true' : 'false'}">
(不需要“附加”。)