2010-12-15 70 views
0

folks! J'ai une table dans JSF <h:dataTable> mais quand je crée un nouvel objet (avec JPA forward) dans ma table c'est parfois des shows mais parfois non. Je dois cliquer dans un onglet pour recharger le contenu du xhtml car le nouvel élément n'est pas affiché. Pourrais-je recharger la page après l'ajout de l'objet à la liste à partir du backing bean?JSF - Pas de contenu de rechargement

Merci d'avoir lu et désolé pour mon anglais.

Répondre

0

vous ne pouvez pas contrôler la page du backing bean sauf reload totale, mais si vous crée un nouveau objet sur une action, par exemple un clic de bouton, vous pouvez faire en utilisant ajax suivants:

<h:commandButton actionListener="#{bean.addNewObject}" value="Add"> 
    <f:ajax execute="@this" render="tableId" event="click" /> 
</h:commandButton> 

Si vous ne souhaitez pas utiliser ajax et recharger la page entière, puis utilisez action pARAM la commandButton:

<h:commandButton action="#{bean.addNewObjectAction()}" value="Add"/> 

où addNewObjectAction retourne null à recharger la page.

0

Apparemment, vous stockez la liste d'éléments pour la datatable dans la portée de session et ne la rechargez pas à chaque ajout d'un nouvel élément. Vous devez le recharger dans la méthode d'action d'ajout d'un nouvel élément.

public void add() { 
    saveNewItemInDB(newItem); 
    items = reloadListOfItemsFromDB(); 
}