1

我正在尝试使用带有命令链接的 Ajax 来更新对话框。表单没有任何 ID,我也无法运行此页面,它显示未找到/不存在带有“对话框”的组件

<h:form>
    <p:tabView id="tabView">
        <p:tab id="tab1" title="Tab 1">
            <h:panelGrid columns="1" cellpadding="10">
                <h:dataTable value="#{testBean.dataList}" var="data">
                    <h:column>
                        <h:outputText value="#{data}" />
                    </h:column>
                    <h:column>
                        <p:commandLink action="#{testBean.loadCommentHistory(data)}"
                            update="dialog" oncomplete="dlg.show()">
                            <h:graphicImage url="resources/theme1/images/comments.gif"
                                styleClass="basicImageStyle" />
                        </p:commandLink>
                    </h:column>
                </h:dataTable>
                <p:dialog id="dialog" header="Dynamic Dialog" widgetVar="dlg">
                    <h:outputText value="#{testBean.commentHistory}" />
                </p:dialog>
            </h:panelGrid>
        </p:tab>
    </p:tabView>
</h:form>
4

1 回答 1

1

p:dataTable本身就是一个容器。p:commandLink正在搜索id 为“dialog”的p:dataTable元素。

解决方案:在表单中添加一个 id 并将对话框称为“:formid:dialog”。

编辑:

Thep:tabView或 thep:tab也是一个容器,因此请检查浏览器中对话框的 id 并使用它。;-) 应该注意避免 id's as jdt_id4

于 2012-12-08T13:18:00.890 回答