我正在使用primefaces。我的要求是有一些標籤,這些標籤將根據在後臺bean中指定的列表生成。現在第二個標準是如果標籤更改該標籤下的內容也應該改變。所以我保留了onChange事件並試圖通過event.getTab()。getTitle()獲取值,但是它向返回bean返回null。需要將當前選項卡名稱從動態生成的選項卡傳遞到支持管理bean
<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。
Ofcourse開始,我不打印標籤標題。我只是想要這個值,以便我可以根據該標題值在數據庫中運行搜索以獲取與該類別關聯的產品。 – suchit
在bean屬性上使用'binding'並在bean方法中操作組件樹總是很腥意,如果bean的範圍比請求範圍更廣泛的話。儘量避免這種情況,只需在XHTML中完成這項工作。將它替換爲
'show showcase example並重試。 – BalusC
我以前曾嘗試過,並且發生同樣的錯誤。你能引導我以任何其他方式生成類別,類別上的事件可以發送一些(有用的)到後端bean。 – suchit