0

次のように、primefaces の動的な overlayPanel を使用しp:tabますp:dialog

    <p:dialog id="dialog" modal="true" header="Nouveau Article"
            widgetVar="dlg">

            <h:form prependId="false" enctype="multipart/form-data">

     <p:tabView id="monpanel">  

                    <p:tab id="tab1" title="Informations">
                    ....
                    </p:tab>
                    <p:tab id="tab2" title="Prix">
                    ....
                    </p:tab>
     <p:tab id="tab3" title="Stock et fournisseurs">


                        <h:outputLabel value="" /><h:outputLabel value="" /><h:outputLabel value="" />

                        <p:commandButton id="carBtn" value="Selectionner Fournisseurs" type="button" />

                        <p:overlayPanel  appendToBody="true" my="left top" id="carPanel" for="carBtn" hideEffect="fade"
                            dynamic="true">
                            <p:dataTable id="table" var="car" rowKey="#{car.fournisseurId}" 
                             value="#{articlesMB.listfournisseurs}"  selection="#{articlesMB.selectedFournisseurs}"
                                rows="10" paginator="true" >
                                <p:column  selectionMode="multiple" style="width:20px" />
                                <p:column headerText="Id">
                                    <h:outputText value="#{car.fournisseurId}" />
                                </p:column>

                                <p:column headerText="Nom">
                                    <h:outputText value="#{car.personne.nom}" />
                                </p:column>

                            </p:dataTable>
                        </p:overlayPanel>

                        </p:tab>
                         </p:tabView>
<p:commandButton id="article-ajouter"
                    update=":messages monpanel :articlesdata"
                    action="#{articlesMB.ajouter}" value="add" />
                         </h:form>
                         </p:dialog>

初めて正常に動作しますが、追加ボタンをクリックして検証に失敗し (何らかの原因で)、オーバーレイパネルの動的ボタンをクリックすると表示されますが、データテーブルの行の 1 つをチェックまたはチェック解除すると消えます。原因がわからない

この問題を解決する方法を知っていますか

4

2 に答える 2

1

cammandButton は 'process' 属性を使用する必要があり、情報を送信するコンポーネントを指定します (オーバーレイは指定しません)。

例:

<p:inputText id="txttest" required="true" value="" />
<p:commandButton process="txttest" id="article-ajouter"
                    update=":messages monpanel :articlesdata"
                    action="#{articlesMB.ajouter}" value="add" />
于 2013-04-23T13:47:28.050 に答える
1

オーバーレイ パネルが 1 回しか機能しない理由は、overlayPanel接続されているコマンド ボタンを保持するパネルを更新するためです。overlayPanelこれはPF 5 以降に発生したバグです。プロセス属性を再適用せずにこれを修正できます。このような解決策はコードの可読性を低下させると思います。

コマンドボタンのイベントでwidgetVarto overlayPanel、 say 'carPanelWDG'、および callPF('carPanelWDG').loadContents()関数を定義すると、すべてが機能します。onCompleteそして、そのようなことをした理由を説明するコメントがなくても、誰でも簡単に解釈できます.

于 2015-04-20T13:26:25.500 に答える