public Menubar getMenuBar( List<OpcionSistemaDto> listaOpcionMenu, List<PermisoRolDto> listaPermisos) throws Exception { listaOpcionMenu.remove(new OpcionSistemaDto(0L)); Menubar menuBar = new Menubar(); Submenu subMenu = null; MenuItem menuItem = null; ApplicationMBean applicationMBean = (ApplicationMBean) WebServletContextListener.getApplicationContext().getBean("applicationMBean"); for (OpcionSistemaDto opcionMenuDto : listaOpcionMenu) { opcionMenuDto.setPermiso(obtenerPermiso(listaPermisos, opcionMenuDto).getEstado()); if (opcionMenuDto.getPadreDto() == null || opcionMenuDto.getPadreDto().getId().equals(0L)) { List<OpcionSistemaDto> hijos = opcionSistemaManager.obtenerHijosMenu(opcionMenuDto); UtilCore.General.ordena(hijos, "orden"); if (hijos.size() > 0) { if (opcionMenuDto.getPermiso()) { subMenu = new Submenu(); subMenu.setId( ConstantesCore.VARIABLE_ID_MENU + String.valueOf(opcionMenuDto.getId().intValue())); subMenu.setLabel( UtilCore.Internacionalizacion.getMensajeInternacional(opcionMenuDto.getValue()) .toUpperCase()); subMenu.setIcon(opcionMenuDto.getIcon()); subMenu.setStyle(applicationMBean.getEstiloMenu()); cargarHijos3(opcionMenuDto, subMenu, listaPermisos); menuBar.getChildren().add(subMenu); } } else { if (opcionMenuDto.getPermiso()) { menuItem = new MenuItem(); menuItem.setId( ConstantesCore.VARIABLE_ID_MENU_ITEM + String.valueOf(opcionMenuDto.getId().intValue())); menuItem.setValue( UtilCore.Internacionalizacion.getMensajeInternacional(opcionMenuDto.getValue()) .toUpperCase()); menuItem.setIcon(opcionMenuDto.getIcon()); menuItem.setOnclick(opcionMenuDto.getOnClick()); if (opcionMenuDto.getAction() != null && opcionMenuDto.getAction().length() > 0) { menuItem.setAction( FacesContext.getCurrentInstance() .getApplication() .createMethodBinding(opcionMenuDto.getAction(), new Class[] {})); } else { menuItem.setUrl(opcionMenuDto.getUrl()); } menuItem.setInView(true); menuItem.setStyle(applicationMBean.getEstiloMenu()); menuItem.setAjax(false); menuBar.getChildren().add(menuItem); } } } } return menuBar; }