Jsf 在另一个对话框中编辑时更新对话框中的表

Jsf 在另一个对话框中编辑时更新对话框中的表,jsf,primefaces,datatable,updates,Jsf,Primefaces,Datatable,Updates,我在一个html页面中有两个对话框。其中一个列出了数据表中的所有链接。当我单击此对话框上的“编辑”时,会打开另一个对话框,实际编辑链接。我的问题是列出所有链接的datatable没有得到更新。请帮我做这个。我什么都试过了,但没有成功 dialog1.xhtml <p:dialog id="selectLinkDialog" styleClass="fnp-dialog" modal="true" appendToBody="false"

我在一个html页面中有两个对话框。其中一个列出了数据表中的所有链接。当我单击此对话框上的“编辑”时,会打开另一个对话框,实际编辑链接。我的问题是列出所有链接的datatable没有得到更新。请帮我做这个。我什么都试过了,但没有成功

dialog1.xhtml

<p:dialog id="selectLinkDialog" styleClass="fnp-dialog"
            modal="true" 
            appendToBody="false"
            widgetVar="selectLinkDialog">

            <h:form id="selectLinkForm">

                <p:dataTable id="externalLinksTable"
                    value="#{fnpHomeBackingBean.externalLinks}" var="model"
                    widgetVar="fnpHomeExternalLinksTable">



                    <p:column headerText="Actions">
                            <p:commandLink id="external-link-edit-#{index}" 
                              value="Edit" update="editLinkDialog"              
                              oncomplete="PF('editLinkDialog').show(); 
                             return false;">
                             <f:setPropertyActionListener value="#{model}" 
                               target="#
                                {fnpHomeBackingBean.selectedExternalLink}" />
                            </p:commandLink>
                    </p:column> 
                </p:dataTable>              
            </h:form>
        </p:dialog>

dialog2.xhtml

<p:dialog id="editLinkDialog" header="Edit External Link" modal="true"
            widgetVar="editLinkDialog">
            <h:form id= "editLinkForm">


                <p:commandButton id="saveExternalLinkButton" value="Save" 
                    update=":selectLinkForm:externalLinksTable" 
                    actionListener="#{fnpHomeBackingBean.saveExternalLink()}">
                </p:commandButton>
                </h:form>
</p:dialog>

尝试使用jquery选择器更新表单

...

<p:commandButton id="saveExternalLinkButton" value="Save" 
    update="@(form[id*='selectLinkForm'])"
    actionListener="#{fnpHomeBackingBean.saveExternalLink()}">
</p:commandButton>

...
。。。
...

尝试使用jquery选择器更新表单

...

<p:commandButton id="saveExternalLinkButton" value="Save" 
    update="@(form[id*='selectLinkForm'])"
    actionListener="#{fnpHomeBackingBean.saveExternalLink()}">
</p:commandButton>

...
。。。
...

您是否100%确定通过
更新=“:editExternalLinksForm:fnpHomeExternalLinksTable”
正确引用了其他数据表?是。有什么不对劲吗?hv在这方面花费了太多时间…pl Help我不知道,因为这是代码片段,只有您才能知道是否还有另一个namingcontainer。而另一种方式的更新
update=“editExternalLinkDialog”
也很奇怪,因为它实际上位于另一个namingcontainer中,所以我希望您确实需要绝对通过它前面的
引用它。基本上,其余代码的结构如下:欢迎,这很奇怪,我无法解释这个错误。请编辑您的问题并创建。。顺便说一句,使用几乎相同的id(只有一个不同)容易出错(至少对我们阅读来说也是如此)。使用类似“selectLinkDialog”和“editLinkDialog”更为明确,您可以100%确保通过
更新=“:editExternalLinksForm:FnphomeExternalLinkTable”
?是正确引用其他数据表。有什么不对劲吗?hv在这方面花费了太多时间…pl Help我不知道,因为这是代码片段,只有您才能知道是否还有另一个namingcontainer。而另一种方式的更新
update=“editExternalLinkDialog”
也很奇怪,因为它实际上位于另一个namingcontainer中,所以我希望您确实需要绝对通过它前面的
引用它。基本上,其余代码的结构如下:欢迎,这很奇怪,我无法解释这个错误。请编辑您的问题并创建。。顺便说一句,使用几乎相同的id(只有一个不同)容易出错(至少对我们阅读来说也是如此)。使用类似“selectLinkDialog”和“editLinkDialog”的方法更明确地说明了这一点。不起作用。事实上,当我在更新中加入一个支持bean方法时,我看到我的更新在actionListener之前被调用。@priya,这没关系,你只是误解了更新的工作原理。试过这个。不起作用。实际上,当我在update中加入一个backingbean方法时,我看到我的update在actionListener之前被调用。@priya,这没关系,你只是误解了update的工作原理。