在jstl if语句中使用变量

时间:2011-07-06 07:42:41

标签: jsp jstl el

我有类似的东西

 <c:forEach var="authority" items="#{SPRING_SECURITY_CONTEXT.authentication.principal.authorities}">

      <c:if test="${fn:contains( ${authority} , ROLE_ADMIN) }">

      </c:if>
</c:forEach>

但它不起作用,任何想法我怎么能这样做?也许有其他方式?

//被修改

2 个答案:

答案 0 :(得分:1)

有两个问题:

  1. 您不应嵌套EL表达式。只需以通常的方式引用EL变量。

    <c:if test="${fn:contains(authority, ROLE_ADMIN)}">
    
  2. 从问题上下文中不清楚ROLE_ADMIN是否已经在EL范围内。但是你需要知道你不能在EL中引用常量。如果它是例如enum,那么很高兴知道它们仅被评估为String。你需要引用它。

    <c:if test="${fn:contains(authority, 'ROLE_ADMIN')}">
    

答案 1 :(得分:0)

你在if测试中错过了一个结束“)”

 <c:forEach var="authority" items="#{SPRING_SECURITY_CONTEXT.authentication.principal.authorities}">

      <c:if test="${fn:contains( {$authority} , ROLE_ADMIN ) }">

      </c:if>
</c:forEach>