2008-10-02 16 views
1

J'ai la pièce de code suivante dans mon jsp:Comment savoir si un attribut jsp tag est disponible pour EL?

<% pageContext.setAttribute("warnings",Globals.WARNING_MESSAGES); %> 
<c:choose> 
    <c:when test="${requestScope[pageScope.warnings] or sessionScope[pageScope.warnings]}"> 
     <html:errors header="warnings.header" footer="warnings.footer" prefix="warnings.prefix" suffix="warnings.suffix"/> 
     <c:remove var="${pageScope.warnings}" scope="session"/> 
    </c:when> 
    <c:otherwise> 
     <html:errors/> 
    </c:otherwise> 
</c:choose> 

Je me demande s'il y a de toute façon (sans entrer dans le code source) pour savoir si un attribut est disponible pour le codage EL.

Dans ce code, je voudrais utiliser une variable de script définie comme une constante que je définis dans le conteneur pageScope. Je voudrais utiliser le même mécanisme lorsque je supprime la variable du sessionScope référençant la variable de script, mais il semble que l'attribut <c:remove var> refuse d'interpréter ma variable de script et cela ruine tout effort de faire référence à ma déclaration de Constant. Je peux utiliser un scriptlet jsp pour contourner ce problème, mais existe-t-il une "meilleure" façon de le faire?

Répondre

1

Je ne suis pas sûr que je comprends votre question, mais je pense que vous êtes à la recherche de l'opérateur « vide » pour EL pour tester si un attribut existe:

 
<c:if test="${empty pageScope.warnings}"> 
//do something 
</c:if> 

Cela renverra vrai si PAGESCOPE. les avertissements ne sont pas définis (null).

+0

Désolé de dire '

$ {empty pageContext.errorData}

' donne une exception de pointeur nul. Donc, il semble vide n'est pas la réponse. – Martin