【问题标题】:Update tab title in accordion更新手风琴中的标签标题
【发布时间】:2013-04-13 08:48:11
【问题描述】:

我有一个这样的 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>

还有一个像这样的 backing bean:

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;
    }
}

我的问题是:如何使用计数器的新值更改标题?尽管选项卡返回一个新值,但它只显示“项目”......(我想在运行时更新选项卡的标题,无论用户点击它的任何位置,都包含其他信息,如小时和点击的用户)。我正在使用 glassfish 3.1.2。

【问题讨论】:

    标签: java jsf-2 primefaces glassfish-3


    【解决方案1】:

    您可以通过像下面这样从侦听器更新手风琴面板来更新选项卡:

    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是&lt;p:accordionPanel id="panel"&gt;的id

    由于标签没有渲染器,您必须更新整个面板而不仅仅是标签。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-14
      • 1970-01-01
      • 2020-11-30
      相关资源
      最近更新 更多