【问题标题】:Primefaces confirmDialog does nothing in actionListenerPrimefaces confirmDialog 在 actionListener 中什么都不做
【发布时间】:2012-11-30 09:59:05
【问题描述】:

我有一个comandButton,它调用一个必须消除用户的confirmDialog,但它从不调用其actionListener中的方法。

这是代码:

<p:dialog id="dialogEditar" widgetVar="dialogEditar" header="#{bundle_usuarios.usuarios_titulo_edicion}" resizable="false">
    <p:panelGrid id="panelEditar"
        <p:row>
            <p:column>
                <p:commandButton id="btModificar" type="submit" actionListener="#{usuariosMB.modificarUsuario()}"
                             value="#{bundle_general.general_modificar}" update="formEditar" rendered="#{usuariosMB.permisoCtMenu}"/>
            </p:column>
            <p:column colspan="7">
                <p:commandButton id="btEliminar" type="button" onclick="confirmation.show()"
                              value="#{bundle_general.general_eliminar}"/>
            </p:column>
        </p:row>
    </p:panelGrid>
    <p:confirmDialog appendToBody="true" id="confirmDialog" message="#{bundle_usuarios.usuarios_confirma}"
                     header="#{bundle_usuarios.usuarios_titulo_confirma_eliminar}" severity="alert" widgetVar="confirmation">
        <p:commandButton id="confirm" type="submit" value="#{bundle_usuarios.usuarios_aceptar_eliminar}"
                         update="dialogEditar, formEditar" oncomplete="confirmation.hide()"
                         actionListener="#{usuariosMB.eliminarUsuario()}" rendered="#{usuariosMB.permisoCtMenu}" /> 
        <p:commandButton id="decline" value="#{bundle_usuarios.general_cancelar}" onclick="confirmation.hide()" type="button" />
    </p:confirmDialog>
</p:dialog>

如果我输入相同的代码,但没有确认对话框,它会运行并删除用户而不会出现问题。

运行成功的代码如下:

<p:dialog id="dialogEditar" widgetVar="dialogEditar" header="#{bundle_usuarios.usuarios_titulo_edicion}" resizable="false">
    <p:panelGrid id="panelEditar"
        <p:row>
            <p:column>
                <p:commandButton id="btModificar" type="submit" actionListener="#{usuariosMB.modificarUsuario()}"
                             value="#{bundle_general.general_modificar}" update="formEditar" rendered="#{usuariosMB.permisoCtMenu}"/>
            </p:column>
            <p:column colspan="7">
                 <p:commandButton id="btEliminar" type="submit" actionListener="#{usuariosMB.eliminarUsuario()}" value="#{bundle_general.general_eliminar}" update="dialogEditar, formEditar" rendered="#{usuariosMB.permisoCtMenu}"/>
            </p:column>
        </p:row>
    </p:panelGrid>
</p:dialog>

另一件事,当我单击 id="confirm" 的 commandButon 时,confirmDialog 永远不会消失,并且它一直被阻止在窗口中。

如果您需要更多详细信息,请告诉我哪些需要。 请问,有什么建议吗? 谢谢!

【问题讨论】:

    标签: java jsf primefaces


    【解决方案1】:

    如果您的对话框放置在 h:form 中,那么从该表单执行并将 h:form 放置在对话框内是一个很好的练习。您仍然可以通过 widgetVar 访问

    <h:form>
    ....
    </h:form>
    
    <p:dialog>
    
    <h:form>
    ...
    <p:commandButton />
    <h:form>
    
    </p:dialog>
    

    【讨论】:

    • 我明天会看到我的代码,对不起,但我必须做其他事情,我无法检查它。谢谢!
    • 这是我的错误,谢谢你的朋友,很抱歉稍后再回答你。 :S
    • @Darkfalk 很高兴为您提供帮助
    【解决方案2】:

    将命令按钮更改为普通按钮

    <p:commandButton id="confirm" type="submit" value="Your Command Text"/>
    

    然后在点击事件上调用对话框

    <p:commandButton id="confirm" type="button" value="Your Command Text" onclick="dialog.show()"/>
    

    dialog 是对话的widget var

    然后您可以从确认对话框中的命令按钮执行删除操作。

    看起来您已经进行了此更改。您仍然遇到同样的问题吗?

    【讨论】:

    • 我只是试了一下,结果还是一样。
    • 那么您一定缺少 HRgiger 回答的表格。确保不要将表单放入表单中。
    猜你喜欢
    • 2015-10-05
    • 1970-01-01
    • 2017-12-22
    • 2016-12-07
    • 2016-06-29
    • 2014-04-26
    • 2019-03-08
    • 2016-12-24
    • 2017-04-18
    相关资源
    最近更新 更多