Primefaces confirmdialog不会调用backingbean

时间:2016-06-17 11:42:36

标签: jsf jsf-2 primefaces

对于我的网络应用程序,我想显示一个数据表,其中包含编辑,删除和添加新数据集的选项。 显示数据和使用在线编辑证明是没有问题的。 删除后需要进行某种确认,所以我在按钮上添加了一个确认对话框。 但是,当我为添加机制添加第二个对话框时,确认对话框突然不再触发删除操作。 所以我试图尽可能地减少代码并发现,根据对话框的顺序,第二个对话框永远不会触发相关的操作。

这是简化的模板:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://xmlns.jcp.org/jsf/html"
    xmlns:f="http://xmlns.jcp.org/jsf/core"
    xmlns:p="http://primefaces.org/ui"
    xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
<ui:composition template="/templates/abstractLayout.xhtml"> 
    <ui:define name="contentBase">
        <p:dialog header="Does Work" widgetVar="inputDialog" modal="true">
            <h:form id="addRolleForm">
            <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" />
            <p:commandButton id="addRolle" value="Do it" action="#{testView.works}" oncomplete="PF('inputDialog').hide();"/>
            <p:commandButton id="cancel" value="cancel" onclick="PF('inputDialog').hide();"/>
            </h:form>
        </p:dialog>
        <h:form id="test">
            <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" />
            <p:commandLink id="deleteLink" styleClass="editCell ui-icon ui-icon-trash" action="#{testView.doesntWork}" title="Delete" process="@all">
                <p:confirm header="confirm" message="Yes doesnt activate action" icon="ui-icon-alert"/>
            </p:commandLink>
        </h:form>
        <p:commandButton id="openInputDlg" title="Work work work" icon="ui-icon-plus" onclick="PF('inputDialog').show();" type="button"/>
        <p:confirmDialog global="true">
            <p:commandButton value="Yes" type="button" styleClass="ui-confirmdialog-yes" icon="ui-icon-check" />
            <p:commandButton value="No" type="button" styleClass="ui-confirmdialog-no" icon="ui-icon-close" />
        </p:confirmDialog>
    </ui:define>

</ui:composition>
</html>

现在背后的相关视图:

/*package and imports*/
@ManagedBean
@RequestScoped
public class TestView {

    GenericLogger log = new GenericLogger(this);

    public void works() {
        log.logEnter("Works");
        log.logReturn("Work returned");
    }

    public void doesntWork() {
        log.logEnter("DOES Work"); //never enters this method
        log.logReturn("DID return");

    }
}

如果我删除另一个对话框,每个对话框本身都能正常运行。 我已经尝试将confirmdialog的命令按钮设置为自己的形式,但这并没有改变任何内容。

搜索论坛或网络向我展示了大量其他情况,其中没有一个适用于我的情况。感谢您对此问题的任何帮助

0 个答案:

没有答案