0

我对这段代码有疑问,我试图在转到另一个 facelet 之前显示一个 popupPanel 来执行一个操作,问题是在渲染新的 facelet 之前弹出窗口显示了一会儿,我认为它有事情要做使用异步调用,但我不知道如何修复它。

谢谢

                <h:outputText value="Do you want to save your changes?"/>
                <br/><br/><br/>
                <a4j:region id="panel-region">
                        <h:commandButton action="#{saveReminderBackingBean.saveBundle}" value=" Yes " onclick="#{rich:component('savePopupPanel')}.hide();bm.showLoading()" styleClass="pnx-btn pnx-btn-secondary " style="padding-left:8px;padding-right:8px"/>
                        &nbsp;&nbsp;&nbsp;&nbsp;
                        <h:commandButton action="#{saveReminderBackingBean.clearFlags}" value="No" onclick="#{rich:component('savePopupPanel')}.hide();bm.showLoading()" styleClass="pnx-btn pnx-btn-secondary " style="padding-left:8px;padding-right:8px"/>

                </a4j:region>
                <br/>
                </div>
            </rich:popupPanel>

4

1 回答 1

0

<h:commandButton/>将触发一个完整的 JSF POST 请求,因此创建和显示的弹出窗口将在请求结束时呈现整个页面时自动关闭。

您应该将命令按钮替换为<a4j:commandButton/>

    <a4j:commandButton action="#{saveReminderBackingBean.saveBundle}" value=" Yes " onclick="#{rich:component('savePopupPanel')}.hide();bm.showLoading()" styleClass="pnx-btn pnx-btn-secondary " style="padding-left:8px;padding-right:8px"/>
                    &nbsp;&nbsp;&nbsp;&nbsp;
    <a4j:commandButton action="#{saveReminderBackingBean.clearFlags}" value="No" onclick="#{rich:component('savePopupPanel')}.hide();bm.showLoading()" styleClass="pnx-btn pnx-btn-secondary " style="padding-left:8px;padding-right:8px"/>

触发部分请求,而<a4j:commandButton/>不是完整请求。因此,页面不会重新加载,您的弹出窗口将保持打开状态

于 2013-08-15T05:53:15.277 回答