如何在 thymleaf 中使用多个条件 - “If 语句”

问题描述

我试图只为发表评论的人和管理员显示删除按钮,但是 当我尝试使用 if 语句或 sec:authorize 隐藏它时,解析模板时出错。 我尝试分别使用每个 if 条件来制作两个单独的按钮,效果很好,但是当我使用 OR 将它们组合在一起时,出现了错误

这是我目前所写的。 // HTML

            <a th:if="${c.email}==${namePrincipal} or hasRole('ADMIN')" href="#" class="btn btn-secondary" style="background-color: #8db8e0; margin-left: 200px;">Delete</a>
       

错误信息: org.thymeleaf.exceptions.TemplateInputException: 模板解析过程中发生错误(模板:“类路径资源 [templates/show-comments.html]”)

引起:org.attoparser.ParseException:无法解析为表达式:“${c.email}==${namePrincipal} 或 hasRole('ADMIN')”(模板:“show-comments” - 第 34 行,第 20 列)

解决方法

根据角色授予权限,使用sec:authorize

       <div sec:authorize="hasRole('ROLE_ADMIN')">
                    <div th:if="${#authentication.principal.username} eq ${c.getEmail()}">


            <a href="#" class="btn btn-secondary" style="background-color: #8db8e0; margin-left: 200px;">Delete</a>

                    </div>
                </div>