JSF + RichFaces + Menu Dinamico

EU estou usando JSF 1.2 + RichFaces

eu tenho q montar um menu dinamico que sera montado a partir de dados do banco de dados

algume conhece uma maneira de fazer o menu com RichFaces Dinamico?

Valeu

Obrigado

Eai,

Eu tenho algo parecido aqui… Quando o usuário loga na aplicação eu consulto o banco para verificar suas permissoes. De acordo com elas eu vou criando no proprio backingBean a estrutura do menu, e no final jogo o menu na sessão. Ai nos meus jsps eu acesso ele com binding="#{sessionScope.menu}".

[]s
Ferry

Tem como me mandar o exemplo???

Valeu

[quote=Ferryman]Eai,

Eu tenho algo parecido aqui… Quando o usuário loga na aplicação eu consulto o banco para verificar suas permissoes. De acordo com elas eu vou criando no proprio backingBean a estrutura do menu, e no final jogo o menu na sessão. Ai nos meus jsps eu acesso ele com binding="#{sessionScope.menu}".

[]s
Ferry

[/quote]

Ferry,

vc poderia manda um exemplo ? To numa briga grande tá com três semanas e nada de concreto. Estático ficou legal, mas o dinâmico não sai…

:frowning:

vlw !

eae jayro,

ve se te ajuda (Funciona, porem se vc encontrar uma forma melhor, compartilhe comigo):

Meu Managed Bean:

@Controller("menuMB")
@Scope("session")
public class MenuMB {
	private HtmlPanelMenu panelMenu;
	
	@Autowired
	private MenuService menuService;

	public HtmlPanelMenu getPanelMenu() {
		List<Menu> aListN1 = new ArrayList<Menu>();
		panelMenu = new HtmlPanelMenu();
		
		panelMenu.setIconExpandedGroup("disc");
		panelMenu.setIconCollapsedGroup("disc");
		panelMenu.setIconExpandedTopGroup("chevronUp");
		panelMenu.setIconGroupTopPosition("right");
		panelMenu.setIconCollapsedTopGroup("chevronDown");

		try {
			aListN1 = menuService.listByQuery("FROM Menu m WHERE m.parent IS NULL");
		} catch (Exception e) {
			e.printStackTrace();
		}

		for (Menu m1 : aListN1) {
			HtmlPanelMenuGroup menuGroup = new HtmlPanelMenuGroup();
			menuGroup.setName(m1.getLabel());
			menuGroup.setLabel(m1.getLabel());
			List<Menu> aListN2 = menuService.listByQuery("FROM Menu m WHERE m.parent.id = '" + m1.getId() + "'");
			for (Menu m2 : aListN2) {
				
				if (!m2.getUrl().equals("")) {
					HtmlPanelMenuItem itemN2 = new HtmlPanelMenuItem();
					itemN2.setLabel(m2.getLabel());
					itemN2.setName(m2.getId().toString());
					itemN2.setValue(m2.getLabel());
					itemN2.setActionExpression(getOutcome(m2.getUrl()));
					menuGroup.getChildren().add(itemN2);
				} else {
					HtmlPanelMenuGroup itemN2 = new HtmlPanelMenuGroup();
					itemN2.setName(m2.getId().toString());
					itemN2.setLabel(m2.getLabel());
					menuGroup.getChildren().add(itemN2);
					List<Menu> aListN3 = menuService.listByQuery("FROM Menu m WHERE m.parent.id = '" + m2.getId() + "'");
					for (Menu m3 : aListN3) {
						HtmlPanelMenuItem itemN3 = new HtmlPanelMenuItem();
						itemN3.setLabel(m3.getLabel());
						itemN3.setName(m3.getId().toString());
						itemN3.setActionExpression(getOutcome(m3.getUrl()));

						itemN2.getChildren().add(itemN3);
					}
					menuGroup.getChildren().add(itemN2);
				}
			}
			panelMenu.getChildren().add(menuGroup);
		}

		return panelMenu;
	}

	public void setPanelMenu(HtmlPanelMenu panelMenu) {
		this.panelMenu = panelMenu;
	}
	
	public MethodExpression getOutcome(String outcome) {
		FacesContext fc = FacesContext.getCurrentInstance();
		ELContext ec = fc.getELContext();	
		return fc.getApplication().getExpressionFactory().createMethodExpression(ec, "#{" + outcome + "}", String.class, new Class[] {});
	}	
}

Meu xhtml

[code]
?xml version=“1.0” encoding=“ISO-8859-1” ?>

<ui:composition template="/templates/template.xhtml">
<ui:define name=“left”>
<rich:panelMenu binding="#{menuMB.panelMenu}" mode=“ajax” />
</ui:define>
<ui:define name=“right”>
</ui:define>
</ui:composition>

[/code]

Marques,

eu consegui colocar pra rodar o negócio… Assim que eu tiver um tempinho, posto aquí… o mais provável que seja amanhã quando terei uma folguinha…

:slight_smile:

[quote=jayro]Marques,

eu consegui colocar pra rodar o negócio… Assim que eu tiver um tempinho, posto aquí… o mais provável que seja amanhã quando terei uma folguinha…

:)[/quote]

Eae, já teve uma folga pra poder postar o codigo?? :smiley: Flws

Amanhã… sem falta.

:slight_smile:

[quote=jayro]Amanhã… sem falta.

:)[/quote]

Aguardo. Valeu.

Marques… espero pongas todo el codigo que hiciste… seria de gran ayuda, puesto que estoy intentando hacer un menu dinamico con rich:panelmenu y quise ejecutar el codigo que tienes, pero faltan importaciones, la clase menuService. bueno espero puedas ayudarme…

Eu estou precisando fazer algo parecido, mas este codigo ai ja virou lenda…
flw ai galera…

[quote=Kleber-rr]

Eae, já teve uma folga pra poder postar o codigo?? :smiley: Flws[/quote]

Meu, bom dia. Rachei o bico com este post… O cara em 30/10/2009 disse que “amanha eu posto”; daí no dia 22/01/2010 vc pergunta se ele ja teve a folga pra postar. No mesmo dia, ele diz que “amanhã sem falta” e hoje já é 12/07/2011 e nada. Ele tem um problema sério com ‘tempo’ ou ‘datas’.