Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在accordion中更新选项卡标题_Java_Jsf 2_Primefaces_Glassfish 3 - Fatal编程技术网

Java 在accordion中更新选项卡标题

Java 在accordion中更新选项卡标题,java,jsf-2,primefaces,glassfish-3,Java,Jsf 2,Primefaces,Glassfish 3,我有一个PrimeFaces 3.5手风琴面板,如下所示: <p:accordionPanel cache="false"> <p:ajax event="tabChange" listener="#{pPRBean.onChangeTab}" /> <p:tab title="Item"> <h:outputText value="#{pPRBean.counter}"/> </p:tab>

我有一个PrimeFaces 3.5手风琴面板,如下所示:

<p:accordionPanel cache="false">
    <p:ajax event="tabChange" listener="#{pPRBean.onChangeTab}" />
    <p:tab title="Item">
        <h:outputText value="#{pPRBean.counter}"/>
    </p:tab>
    <p:tab title="Item">
        <h:outputText value="#{pPRBean.counter}"/>
    </p:tab>
    <p:tab title="Item">
        <h:outputText value="#{pPRBean.counter}"/>
    </p:tab>
    <p:tab title="Item">
        <h:outputText value="#{pPRBean.counter}"/>
    </p:tab>
</p:accordionPanel>
package com.gecolsa.test.view;

import javax.ejb.Stateless;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import org.primefaces.component.tabview.Tab;
import org.primefaces.event.TabChangeEvent;

@Stateless
@ManagedBean
@RequestScoped
public class PPRBean {

    private int counter = 0;
    private String firstName;

    public String getFirstName(){
        return firstName;
    }

    public void setFirstName(String firstName){
        this.firstName = firstName;
    }

    public int getCounter() {
        return counter;
    }

    public void setCounter(int counter) {
        this.counter = counter;
    }

    public void onChangeTab(TabChangeEvent event){
        Tab activeTab = event.getTab();
        if(!activeTab.getTitle().endsWith("[Pressed]")){
            activeTab.setTitle(activeTab.getTitle() + " [Pressed]");            
        }
        System.out.println(activeTab.getTitle());
        counter = counter + 1;
    }
}

我的问题是:如何使用计数器的新值更改标题?虽然选项卡返回了一个新值,但它只显示“Item”(我想在运行时更新选项卡的标题,无论用户在哪里单击它,以及其他信息,如小时和单击的用户)。我正在使用glassfish 3.1.2。

您可以通过从侦听器更新accordionPanel来更新选项卡,如下所示:

public void onChangeTab(TabChangeEvent event){
    Tab activeTab = event.getTab();
    if(!activeTab.getTitle().endsWith("[Pressed]")){
        activeTab.setTitle(activeTab.getTitle() + " [Pressed]");            
    }
    System.out.println(activeTab.getTitle());
    counter = counter + 1;
    RequestContext.getCurrentInstance().update("panel");
}
其中panel是


由于tab没有渲染器,您必须更新整个面板,而不仅仅是选项卡。

您可以通过从侦听器更新accordionPanel来更新选项卡,如下所示:

public void onChangeTab(TabChangeEvent event){
    Tab activeTab = event.getTab();
    if(!activeTab.getTitle().endsWith("[Pressed]")){
        activeTab.setTitle(activeTab.getTitle() + " [Pressed]");            
    }
    System.out.println(activeTab.getTitle());
    counter = counter + 1;
    RequestContext.getCurrentInstance().update("panel");
}
其中panel是

由于选项卡没有渲染器,因此必须更新整个面板,而不仅仅是选项卡