J'ai besoin de rafraîchir la page actuelle lorsque l'on clique sur le bouton de confirmation. J'essaie de trouver la réponse sur Internet, mais avec peu ou pas de succès du tout. Ce serait bien s'il y avait un moyen de le mettre à jour depuis le front-end (JSF), pas depuis le bean de sauvegarde, mais je prendrai les deux réponses comme solutions.
Mon bouton de commande ressemble à ceci:
<a4j:commandButton id="deleteButton" styleClass="simpleButtonRed"
value="#{msg['common.delete']}"
execute="@this" render="@none" limitRender="true" >
<adn:confirm
id="confirmButtonas"
message="#{msg['common.delete.confirm']}"
confirmAction="#{messagesListBean.deleteMessages}"
confirmLabel="#{msg['common.confirm']}"
confirmBtnStyleClass="mainButtonGreen"
confirmImmediate="true"
confirmRender="errorMessageOuterPanel"
onConfirmComplete="if(#{!messagesListBean.operationCompleted}) {
#{rich:component('errorPanel')}.show();}"/>
</a4j:commandButton>
Vous pouvez utiliser javascript
location.reload();
Ou vous pouvez rediriger vers le même URI
que dans cette réponse .
Modifiez d'abord commandButton pour appeler la méthode du bean:
onConfirmComplete="#{messagesListBean.reload}"
Et dans le haricot:
public void reload() throws IOException {
ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
ec.redirect(((HttpServletRequest) ec.getRequest()).getRequestURI());
}
Vous pouvez utiliser l'attribut render
de a4j:commandButton
dans ce but. Exemple:
<a4j:commandButton value="buttonName"
action="#{bean.action}"
render="someForm" />
Dans votre code, changez render="@none"
à render="@form"
ou render="@all"
.