0

プライムフェイス3.5を使用しています。タブビューがあり、各タブビューにはフォーム付きのinputMasksがあります。タブを変更したときにinputMaskをリセットしたい。ontabchange イベントをリッスンし、値を ="" にリセットしますが、ビーンは値をリセットしますが、View はリセットされません。

        <p:tabView id="tabViewOS"  binding="#{docData.tabView}" dynamic="true" cache="true"  rendered="#{userData.opRendered}">



            <p:ajax event="tabChange" listener="#{docData.onTabChange}"  immediate="true"/>

            <p:tab id="tab1" title="AB">


                       <h:form id="ABForm">

                       <h:panelGrid id="abgrid" columns="3" cellpadding="5">


                        <h:outputText value="AB NO: " />
                        <p:inputMask value="#{docData.abNo}" mask="999-99999999"
                            id="ABinput" required="true"


                        </p:inputMask>
                        <p:message id="msgAB" for="ABinput" showDetail="true" autoUpdate="true" />


                        <h:outputText value="" />
                        <p:commandButton value="GETİR" style="float:right;" ajax="false"
                            action="#{docData.getDoc}" />
                            </h:panelGrid>
                       </h:form>


            </p:tab>





  public void onTabChange(TabChangeEvent event) {

      this.activeTabIndex = tabView.getChildren().indexOf(event.getTab());
      FacesContext.getCurrentInstance().renderResponse();   
      System.out.println(this.activeTabIndex);
      this.abNo="";




      documents.clear();


}
4

3 に答える 3

0

イベントの呼び出し方法を変更してみてください。immediate=true使用する代わりにprocess="@this"

これを変える:

<p:ajax event="tabChange" listener="#{docData.onTabChange}"  immediate="true"/>

これに:

<p:ajax event="tabChange" listener="#{docData.onTabChange}"  process="@this" update="ABinput"/>
于 2013-08-12T17:43:04.723 に答える
0

あなたが言ったように、 -dynamic="true" cache="false">- が私の問題を解決すると思います。実際、私はプログラムに欠陥があることをテストしましたが、私の問題はすでに解決されています。ドキュメントが言ったように、私の場合、この状況の原因は cache=false だと思います。ありがとうございました。

于 2013-08-12T22:13:46.483 に答える
0

のprimefacesのドキュメントを見てくださいp:tabView。一方では、dynamicタグを選択したときにタブのコンテンツが AJAX で読み込まれるかどうかを指定するプロパティがあります。一方cache、タブを初めて選択したときにのみタブのコンテンツを動的にロードするかどうかを指定するプロパティがあります。

したがって、この情報の設定に関してdynamic="true" cache="false"p:tabView、あなたのためにトリックを行う必要があります.

もう 1 つの興味深いプロパティは ですactiveIndex。ご覧のとおり、タブの変更時にアクティブなタブのインデックスを手動で設定しています。tabchange で tabview を送信できactiveIndex="#{docData.activeTabIndex}"、アクティブな tabindex を設定している場合は、自動的に追跡されます。これが要件に適合する場合は、ドキュメントを参照してください。

于 2013-08-13T08:22:53.823 に答える