需要从动态生成的选项卡将当前选项卡名称传递给支持托管bean

时间:2015-06-25 08:13:38

标签: jsf primefaces jsf-2.2 tabview

我正在使用primefaces。我的要求是根据辅助bean中指定的列表生成多个选项卡。现在第二个标准是,如果选项卡更改,该选项卡下的内容也应该更改。所以我保留了onChange事件,并尝试通过event.getTab()。getTitle()获取值,但它返回null给支持bean。

<p:tabView id="tabView" binding="#{dndProductsView.tabView}">
        <p:ajax event="tabChange" listener="#{dndProductsView.onTabChange}"/>
</p:tabView>

Managed Bean所需的代码如下: -

@PostConstruct
public void init() {
    user = SessionBean.getUserName();
    categorylist = categoryLogics.findAllOrderedByCategoryName();
    productList = productLogics.findAllOrderedByProductName();
    droppedProducts = new ArrayList<Product>();
}

private TabView tabView;

@Inject
private FacesContext facesContext;

public void setTabView(TabView tabView) {
    this.tabView = tabView;
}

public TabView getTabView() {
    tabView = new TabView();
    for (Category c : categorylist) {
        Tab t = new Tab();
        t.setTitle(c.getCategoryName());
        tabView.getChildren().add(t);
    }
    return tabView;
}

public void onTabChange(TabChangeEvent event) {
    String titleName =  event.getTab().getTitle();
    System.out.println("" + titleName);
}

正确生成选项卡,当选项卡更改时,将调用onTabChange()方法,但event.getTab()。getTitle()将返回null。

1 个答案:

答案 0 :(得分:0)

Integer index=(Integer)tabview.getActiveIndex();

这不是一个名字,但它是活动标签的索引女巫在这种情况下是你感兴趣的。 索引从0开始是第一个标签:)