我使用的是素数面。我的要求是拥有一定数量的选项卡,这些选项卡将根据backingbean中指定的列表生成。现在的第二个标准是,如果选项卡发生更改,那么该选项卡下的内容也应该发生更改。因此,我保留了onChange事件,并试图通过event.getTab().getTitle()获取值,但它正在向backingbean返回null。
<p:tabView id="tabView" binding="#{dndProductsView.tabView}">
<p:ajax event="tabChange" listener="#{dndProductsView.onTabChange}"/>
</p:tabView>
托管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。
Integer index=(Integer)tabview.getActiveIndex();
它不是一个名字,但它是活动选项卡的索引,在这种情况下,它是你感兴趣的。索引从0开始作为第一个选项卡:)