66 votes

Définir et réutiliser une variable dans une page JSF

Est-il possible de définir une variable et de la réutiliser ultérieurement dans des expressions EL?

Par exemple :

 <h:inputText 
   value="#{myBean.data.something.very.long}"
   rendered="#{myBean.data.something.very.long.showing}"
/>
 

Ce que j'ai en tête est quelque chose comme:

 <!-- 
     somehow define a variable here like : 
     myVar = #{myBean.data.something.very.long} 
-->
<h:inputText 
   value="#{myVar}"
   rendered="#{myVar.showing}"
/>
 

Des idées ? Merci !

119voto

BalusC Points 498232

Vous pouvez utiliser <c:set> pour ce:

<c:set var="myVar" value="#{myBean.data.something.very.long}" scope="request" />

Cette expression EL sera ensuite évaluée une fois et stocké dans la demande portée. Notez que cela fonctionne uniquement lorsque la valeur est disponible lors de l' affichage de temps de construction. Si ce n'est pas le cas, alors vous devrez supprimer l' scope attribtue de sorte qu'il devient un véritable "alias":

<c:set var="myVar" value="#{myBean.data.something.very.long}" />

Notez donc que ce n'est pas le cache de la valeur évaluée de la demande portée! Il sera réévalué à chaque fois.

19voto

Matt Ball Points 165937

Comme toute vue dans MVC, la page doit être aussi bête que possible. Si vous voulez un raccourci, mettez-le dans le contrôleur (le bean @ManagedBean ou @Named ).

Manette:

 @Named
public MyBean
{
    public Data getData()
    {
        return data;
    }

    public Foo getFooShortcut()
    {
        return data.getSomething().getVery().getLong();
    ]
}
 

Vue:

 <h:inputText 
   value="#{myBean.fooShortcut}"
   rendered="#{myBean.fooShortcut.showing}"
/>
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X