web-dev-qa-db-ja.com

ボタンがクリックされたときにページをリロードする方法は?

確認ボタンがクリックされたときに現在のページを更新する必要があります。インターネットで答えを見つけようとしていますが、ほとんどまたはまったく成功していません。バッキング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>
10
WheelPot

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());
}
16
Jordi Castilla

この目的でa4j:commandButtonrender属性を使用できます。例:

<a4j:commandButton value="buttonName"
    action="#{bean.action}"
    render="someForm" />

コードでrender="@none"render="@form"またはrender="@all"に変更します。

2
Vasil Lukach