JSF: Como apresentar diferentemente o menu da aplicação dependendo do papel do usuário?  XML
Índice dos Fóruns » Desenvolvimento Web
Autor Mensagem
Rodrigo Manhães
JavaGuru
[Avatar]

Membro desde: 14/07/2005 17:07:07
Mensagens: 242
Localização: Campos dos Goytacazes/RJ
Offline

Boa noite,

tenho uma aplicação JSF/Facelets/EJB na qual estou utilizando o JAAS. O acesso (ou a negação deste) às páginas e aos EJB por diferentes papéis está funcionando a contento. O único problema é como montar o menu da aplicação (residindo em um template Facelets) mostrando apenas as opções às quais o usuário tem acesso.

As duas soluções que encontrei e que funcionaram foi:
1- colocar os papéis em elementos <f:attribute> dos <h:commandLink>, do tipo
e espalhar binding e rendered em todos os links para que o managed bean responda quem será renderizado e quem não.

2- Criar três versões (pois temos, neste sistema, três papéis) do menu no template e renderizá-los seletivamente.

Não considero nenhuma das duas opções é particularmente boa. Exigem código demais, ferem o princípio do DRY (Don't Repeat Yourself), são extremamente hardcoded.

Tentei criar um componente mas não consegui fazer passar o atributo action.

Alguém teria uma solução mais inteligente pra isto (ou sabe criar um componente que estenda UICommand)?

Obrigado.

https://github.com/rodrigomanhaes
http://programacaoradical.blogspot.com
rponte
JavaEvangelist
[Avatar]

Membro desde: 18/02/2008 10:06:25
Mensagens: 413
Offline

Gere/Crie o menu dinamicamente no managed bean e faça o binding com a página deste componente de menu. Assim só será gerado o menu de acordo com as permissões do usuário, Além de ser mais simples ainda vai ter poupar recursos no servidor.

Rafael Ponte
http://www.rponte.com.br/
[WWW]
Rodrigo Manhães
JavaGuru
[Avatar]

Membro desde: 14/07/2005 17:07:07
Mensagens: 242
Localização: Campos dos Goytacazes/RJ
Offline

Meu menu é uma lista <ul> onde cada <li> contém um <h:commandLink> (e, eventualmente, outro <ul> para submenus). O que é esse componente de menu? A sua resposta dá a entender que é um componente único. Se for, eu não conheço.

https://github.com/rodrigomanhaes
http://programacaoradical.blogspot.com
rponte
JavaEvangelist
[Avatar]

Membro desde: 18/02/2008 10:06:25
Mensagens: 413
Offline

Quando você falou de menu imaginei que você estivesse falando de algo como,
http://livedemo.exadel.com/richfaces-demo/richfaces/dropDownMenu.jsf?c=dropDownMenu

Rafael Ponte
http://www.rponte.com.br/
[WWW]
Rodrigo Manhães
JavaGuru
[Avatar]

Membro desde: 14/07/2005 17:07:07
Mensagens: 242
Localização: Campos dos Goytacazes/RJ
Offline

Vou dar uma olhada no Rich Faces. Aqui somos muito HTML/CSS oriented e acabamos esquecendo de soluções server-side. E excelente sugestão de montar o menu no servidor, não fazendo a view saber de papéis e tal, fica bem melhor mesmo e aumenta a coesão. Obrigado!

https://github.com/rodrigomanhaes
http://programacaoradical.blogspot.com
leosouzabh
JavaTeenager
[Avatar]

Membro desde: 28/03/2006 12:04:34
Mensagens: 193
Offline

Um exemplo bem simples usando JSCookMenu
http://wiki.apache.org/myfaces/Dynamic_Menus_with_JSCookMenu

Procure sempre o melhor!!
[MSN]
 
Índice dos Fóruns » Desenvolvimento Web
Ir para:   
Powered by JForum 2.1.8 © JForum Team