2013-01-09 11 views
6

エラーメッセージなどを表示するために、アクションを実行した後にp:tabViewを更新する必要があります。p:tabViewのアクティブなタブのみを更新するには?

検証するフィールドはさまざまなタブにあります。 PrimeFacesでは、非表示のタブは更新しないでください(編集フィールドが見えなくなり、リフレッシュされるとp:autoCompleteなどの値が失われるため)、タブビュー全体を更新すると、もちろんバグのような動作になります。ヌルード)。

アクティブなタブのみを更新する必要がありますが、commandButtonの更新属性でアクティブなタブのみを対象にする方法はありますが、p:tabView全体ではありませんか?

答えて

4

私は簡単な例を作った:

<h:form id="form"> 
    <p:tabView id="tabview"> 
     <p:tab title="tab 1"> 
      <p:commandButton value="update" update="@parent" /> 
     </p:tab> 
     <p:tab title="tab 2"> 
      <p:outputPanel id="tab2"> 
       <p:commandButton value="update" update=":form:tabview:tab2" /> 
      </p:outputPanel> 
     </p:tab> 
    </p:tabView> 
</h:form> 

しかし、(私はタブ1で行うように)私はIDまたは@parentを使用してp:tabを更新するときに、タブ(DIV)は、奇妙削除されます。 ...この問題を回避するには、私はタブ2.


HAに行ったように容器の中にタブの内容をラップすることです! tabview外のボタンでhttps://code.google.com/p/primefaces/issues/detail?id=3518

例:あなたが直接タブを更新できない理由が見つかり

<h:form id="form"> 
    <p:tabView id="tabview" binding="#{tabView}"> 
     <p:ajax event="tabChange" update=":form:button" /> 
     <p:tab title="tab 1"> 
      <p:outputPanel id="tab0"> 
       <p:panel>text</p:panel> 
      </p:outputPanel> 
     </p:tab> 
     <p:tab title="tab 2"> 
      <p:outputPanel id="tab1"> 
       <p:panel>text</p:panel> 
      </p:outputPanel> 
     </p:tab> 
    </p:tabView> 
    <p:commandButton id="button" value="update" 
     update=":form:tabview:tab#{tabView.activeIndex}" /> 
</h:form> 
+0

をしかし、私はタブ内にあるボタンを書いていない、と彼らは私の場合ではありません。 –

+0

そして、tabview全体を更新すると、見えないタブの値がnullにリセットされます。 –

+0

@lechlukaszタブビューの外側のボタンで更新を表示します;-) – siebz0r