Boa noite pessoal
Monto meu menu dinamicamente, e funciona direitinho, o problema, é que em algumas funcionalidades do sistema, preciso passar um parametro para o Bean que está sendo instanciado (como o f:setPropertyListener no xhtml), mas preciso fazer isto dinamicamente.
Meu Bean do menu:
@ManagedBean
@SessionScoped
public class IndexController implements Serializable{
private MenuModel menuModel;
private MenuDAO menuDAO = new MenuDAO();
public AcsUsuarios usuario = new AcsUsuarios();
public AcsSistemas sistema = new AcsSistemas();
public String param;
public String usr;
public String sis;
public String page;
SessionFactory sf = getSessionFactory();
Session session = sf.openSession();
public void geraMenu() throws ClassNotFoundException, SQLException {
System.out.println("IndexController.geraMenu()");
System.out.println("IndexController.geraMenu() - usr: " + usuario.getUser());
System.out.println("IndexController.geraMenu() - sis: " + sistema.getNomeSistema());
menuModel = new DefaultMenuModel();
menuDAO.setUsuario(usuario);
menuDAO.setSistema(sistema);
List<AcsRelMenuUsuario> listaMenu = menuDAO.listaTodos(); // Substituir o listaTodos() pelos menus permitidos
for (AcsRelMenuUsuario menu : listaMenu) {
if (menu.getAcsMenus().getAcsMenus() == null) {
Submenu submenu = new Submenu();
submenu.setLabel(menu.getAcsMenus().getNomeMenu());
for (AcsRelMenuUsuario m : menuDAO.buscaPorMenu(menu)) {
if (!menuDAO.verificaSubMenu(m)) {
MenuItem mi = new MenuItem();
mi.setValue(m.getAcsMenus().getNomeMenu());
mi.setUrl(m.getAcsMenus().getAcao());
mi.setAjax(true);
//mi.setIcon("imagens/" + m.getIcone());
submenu.getChildren().add(mi);
} else {
Submenu sm = new Submenu();
sm.setLabel(m.getAcsMenus().getNomeMenu());
sm = geraSubmenu(m);
submenu.getChildren().add(sm);
}
}
menuModel.addSubmenu(submenu);
}
}
}
public Submenu geraSubmenu(AcsRelMenuUsuario menu) throws ClassNotFoundException, SQLException {
System.out.println("IndexController.geraSubmenu()");
Submenu submenu = new Submenu();
submenu.setLabel(menu.getAcsMenus().getNomeMenu());
for (AcsRelMenuUsuario m : menuDAO.buscaPorMenu(menu)) {
if (!menuDAO.verificaSubMenu(m)) {
MenuItem mi = new MenuItem();
mi.setValue(m.getAcsMenus().getNomeMenu());
mi.setStyle("width:100px");
mi.setUrl(m.getAcsMenus().getAcao());
mi.setAjax(true);
submenu.getChildren().add(mi);
} else {
submenu.getChildren().add(geraSubmenu(m));
}
}
return submenu;
}
public MenuModel getMenuModel() {
System.out.println("IndexController.getMenuModel()");
return menuModel;
}
public IndexController() throws ClassNotFoundException, SQLException {
System.out.println("IndexController.IndexController()");
}
}
preciso incluir o parametro ao criar meu menu item (nas chamadas mi. )
Alguém sabe como passar parametros pelo menu dinamico?