如何在不向服务器发送数据的情况下关闭表单内的模式窗口并防止页面重新加载?

问题描述 投票:0回答:1

我有一个带有 javaee 和 primefaces 的网络,并且我已将 bootstrap 集成到该项目中。 我知道使用 p:dialog 我可以执行与引导模式窗口相同的行为,但我实现了 adminlte 插件,并且 p:dialog 不显示为模式窗口。

引导模式窗口工作正常,但是当它位于表单内时,它会重新加载页面,就好像它正在向服务器发送数据一样,我不希望这样。 我怎样才能让它关闭模态框就这样?

我尝试过使用dispose()、hide(),但之后就打不开了。

    <h:form id="frm_Dialogo">
        
        <div class="modal fade show" id="dlg_Dialogo1">
            <div class="modal-dialog">
                <div class="modal-content">
                    <div class="modal-header" style="background:#E1EFF8">
                        <p:outputLabel value="#{ogeneralvista.tituloModal}" styleClass="tituloLetra" style="font-size:16px;"></p:outputLabel>
                        <button class="btn-close" data-dismiss="modal"></button>
                        <h:commandLink onclick="return cerrarModal();" styleClass="btn-close" />
                        <p:commandButton styleClass="btn-close" action="#{ogeneralvista.cierraEjecutaConsulta()}" update="frm_Dialogo"/>
                    </div>
                </div>
            </div>
        </div>
        
    </h:form>
jsf primefaces bootstrap-modal bootstrap-5
1个回答
0
投票

...但是我实现了 adminlte 插件,并且

p:dialog
没有显示为模式窗口...

您始终可以将

ApplicationFactory
ApplicationWrapper
一起使用,并覆盖
createComponent
,例如:

@Override
public UIComponent createComponent(FacesContext context, String componentType, String rendererType) {
    UIComponent component = super.createComponent(context, componentType, rendererType);

    if (component instanceof Dialog) {
        Dialog dialog = (Dialog) component;
        dialog.setModal(true);
    }

    return component;
}

这会将所有对话框创建为模态对话框。

参见https://primefaces.github.io/primefaces/13_0_0/#/core/globalattributes

© www.soinside.com 2019 - 2024. All rights reserved.