2011-07-06 3 views
1

j'ai quelque chose comme çaUtilisation des variables dans jstl instruction if

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

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

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

mais il ne ne fonctionne pas, tout comment puis-je ure faire cela? Peut-être qu'il y a un autre moyen?

// Edité

Répondre

0

Vous manque une fermeture ")" dans votre cas test:

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

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

     </c:if> 
</c:forEach> 
+0

Ce n'est pas un problème, une viennent misstyped –

1

Il y a 2 problèmes:

  1. Vous ne devriez pas imbriquer expressions EL . Il suffit de référencer la variable EL de la manière habituelle.

    <c:if test="${fn:contains(authority, ROLE_ADMIN)}"> 
    
  2. On ne sait pas du contexte de la question si ROLE_ADMIN est déjà dans le champ EL. Mais vous devez savoir que vous ne pouvez pas référencer les constantes dans EL. Si c'est par exemple un enum, alors il est bon de savoir qu'ils sont simplement évalués comme String. Vous devez le citer ensuite.

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