Java 在集合中查找字符串时出错

Java 在集合中查找字符串时出错,java,spring,thymeleaf,Java,Spring,Thymeleaf,我想检查集合是否包含文本“ADMIN” 我可以做到以下无误: <div th:each="r:${#authentication.principal.commRoles}"> <div th:if="${r.code} == 'ADMIN'"> <script> var isTransporterChangeable = true; </script&

我想检查集合是否包含文本“ADMIN”

我可以做到以下无误:

    <div th:each="r:${#authentication.principal.commRoles}">
        <div th:if="${r.code} == 'ADMIN'">
            <script>
                var isTransporterChangeable = true;
            </script>
        </div>
        <div th:unless="${r.code} == 'ADMIN'">
            <script>
                var isTransporterChangeable = false;
            </script>
        </div>
    </div>

var isTransporterChangeable=真;
var isTransporterChangeable=假;
但当我尝试使用set.contains时:

    <div th:if="${#sets.contains(#authentication.principal.commRoles.code, &quot;ADMIN&quot;)}">
        <script>
            var isTransporterChangeable = true;
        </script>       
    </div>
    <div th:unless="${#sets.contains(#authentication.principal.commRoles.code, &quot;ADMIN&quot;)}">
        <script>
            var isTransporterChangeable = false;
        </script>       
    </div>

var isTransporterChangeable=真;
var isTransporterChangeable=假;
我收到一条错误消息:

EvaluationException:EL1008E:在“org.hibernate.collection.internal.PersistentSet”类型的对象上找不到属性或字段“code”-可能不是公共的或无效的

请帮忙。谢谢。

#authentication.principal.commRoles
是一个列表,没有
代码

您可以获取特定的角色对象并通过这种方式进行检查

th:if="${#sets.contains(#authentication.principal.commRoles, adminRole)}"
治疗百里香的正确方法是

<div sec:authorize="hasRole('ROLE_ADMIN')">
</div>



查看stacktrace不是很明显吗?找不到属性或字段“code”,请检查您的POJO是否具有此属性property@AlmasAbdrazak是的。第一个代码段有效,但第二个代码段无效field@HithamS.AlQadheeb是的,有。
<div sec:authorize="isAuthenticated()">
</div>