ajax - Primefaces tabview : set the active index on tab change

标签 ajax jsf-2 primefaces

我有一个包含两个选项卡的选项卡 View 。

当我从选项卡 1 切换到选项卡 2 时,我正在调用一些执行验证并更新一些值的代码。根据此验证的结果,我想留在选项卡 1 上,或者转到选项卡 2,然后刷新选项卡的内容。

我的标签 View :

<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 事件中,该方法被调用,但 tabview 组件转到单击的选项卡,忽略 idx新的值(value)。

我想为 p:ajax 添加更新属性将呈现整个选项卡 View ,但仅重新呈现选项卡和/或选项卡的内容。

最奇怪的是,如果我更改 update=":form:tabview"update=":form"update="@form" ,我只在ajax响应中收到选项卡的内容->组件从页面中消失!

我的 bean 是 viewscoped,我使用的是 Primefaces 3.5、JSF 2.1 和 Tomcat 7。

任何的想法?谢谢。

最佳答案

我很容易解决这个问题:

  public void onSPTabChange(TabChangeEvent event) 
  {   
  TabView tabView = (TabView) event.getComponent();
  currentData.setSP_Index(tabView.getChildren().indexOf(event.getTab())+1);
  }

在 currentdata 我有属性 SP_Index 与选项卡数(第一,第二......)
 <p:tabView id="tabView" styleClass="tabView">  
 <p:ajax event="tabChange" listener="#{dataAccess.onSPTabChange}" />
 ....

并添加 jquery 脚本
<script>
  $("#tabView li:nth-child(#{currentData.SP_Index})").click();
</script>

关于ajax - Primefaces tabview : set the active index on tab change,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16584359/

相关文章:

jsf - 如何确保JSF taglib子组件的id不同?

javascript - p :selectOneMenu hide popup on mouseOut event

ajax - Primefaces/jsf 中的条件更新

jquery - GitHub 如何在不重新加载页面的情况下更改 URL?

html - 出现错误 : UIInstructions cannot be cast to org. primefaces.model.menu.MenuElement

javascript - php 中的分页。 AJAX、PHP、MYSQL

jsf-2 - 素面 : how to get the value of a Filter column text

javascript - 在上下文菜单 PrimeFaces 中右键单击后获取值

javascript - 使用 Google Translate V2 进行回调

javascript - Ajax异步: false freezes web page during loading in slow network