我有一个包含两个选项卡的选项卡视图。Primefaces tabview:设置选项卡变化的活动索引
当我从标签1切换到标签2时,我调用了一些执行验证并更新了一些值的代码。根据验证的结果,我想留在标签1上,或者转到标签2,并刷新标签的内容。
我TabView的:
<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>
我的测试代码simly改变值:
public void doStuff() {
s1 = String.valueOf(Math.random());
s2 = String.valueOf(Math.random());
}
我认为改变我的方法激活Tab键索引就足够了,这样的:
public void doStuff() {
// ...
idx = 0;
}
在tabChange事件上,该方法被调用,但tabview组件转到点击的ta b,忽略idx
新值。
我认为将更新属性添加到p:ajax
会渲染整个tabview,但只有制表符和/或制表符的内容被渲染。
而最奇怪的是,如果我将update=":form:tabview"
更改为update=":form"
或update="@form"
,我只收到ajax响应中的选项卡内容 - >组件从页面中消失!
我bean是viewscoped,我使用Primefaces 3.5,JSF 2.1和Tomcat 7
任何想法?谢谢。
我已经尝试过,但它不会改变任何东西。只有标签的内容在响应中,因此tabview容器“消失”。 – Virginie