Jsf 不呈现confirmDialog

Jsf 不呈现confirmDialog,jsf,primefaces,Jsf,Primefaces,我目前正在学习JavaEE7的教程,目前的章节是JSF/PrimeFaces。我需要添加一个删除操作的确认对话框,页面呈现良好。当我按下commandButton(第14行)时,actionListener会触发,但是confirmation.show()会在web控制台中生成一个错误:“引用错误:未定义确认”,并且confirmDialog不会呈现。据我所知,“widgetVar=confirmation”是定义。想知道我做错了什么 <html xmlns="http://www.w3.

我目前正在学习JavaEE7的教程,目前的章节是JSF/PrimeFaces。我需要添加一个删除操作的确认对话框,页面呈现良好。当我按下commandButton(第14行)时,actionListener会触发,但是confirmation.show()会在web控制台中生成一个错误:“引用错误:未定义确认”,并且confirmDialog不会呈现。据我所知,“widgetVar=confirmation”是定义。想知道我做错了什么

<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
  xmlns:f="http://xmlns.jcp.org/jsf/core"
  xmlns:h="http://xmlns.jcp.org/jsf/html"
  xmlns:p="http://primefaces.org/ui">   
<body>
    <f:view contracts="#{view.locale.language}">
        <ui:composition template="/template.xhtml">
            <ui:define name ="content">
                <h1>#{msg['listCampaigns.my_campaigns']}</h1>
                <h:form>
                    <p:dataTable value="#{campaignListProducer.campaigns}" var="campaign">
                        <p:column>
                            <p:commandButton onclick="confirmation.show()" actionListener="#{listCampaignsController.doDeleteCampaign(campaign)}" icon="ui-icon-close" />
                        </p:column>
                        <p:column>
                            <f:facet name="header">#{msg['listCampaigns.name']}</f:facet>
                            <h:outputText value="#{campaign.name}" />
                        </p:column>
                        <p:column>
                            <f:facet name="header">#{msg['listCampaigns.target_amount']}</f:facet>
                            <h:outputText value="#{campaign.targetAmount}">
                                <f:convertNumber type="currency" currencyCode="EUR" />
                            </h:outputText>
                        </p:column>
                        <p:column>
                            <f:facet name="header">#{msg['listCampaigns.donated_so_far']}</f:facet>
                            <h:outputText value="#{campaign.amountdonatedSoFar}">
                                <f:convertNumber type="currency" currencyCode="EUR" />
                            </h:outputText>
                        </p:column>
                        <p:column>
                            <p:commandLink value="#{msg['listCampaigns.edit']}" ajax="false" action="#{listCampaignsController.doEditCampaign(campaign)}">
                            </p:commandLink>
                        </p:column>
                        <p:column>
                            <p:commandLink value="#{msg['listCampaigns.list_donations']}" ajax="false" action="#{listCampaignsController.doListDonations(campaign)}">
                            </p:commandLink>
                        </p:column>
                        <p:column>
                            <p:commandLink value="#{msg['listCampaigns.form']}" ajax="false" action="#{listCampaignsController.doEditDonationForm(campaign)}">
                            </p:commandLink>
                        </p:column>                                                           
                    </p:dataTable>
                    <p:commandButton value="#{msg['listCampaigns.add_campaign']}" ajax="false" action="#{listCampaignsController.doAddCampaign()}" />                            
                    <p:confirmDialog message="#{msg['listCampaigns.ask_delete_campaign']}" 
                                     header="#{msg['listCampaigns.delete_campaign']}" 
                                     severity="alert" 
                                     widgetVar="confirmation" >
                        <p:commandButton value="#{msg['listCampaigns.yes']}" 
                                         oncomplete="confirmation.hide()" 
                                         ajax="false" 
                                         actionListener="#{listCampaignsController.commitDeleteCampaign}" />
                        <p:commandButton value="#{msg['listCampaigns.no']}" onclick="confirmation.hide()" type="button" />
                    </p:confirmDialog>                        
                </h:form>
        </ui:define>
    </ui:composition>
</f:view>

#{msg['listCampaigns.my_campaigns']}
#{msg['listmagainments.name']}
#{msg['listmagainments.target_amount']}
#{msg['listCampaigns.provided_-so_-fare']}

您需要像这样访问对话框
PF('confirmation')
例如
PF('confirmation')。show()

这是版本5发布时引入的更改

小部件必须通过“PF”引用。e、 g.PF('widgetVarName').show() 而不是widgetVarName.show()


yes:)但是,将迁移指南url添加到书签中,然后进行任何版本更改,您将永远不会对此类内容感到困惑。尽管教程作者使用的是3.5版,但我们会给他一个提示-