Pular para o conteúdo

Construindo menu dinamicamente com RichFaces

Olá Irei mostrar neste post como montar um menu usando código Java e não a taglib do Rich Faces. Normalmente fariamos assim:

[sourcecode language=”html”]














[/sourcecode]

Para criar os itens do menu dinamicamente usando uma consulta no banco de dados por exemplo fariamos assim:
[sourcecode language=”java” smarttabs=”true” 1=”</code><code>collapse="true"” 2=”</code><code>”]</code>public void atualizaGrupo(){
menuGrupos = new HtmlMenuGroup();
menuGrupos.setLabelClass("Menu de Skins");

List <Menu>novaLista = MenuDAO.getInstance().buscarMenus();
//
for (Menu menu : novaLista) {
HtmlMenuItem novoMenu = new HtmlMenuItem();

FacesContext context = FacesContext.getCurrentInstance();
ELContext elContext = context.getELContext();
Application app = context.getApplication();
ExpressionFactory expressionFactory = app.getExpressionFactory();
//
MethodExpression me = expressionFactory.createMethodExpression(
context.getELContext(),
"#{MenuMB.exibirMenuSelecionado}", String.class, new Class[] {});

novoMenu.setActionExpression(me);
novoMenu.setValue(menu.getDescricao());

// —————————

HtmlActionParameter htmlparam = new HtmlActionParameter();
ValueExpression valueExpression = expressionFactory.createValueExpression(elContext, "#{MenuMB.skin}", String.class);
htmlparam.setAssignToBinding(valueExpression);
htmlparam.setName("menuGrupo");
htmlparam.setValue(menu.getDescricao());
novoMenu.addActionListener(htmlparam);
novoMenu.setOnclick("document.location.href=’index.jsf’");
//
// ———————————

novoMenu.getChildren().add(htmlparam);
menuGrupos.getChildren().add(novoMenu);
}
}<code>[/sourcecode]
O método exibirMenuSelecionado() é usado apenas para exibir no console o valor do atributo skin.

[sourcecode language=”java”]public void exibirMenuSelecionado(){
System.out.println(” Valor de this.skin: “+ this.skin);
}[/sourcecode]

No XHTML precisamos desse pequeno código.

[sourcecode language=”html”][/sourcecode]

No managed bean é necessário colocar os atributos

[sourcecode language=”java”]private HtmlMenuGroup menuGrupos;
private String skin;[/sourcecode]

Estou usando a versão 3.2.2.GA. Até mais, Roberto

2 comentários em “Construindo menu dinamicamente com RichFaces”

  1. Pingback: Construindo menu dinamicamente com RichFaces « Caderno da Chris

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *