2 つのタブを含むタブ ビューがあります。
タブ 1 からタブ 2 に切り替えると、検証を実行していくつかの値を更新するコードを呼び出しています。この検証の結果に応じて、タブ 1 にとどまるか、タブ 2 に移動してタブのコンテンツを更新します。
私のタブビュー:
<h:form id="form">
<p:tabView id="tabview" activeIndex="#{ctrl.idx}" dynamic="true" cache="false">
<p:ajax event="tabChange" listener="#{ctrl.doStuff}" update=":form:tabview"/>
<p:tab title="Tab 1" id="t1">
<h:panelGrid columns="1" cellpadding="10">
<h:outputText value="#{ctrl.s1}"/>
</h:panelGrid>
</p:tab>
<p:tab title="Tab 2" id="t2">
<h:panelGrid columns="1" cellpadding="10">
<h:outputText value="#{ctrl.s2}"/>
</h:panelGrid>
</p:tab>
</p:tabView>
</h:form>
単純に値を変更する私のテストコード:
public void doStuff() {
s1 = String.valueOf(Math.random());
s2 = String.valueOf(Math.random());
}
次のように、メソッドでアクティブなタブのインデックスを変更するだけで十分だと思いました。
public void doStuff() {
// ...
idx = 0;
}
tabChange イベントでは、メソッドが呼び出されますが、タブビュー コンポーネントはクリックされたタブに移動し、idx
新しい値は無視されます。
update 属性を追加するとp:ajax
、タブビュー全体がレンダリングされると思いましたが、タブおよび/またはタブのコンテンツのみが再レンダリングされます。
そして最も奇妙なことに、 orに変更update=":form:tabview"
すると、ajax 応答でタブのコンテンツのみを受け取ります -> コンポーネントがページから消えます!update=":form"
update="@form"
私の Bean はビュースコープで、Primefaces 3.5、JSF 2.1、および Tomcat 7 を使用しています。
何か案が?ありがとう。