2009-07-07 5 views
2

Accès non-propriétés via jsp elJSP EL et Scriptlets - Comment éviter de mélanger jstl et scriptlet vars

Dans le code ci-dessous, je dois accéder à une méthode qui n'est pas une propriété. J'ai besoin d'une variable c: foreach pour être visible aussi bien pour le test. Je traite du code de quelqu'un d'autre. Je ne suis pas particulièrement satisfait de la conception, mais c'est facile quand il s'agit du code de quelqu'un d'autre.

Je préférerais simplement définir les rôles visibles dans le contrôleur, mais toutes les données sont lues à partir d'un cache global à plusieurs endroits. La camelote ci-dessous représente le moins de lignes de code pour obtenir le comportement souhaité.

< c: foreach var = éléments "rôle" = "$ {} resource.value.rs" >

// n'ont pas accès au rôle dans le contexte de scriptlet

< c: si test = "<% role.isVisible (session.getAttribute ("AuthUser"))% >" >

</c: si > </c: foreach >

Une solution simple serait .. si je pouvais faire:

// ne peut pas appeler isVisible par el je ne crois pas

< c: if test = "$ {role.isVisible (session.authUser)} ">

mais je suis sûr que vous ne pouvez pas faire cela.

Je suis en train de réécrire pour éviter les scriptlets, mais si quelqu'un avait une solution rapide, je l'amuserais.

Merci.

Répondre

1

Je préférerais que les rôles définir visibles réels dans le contrôleur, mais toutes les données sont lues à partir d'un cache global en plusieurs endroits

Ne devrait pas être un problème si je l'ai compris correctement.

Je suppose que la AUTHUSER est dans le cadre de la session

session.authUser 

Sinon, réglez-le:

<c:set var"authUser" value="${session.authUser}" scope="session" /> 

Tout ce que vous feriez est alors de trouver un moyen d'alimentation AUTHUSER de la session dans le rôle Bean vous permettant de:

<c:if test="${role.isVisible}"> 

aah peut-être pas ..

Je pense que j'écrire une balise personnalisée

<mytag:isVisible role="${role}" user="${session.authUser}"> 
    // do work 
</mytag:isVisible> 
Questions connexes