Aşağıdaki fonksiyon menubar eklendiğinde sayfaya init kısmında çağrılmalıdır. DB den kayıtlar okuyarak menü oluşturmak için fikir verir umarım.
public void createMenus(PhaseEvent phaseEvent) {
boolean addMenu = true;
for (Iterator iterator = initMenu.getChildren().iterator(); iterator.hasNext();) {
UIComponent component = (UIComponent) iterator.next();
if ( component.getId().startsWith("menuId")){
addMenu = false;
}
}
if (addMenu) {
AppModuleCrmImpl am = getAm();
ViewObject vo = am.getViewLoggedInUser();
Row rowUser = vo.first();
kullaniciID = rowUser.getAttribute("KullaniciId").toString();
// Kullanıcı ana menulerinin alınması için kullanıcıId ile VO execute ediliyor.
KullaniciAnaMenuleriImpl menuView = (KullaniciAnaMenuleriImpl)am.getKullaniciAnaMenuleri();
menuView.setNamedWhereClauseParam("TheKullaniciId", kullaniciID);
menuView.executeQuery();
RichMenu menu = new RichMenu(); ;
RichMenu newMenu;
RichCommandMenuItem menuItem = new RichCommandMenuItem();
while (menuView.hasNext()) {
KullaniciAnaMenuleriRowImpl menuItemRow = (KullaniciAnaMenuleriRowImpl)menuView.next();
if ((int)getCountSubMenu(kullaniciID, Integer.parseInt(menuItemRow.getMenuId().toString())) > 0){
newMenu = new RichMenu();
newMenu.setId("menuId" + menuItemRow.getMenuId().toString());
newMenu.setText(menuItemRow.getMenuLabel());
newMenu.setIcon(menuItemRow.getIcons());
newMenu = addSubMenu(kullaniciID, Integer.parseInt(menuItemRow.getMenuId().toString()),newMenu);
initMenu.getChildren().add(newMenu);
}else {
menuItem.setId("menuId" + menuItemRow.getMenuId().toString());
menuItem.setText(menuItemRow.getMenuLabel());
menuItem.setIcon(menuItemRow.getIcons());
// if (!menuItemRow.getActionAdi().equals(null))
menuItem.setActionExpression(getMethodExpression(menuItemRow.getActionAdi()));
initMenu.getChildren().add(menuItem);
}
}
menuView.remove();
}
}