【问题标题】:Update a table in a dialog box when edited in another dialog box在另一个对话框中编辑时更新对话框中的表
【发布时间】:2017-04-06 07:01:50
【问题描述】:

我在一个 html 页面中有两个对话框。 ONe 列出了数据表中的所有链接。当我单击此对话框上的编辑时,会打开另一个对话框,该对话框实际上是在编辑链接。我的问题是列出所有链接的数据表没有得到更新。请帮我解决一下这个。我已经尝试了一切,但都是徒劳的。

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>

【问题讨论】:

  • 您是否 100% 确定您通过 update=":editExternalLinksForm:fnpHomeExternalLinksTable" 正确引用了其他数据表?
  • 是的。有什么不对? hv 在这个上花了太多时间...请帮助
  • 我不知道,因为这是代码 sn-ps,只有 可以知道是否还有另一个命名容器。与update="editExternalLinkDialog" 相反的更新也很奇怪,因为它实际上是在另一个命名容器中,所以我希望你确实需要通过它前面的: 绝对引用它。
  • 基本上剩下的代码结构如下:

    欢迎

  • 这很奇怪,无法解释那个错误。请编辑您的问题并创建一个minimal reproducible example.. 顺便说一句,使用几乎相同的 id(只是一个 's' 的区别)容易出错(至少对于我们阅读来说也是如此)。使用“selectLinkDialog”和“editLinkDialog”之类的东西更明确

标签: jsf primefaces datatable updates


【解决方案1】:

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

...

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

...

【讨论】:

  • 试过这个。不工作。实际上,当我在 update 中放入一个支持 bean 方法时,我看到我的 update 在我的 actionListener 之前被调用。
  • @priya,没关系,你只是误解了更新的工作原理。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多