1

我不确定我的 HTML 代码有什么问题。从我读到的,它应该工作。我什至尝试使用prependId="false"which 并没有解决找不到 UI 组件的问题。

<p:tabView>
        <p:tab title="Tab1" id="tab1">
            <h:form id="form1" prependId="false">
                <p:panelGrid columns="2" id="grid1">

                    <h:outputLabel for="minDraw" value="Starting draw number:" />
                    <p:inputText id="minDraw" value="#{LottoMaxBacking.minDraw}" />
                    <p:commandButton value="Get Frequency From Begining"
                        actionListener="#{LottoMaxBacking.loadAllDrawFreq}"
                        update=":form2:freqTable" />
                </p:panelGrid>
            </h:form>
            <h:form id="form2" prependId="false">
                <p:dataTable var="entry" value="#{LottoMaxBacking.drawFreqList}"
                    id="freqTable">
                    <f:facet name="header">
                        <h:outputText value="#{LottoMaxBacking.tableHeader}" />
                    </f:facet>
                    <p:column sortBy="#{entry.key}" headerText="Ball Number">

                        <h:outputText value="#{entry.key}" />

                    </p:column>
                    <p:column sortBy="#{entry.value}" headerText="Frequency">

                        <h:outputText value="#{entry.value}" />

                    </p:column>

                </p:dataTable>
            </h:form>
        </p:tab>
        <p:tab title="Tab 2"></p:tab>
    </p:tabView>

我试过":tab1:form2:freqTable", ":freqTable""freqTable"但它们都不起作用。当我将两个表单作为一个表单放在一起时,它会发现 freqTable 很好。

4

1 回答 1

1

好的,我在再次查看错误消息后终于弄清楚了。

找不到从“j_idt54:j_idt56”引用的标识符为“:form2:freqTable”的组件

idt54 指的是 TabView,idt56 指的是命令按钮。所以事实证明,我的按钮的 AJAX 更新字符串不够原始,我的所有其他尝试都引用了错误的父容器。我向 p:tabView 添加了一个 id 并更改了更新字符串并且它起作用了。

<p:commandButton value="Get Frequency From Begining" 
    actionListener="#{LottoMaxBacking.loadAllDrawFreq}"
    update="tv:form2:freqTable" />
于 2013-02-22T22:38:14.847 回答