2010-11-03 23 views
0

J'ai une page avec une date Tomahawk. Sur sa balise "value", j'appelle une méthode qui obtient une liste de certains EJB et si elle est vide, je dois afficher un message sur la page. La logique fonctionne, elle exécute la méthode que j'ai créée pour afficher le message sur l'écran, mais elle ne rendra pas le message sur la page. J'ai peur que cela ait quelque chose à voir avec le cycle de vie de JSF. Y at-il une solution de contournement que je peux faire dans ce cas?Mise à jour d'un message lors du traitement d'une méthode déclenchée par le tag "valeur" d'une table de données

Merci d'avance.

Répondre

1

L'approche normale consiste à utiliser l'attribut rendered.

<h:outputText value="List is empty" rendered="#{empty bean.list}" /> 
<t:dataTable value="#{bean.list}" rendered="#{not empty bean.list}"> 
    ... 
</t:dataTable> 

Le mot-clé empty EL évaluera true quand bean.list est vide ou null. Cela dit, faire de la logique EJB dans un getter est plutôt une mauvaise idée. Les getters sont uniquement là pour renvoyer des données et peuvent être invoqués plus d'une fois dans la vie du haricot. Plutôt faire des trucs EJB dans la méthode @PostConstruct du bean.

+0

Salut, le problème est que j'utilise le même haricot pour 3 pages. C'est la deuxième page du processus, et j'ai besoin de l'entrée du premier pour appeler l'ejb, c'est pourquoi j'ai pensé à l'appeler sur la méthode get. Je suppose que je vais créer un autre haricot alors .... merci. – Moon13

+1

Si la liste dépend des données soumises, vous devez remplir la liste dans la méthode submit (la méthode d'action commandlink/commandbutton). – BalusC