L'appel de JSF ManageBean après PageLoad à l'aide de f:événement postAddToView
Je suis en train d'écrire une application en utilisant JSF 2.0.
Pour une de la page, il y a une section de la page qui prend du temps pour s'afficher.
Pour améliorer l'expérience utilisateur, je pense à charger la page en premier et ensuite automatiquement faire un appel Ajax retour à la JSF gérer bean objet une fois que la page est chargée avec succès après la 1ère charge.
Je pense à l'utilisation de f:événement de type postAddView.
<h:outputText id="dummyId">
<f:event type="postAddToView" listener="#{mngBean.doSomething}" />
</h:outputText>
Cependant, il semble comme f:événement postAddToView est encore en cours de traitement avant que la page est affichée pour la première fois.
Les autres options que j'ai explorer est de créer un bouton caché, et obtenir javascript pour la déclencher. Il fonctionne cependant je me demandais simplement si il y a une belle composant JSF/événement qui peut faire cela à la place de l'utilisation de java script.
Merci pour votre aide.
<h:commandButton id="dmyButton"
value="#{mngBean.getSomething}"
actionListener="#{mngBean.doSomething}"
style="display: none"
type="submit">
Java Script
<script language="JavaScript">
$(document).ready(function() {
if (document.getElementById('form:dmyButton').value == 'true') {
document.getElementById('form:dmyButton').click();
}
});
</script>
Merci à tous pour votre aide à l'avance
OriginalL'auteur lawardy | 2010-08-18
Vous devez vous connecter pour publier un commentaire.
Je pense que le PreRenderViewEvent est ce que vous voulez.
http://javaserverfaces.java.net/nonav/docs/2.0/javadocs/javax/faces/event/PreRenderViewEvent.html
Bien que les docs ne le montrent pas, le preRenderViewEvent fonctionne avec f:l'événement. Je vais corriger les docs actuellement.
OriginalL'auteur edburns
PostAddToViewEvent est traitée "Lors de la Restauration de la Vue Phase, après un
composante a été ajoutée à la vue." (selon Java Server Faces 2.0 - La Référence Complète) ce qui signifie qu'il est vraiment très tôt dans le cycle de vie (Restauration de Vue est la première phase du cycle de vie).
Je ne pense pas que tout PhaseListener vous aideront dans ce cas, puisqu'ils s'exécutent sur le serveur, pas sur le côté client.
Cependant,
<f:ajax>
peut être appliquée à<h:body>
, avecevent="load"
. Je l'ai essayé, mais il n'a pas vraiment de travail,<f:ajax>
emballage<h:body>
rien ne s'est passé, dans l'autre sens autour de moi, je suisUnable to attach <f:ajax> to non-ClientBehaviorHolder parent
erreur.OriginalL'auteur egbokul