0

我使用primeface 3.5。我有一个 tabview,每个 tabview 都有一个带有表单的 inputMasks。我想在更改选项卡时重置 inputMask。我监听 ontabchange 事件并将值重置为 =“”,但 bean 重置值但 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

查看有关p:tabView. 一方面dynamic,当您选择某个标签时,您拥有指定选项卡内容是否使用 AJAX 加载的属性。另一方面,有一个属性cache指定选项卡的内容是否仅在您第一次选择选项卡时动态加载。

所以关于这个信息设置dynamic="true" cache="false"应该p:tabView为你解决问题。

另一个有趣的属性是activeIndex. 如我所见,您在选项卡更改时手动设置活动选项卡的索引。如果您可以在 tabchange 上提交 tabview 并且您已设置activeIndex="#{docData.activeTabIndex}"自动跟踪活动的 tabindex。如果这符合您的要求,请查看文档。

于 2013-08-13T08:22:53.823 回答
0

我想正如你所说 -dynamic="true" cache="false">- 解决了我的问题。其实我测试的程序有问题,我的问题已经解决了。我认为在我的情况下这种情况的原因 cache=false 如文档所述。谢谢你。

于 2013-08-12T22:13:46.483 回答
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 回答