Java th:删除中的hasRole()不起作用
我想禁用某个特定链接,但保留其文本,使其看起来像是被禁用的。我正试图在锚定标签内放置一个th:remove,并带有特定条件。我在ThymeLeaf教程页面上找到了以下内容:Java th:删除中的hasRole()不起作用,java,spring-security,thymeleaf,spring-el,Java,Spring Security,Thymeleaf,Spring El,我想禁用某个特定链接,但保留其文本,使其看起来像是被禁用的。我正试图在锚定标签内放置一个th:remove,并带有特定条件。我在ThymeLeaf教程页面上找到了以下内容: <a href="/something" th:remove="${condition}? tag">Link text not to be removed</a> 基于此,我正在尝试这样做: <li> <a th:href="@{/config/mod/}"
<a href="/something" th:remove="${condition}? tag">Link text not to be removed</a>
基于此,我正在尝试这样做:
<li>
<a th:href="@{/config/mod/}"
th:remove="${#authorization.expression('hasRole(''VIEW_MODULE_STATUS'')')}? tag">
<i class="fa fa-gear"></i> [[#{webadmin.view.config.module.title.short}]]
</a>
</li>
其中查看模块状态为角色。这种情况似乎不起作用,我不明白为什么
仅供参考:我在锚定标记中使用了sec:authorize=“hasRole('VIEW\u MODULE\u STATUS')”
,效果良好。我想避免这种方法,因为它完全删除了文本和链接。是否有其他方法可以禁用链接并使用ThymeLeaf保留文本
(我正在使用ThymeLeaf 3.0)表达式中使用的三元运算符中有一个错误
th:remove=“${#authorization.expression('hasRole('VIEW#u MODULE_STATUS'))}?tag”
三元运算符的形式为条件?“true':'false'
。所以你必须更新你的表达式。然后您不能禁用
标记,您唯一能做的就是将其href
属性更新为#
或javascript:void(0)代码>以便它没有任何操作。您可以按如下所示进行操作:
th:href="${#authorization.expression('hasRole(''VIEW_MODULE_STATUS'')') ? '/something' : '#'}"
谢谢你的快速回复。我试过了&它不起作用。这是我的th:ref:th:href=“${{{}授权.expression('hasAuthority('VIEW\'u MODULE\'u STATUS'))?{/config/mod/}:'{}'
您不能在${}/code>内部使用{}
。你必须把它写成:@{${}
My bad。这也不起作用:th:href=“@{${{{}authorization.expression('hasAuthority('VIEW'u MODULE_STATUS'))?{/config/mod/}:'}}}}
为什么{/config/mod}
中有{/code>呢。只要把它们放在'
之间,就像/config/mod/
哇!成功了。这是我的最终版本:th:href=“@{${#authorization.expression('hasAuthority('VIEW#MODULE_STATUS'))?”/config/mod/“:'#'}}}”
一个问题:当鼠标悬停在文本上时,它看起来仍然像一只手,表示它是一个链接,但当它被点击时,什么也不会发生。这正常吗?