当按钮被点击时如何重新加载页面?

17

当确认按钮被点击时,我需要刷新当前页面。我试图在互联网上找到答案,但很少或者根本没有成功的经验。如果有一种方法可以从前端(JSF)更新它而不是从后端bean更新,那将是很好的,但我会接受两种答案作为解决方案。

我的命令按钮看起来像这样:

<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>
2个回答

26

您可以使用JavaScript来重新加载页面。

location.reload();

或者你可以重定向到与此答案中相同的URI

首先将commandButton更改为调用bean方法:

onConfirmComplete="#{messagesListBean.reload}"

在豆子中:

public void reload() throws IOException {
    ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
    ec.redirect(((HttpServletRequest) ec.getRequest()).getRequestURI());
}

2
您可以使用的render属性来实现此目的。 示例:
<a4j:commandButton value="buttonName"
    action="#{bean.action}"
    render="someForm" />

在你的代码中将 render="@none" 改为 render="@form" 或者 render="@all"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接