0
<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:「form:analiseTable」から参照されている識別子「produtosmanycheck」のコンポーネントが見つかりません。org.primefaces.util.ComponentUtils.findClientIds(ComponentUtils.java:251)at org.primefaces.util.AjaxRequestBuilder.addIds(AjaxRequestBuilder.java:102)at org.primefaces.util.AjaxRequestBuilder.update(AjaxRequestBuilder.java:90 )。

私はすでに試しました=:form:produtosmanycheck、form:produtosmanycheck、:produtosmanycheck、produtosmanycheck

FORMIDも削除してみました...成功しませんでした...

私は何が間違っているのですか?DataTable以外のコンポーネントを更新できません...

4

3 に答える 3

5

produtosmanycheckあなたはそれを使用して 到達することができます:form:produtosmanycheck

編集:ネストされたフォームは正しく機能せず、発生しているようなあらゆる種類のDOMの問題が発生します。ビューコンポーネントを別々のフォームに分割する方法を考えてから、上記の名前のアクセスを試してください。

于 2012-10-02T03:13:08.957 に答える
3

ID「produtosmanycheck」をp:selectManyCheckbox自体ではなく、親のp:panel要素に配置してみましたか?

JSFでは、先頭にIDがfalseであっても、予期しない動作や動作が発生しないため、フォームのネストは絶対に行わないでください。

于 2012-10-01T22:35:34.513 に答える
3

私は自分の答えを投稿し(最終的にはネストされたformsアイデアを思いついた)、@ kolossusは基本的に正しく、ネストされたものについて知ることができなかったので投票しformsます。

ネストformsはJSFの「もの」だけではなく(@JordanDenisonの回答からわかるように)、HTMLの一般的なルールです-> HTMLではネストformsは禁止されています!

このネストフォームをHTMLで読みたいと思うかもしれません

于 2012-10-02T14:31:38.450 に答える