Java th:删除中的hasRole()不起作用

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/}"

我想禁用某个特定链接,但保留其文本,使其看起来像是被禁用的。我正试图在锚定标签内放置一个th:remove,并带有特定条件。我在ThymeLeaf教程页面上找到了以下内容:

<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>&nbsp;[[#{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/“:'#'}}}”
    一个问题:当鼠标悬停在文本上时,它看起来仍然像一只手,表示它是一个链接,但当它被点击时,什么也不会发生。这正常吗?