<h:form id="form">
<p:messages />
<p:panel header="Análise">
<h:outputText value="Mês da análise: " />
<p:selectOneMenu value="#{report005.selectedMes}">
<f:selectItems var="data" value="#{report005.analiseMeses}" itemLabel="#{report005.formataDataCombo(data)}" />
<f:convertDateTime pattern="MM/yyyy" />
</p:selectOneMenu>
<p:commandButton value="Análises" update="analiseTable" actionListener="#{report005.loadAnalise()}" />
<p:dataTable id="analiseTable" var="pes" value="#{report005.analiseModel}" selection="#{report005.selectedAnalise}" emptyMessage="Não há registros...">
<p:column selectionMode="multiple" style="width:18px" />
<p:ajax event="rowSelectCheckbox" listener="#{report005.loadAnaliseProduto()}" update="produtosmanycheck" />
<p:column headerText="Código">
#{pes.cod_analise}
</p:column>
<p:column headerText="Nome">
#{pes.dsc_analise}
</p:column>
<p:column headerText="Descrição">
#{pes.dsc_resumida_acao}
</p:column>
<p:column headerText="Planejamento">
<h:outputText value="#{pes.dat_planejamento_analise}">
<f:convertDateTime pattern="dd/MM/yyyy" />
</h:outputText>
</p:column>
</p:dataTable>
</p:panel>
<p:panel header="Produto Gerencial">
<p:selectManyCheckbox id="produtosmanycheck" value="#{report005.selectedProduto}" layout="pageDirection">
<f:selectItems id="teste" value="#{report005.produtos}" />
</p:selectManyCheckbox>
</p:panel>
<p:commandButton value="Enviar" action="#{report005.send}" ajax="false" />
</h:form>
当AJAX事件“rowSelectCheckbox”被触发时,它没有找到要更新的'produtosmanycheck'组件,将以下错误返回给我:
javax.faces.FacesException:找不到带标识符的组件 “produtosmanycheck”引用自“form:analiseTable”。在 org.primefaces.util.ComponentUtils.findClientIds(ComponentUtils.java:251) 在 org.primefaces.util.AjaxRequestBuilder.addIds(AjaxRequestBuilder.java:102) 在 org.primefaces.util.AjaxRequestBuilder.update(AjaxRequestBuilder.java:90)
我已经尝试=:form:produtosmanycheck,form:produtosmanycheck,:produtosmanycheck,produtosmanycheck
我也尝试删除了FORM ID ...但没有成功......
我做错了什么?我无法更新除DataTable之外的任何组件......
答案 0 :(得分:5)
您可以使用produtosmanycheck
:form:produtosmanycheck
编辑:嵌套表单将不正常工作,并提供各种DOM问题,例如您遇到的问题。找出一种方法将视图组件分成单独的表单,然后尝试上面提到的访问。
答案 1 :(得分:3)
您是否尝试将id“produtosmanycheck”放在父p:panel元素而不是p:selectManyCheckbox本身?
表格嵌套绝不应该在JSF中完成,即使前缀ID为false,因为它会导致意外或没有行为。
答案 2 :(得分:3)
我会发布自己的答案(最后我想出了嵌套的forms
想法)以及投票@kolossus,因为他基本上是正确的,无法了解嵌套的forms
。
嵌套forms
不仅仅是JSF的“东西”(从@JordanDenison的答案可能看起来如此),它是HTML的一般规则 - &gt; HTML中禁止嵌套forms
!
您可能需要阅读此nesting forms in HTML