Bonjour à tous,
je veux savoir s'il y a un moyen permettant de rafraîchir une page jsf à partir d'une methode dans le backing bean de la page jsf(apres un évenement données).
merci par avance. ;)
Version imprimable
Bonjour à tous,
je veux savoir s'il y a un moyen permettant de rafraîchir une page jsf à partir d'une methode dans le backing bean de la page jsf(apres un évenement données).
merci par avance. ;)
tu parle la du push????
A la limite, si l'évenement donné provient de la page (donc appui sur un bouton, sur un lien, etc.) tu peux très bien utiliser le principe des navigation rules, mais en retournant un null (ou "") :
Code:
1
2 <h:commandButton action="#{monBean.pouet}" value="Faire un truc, puis rafraichir la page"/>
Code:
1
2
3
4
5
6
7 public String pouet() { // Là, je fais mes trucs, voire mes choses. ... // Je retourne une chaine vide, comme ça la page sera rafraichie... return ""; }
pardon pour le retart et merci pour vos reponses rapides :king:
apparement ma question n'était pas bien clair, je veux essayer de m'expliquer.
l'evenement dont je parle est associé à un combobox qui contient une liste des type, en faite lorsque l'utilisateur choisie le type "Fixe" parmi la liste un element outputText et un element inputText doivent s'afficher.
pour cela j'ai preparer un paneau qui va contenir ces elements dans la page jsp:
puis j'ai associé au combobox l'ecouteur valueChangeListener comme suit:Code:
1
2
3<h:panelGroup binding="#{addRubriqueBean.dynamicLine}"> </h:panelGroup>
et dans le bean associé la methode suivante:Code:
1
2
3
4 <rich:comboBox id="typeRubrique" valueChangeListener="# {addRubriqueBean.typeSelected}" value="#{addRubriqueBean.type}" suggestionValues="#{addRubriqueBean.typeList}" />
le probleme est que l'évenement n est pris en compte que si j appuis sur le bouton (j'obtiens le message à la console "tout va bien ici......." )mais les elements (input et output text)ne s 'affichent que si je ferme le serveur et je relance l'application pour la deuxieme fois :aie:Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public String typeSelected(ValueChangeEvent event){ System.out.print("action produite........"); HtmlOutputText outPut = new HtmlOutputText(); outPut.setId("confirmer"); outPut.setValue("Montant"); HtmlInputText inPut = new HtmlInputText(); outPut.setTitle("title"); dynamicLine.getChildren().add(inPut); System.out.print("tout va bien ici......."); return(""); }
celà peut etre due au faite que les element sont effectivement ajouter (dans la memoire) mais ils ne sont pas pris en compte car la page jsf n'est rafraichie.:oops:
est ce que quelqu'un peut voir comment je peux m'ensortir?
merci de nouveau.
JE connais pas trop richfaces mais je pense que tu dois lui dire quels composant mettre à jour dans un tag de ton composant.
Sinon vérifies que ta valeur est bien mise à jour dans ton action event, si non, tu peux utiliser le getnewvalue de l'objet passé en paramètre.
Si tu utilises RichFaces, ça devrait pas trop poser de problème.
Je te propose une solution :
Tu va encapsuler le conteneur comportant tes outputText et intputext par le composant a4j:outputPanel en attribuant à ce dit composant un id (on va prendre "toto")
Assigne à tes outputText et intputext un attribut rendered="#{monBean.isRendered}". isRendered sera a False par défaut.
Dans ta méthode typeSelected, tu changera la valeur du boolean "isRendered" en fonction du choix du combo : Fixe ici apparement donc.
Enfin, rajoute un attribut reRender à ton comboBox comme suit :
Logiquement, ca devrait marcher ;)Code:
1
2
3
4 <rich:comboBox id="typeRubrique" valueChangeListener="# {addRubriqueBean.typeSelected}" value="#{addRubriqueBean.type}" suggestionValues="#{addRubriqueBean.typeList}" reRender="toto"/>