Использование переменных в выражении jstl if - PullRequest
1 голос
/ 06 июля 2011

У меня есть что-то вроде этого

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

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

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

, но это не работает, любой иде, как я могу это сделать?Может быть, есть другой способ?

// Отредактировано

Ответы [ 2 ]

1 голос
/ 06 июля 2011

Есть 2 проблемы:

  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')}">
    
0 голосов
/ 06 июля 2011

В вашем тесте if отсутствует пробел ")":

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

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

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