2009-09-22 4 views
0

dans mon application JSF J'ai besoin de mettre à jour le composant ui pendant la phase d'application d'invocation. Peut-il être fait? Voici le code que j'ai produit jusqu'à présent:JSF - Mise à jour du modèle dans la phase d'application d'invocation

public void resetDataScroller(ActionEvent actionEvent) { 

    final FacesContext ctx = FacesContext.getCurrentInstance(); 

    ctx.getViewRoot().invokeOnComponent(ctx, "paginator_and_table:scroll_1", new ContextCallback() { 
     public void invokeContextCallback(FacesContext facesContext, UIComponent uiComponent) { 

      HtmlDatascroller htmlDatascroller = (HtmlDatascroller) uiComponent; 

      htmlDatascroller.setPage(1); 
      htmlDatascroller.setValue(1); 


     } 
    }); 

} 

Cet écouteur d'action semble en composant dataScroller et page jeux et de la valeur à 1. Unfortunatelly il ne semble pas fonctionner du tout, parce que rendu dataScroller a la page différente de celle 1.

Ai-je raté quelque chose?

Répondre

1

J'imagine que votre resetDataScroller une méthode appelée par un attribut actionListener d'un bouton de commande/lien sur votre page?

Je ne comprends pas vraiment ce que vous essayez de faire ... Avez-vous juste besoin d'écrire ce code? :

public void resetDataScroller(ActionEvent evt) { 
    final FacesContext ctx = FacesContext.getCurrentInstance(); 
    HtmlDatascroller htmlDatascroller = (HtmlDatascroller) ctx.getViewRoot().findComponent("paginator_and_table:scroll_1"); 
    htmlDatascroller.setPage(1); 
    htmlDatascroller.setValue(1); 
} 

Si vous modifiez ces propriétés du HtmlDatascroller au cours de cette phase, ils seront utilisés par JSF au cours de la dernière phase (la phase Render Response) pour générer votre code HTML ...

Questions connexes