確認ボタンがクリックされたときに現在のページを更新する必要があります。インターネットで答えを見つけようとしていますが、ほとんどまたはまったく成功していません。バッキングBeanからではなく、フロントエンド(JSF)から更新する方法があればいいのですが、解決策として両方の答えを取り上げます。
私のコマンドボタンは次のようになります。
<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>
javascript を使用できます
location.reload();
または、 この回答 と同じURI
にリダイレクトできます。
最初に、commandButtonを変更してBeanメソッドを呼び出します。
onConfirmComplete="#{messagesListBean.reload}"
そして、Beanで:
public void reload() throws IOException {
ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
ec.redirect(((HttpServletRequest) ec.getRequest()).getRequestURI());
}
この目的でa4j:commandButton
のrender
属性を使用できます。例:
<a4j:commandButton value="buttonName"
action="#{bean.action}"
render="someForm" />
コードでrender="@none"
をrender="@form"
またはrender="@all"
に変更します。