需要将当前选项卡名称从动态生成的选项卡传递给后备托管 bean
Need to pass the current tab name to the backing managed bean from dynamically generated tab
我正在使用 primefaces。我的要求是根据支持 bean 中指定的列表生成多个选项卡。现在第二个标准是,如果选项卡更改,该选项卡下的内容也应该更改。所以我保留了 onChange 事件并尝试通过 event.getTab().getTitle() 获取值,但它向支持 bean 返回 null。
<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);
}
The tab is getting generated properly and when the tab changes, the onTabChange() method is called but event.getTab().getTitle() returns null.
Integer index=(Integer)tabview.getActiveIndex();
这不是名称,而是活动选项卡的索引 在这种情况下就是您感兴趣的那个。
索引从 0 开始是第一个选项卡:)
我正在使用 primefaces。我的要求是根据支持 bean 中指定的列表生成多个选项卡。现在第二个标准是,如果选项卡更改,该选项卡下的内容也应该更改。所以我保留了 onChange 事件并尝试通过 event.getTab().getTitle() 获取值,但它向支持 bean 返回 null。
<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);
}
The tab is getting generated properly and when the tab changes, the onTabChange() method is called but event.getTab().getTitle() returns null.
Integer index=(Integer)tabview.getActiveIndex();
这不是名称,而是活动选项卡的索引 在这种情况下就是您感兴趣的那个。 索引从 0 开始是第一个选项卡:)