我不确定我的HTML代码有什么问题。从我读到的,它应该工作。我甚至尝试使用prependId="false"
来解决无法找到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很好。
答案 0 :(得分:1)
好的我再次查看错误消息后终于明白了。
找不到标识符为“:form2:freqTable”的组件,引自“j_idt54:j_idt56”
idt54指的是TabView,idt56指的是命令按钮。事实证明,我的按钮的AJAX更新字符串不够原始,我所有其他尝试都引用了错误的父容器。我在p:tabView中添加了一个id并更改了更新字符串并且它有效。
<p:commandButton value="Get Frequency From Begining"
actionListener="#{LottoMaxBacking.loadAllDrawFreq}"
update="tv:form2:freqTable" />