Results 1 to 1 of 1
- 03-25-2011, 12:03 AM #1
Member
- Join Date
- Mar 2011
- Posts
- 1
- Rep Power
- 0
Error when clicking a menu item JSF + Richfaces
Hi,
My code builds the menu perfectly. But, when I click a menu item the item screen doesn't open. Could you tell me, pls, how could I solve this problem?
The codes follow below:
menu.xhtml
Java Code:<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:rich="http://richfaces.org/rich" > <ui:fragment> <rich:panel style="height:560px"> <rich:panelMenu event="onclick" mode="none" label="Menu" iconCollapsedGroup="triangle" iconExpandedGroup="triangleDown" expandSingle="true" binding="#{ItemMenuDinamicoBB.itensMenu}"> </rich:panelMenu> </rich:panel> </ui:fragment> </html>
ItemMenuDinamicoBB.java
Java Code:package br.com.sigalivre.faces.beans; import br.com.sigalivre.service.exception.ServiceException; import br.com.sigalivreweb.faces.GenericBB; import br.com.sigalivre.model.pojo.ItemMenu; import br.com.sigalivre.model.pojo.Sistema; import br.com.sigalivre.model.pojo.UsuarioSistema; import br.com.sigalivre.services.ItemMenuService; import br.com.sigalivre.service.util.SegurancaService; import br.com.sigalivre.service.util.ServiceFactory; import br.com.sigalivre.service.SessionService; import br.com.sigalivre.util.MessageUtils; import br.com.sigalivre.util.StringUtils; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map.Entry; import javax.faces.component.UIComponent; import org.richfaces.component.html.HtmlPanelMenu; import org.richfaces.component.html.HtmlPanelMenuGroup; import org.richfaces.component.html.HtmlPanelMenuItem; /** * Bean para a criação de menu dinâmico * * @author <Thiago Camargos Lopes thiagocamargos@gmail.com> */ public class ItemMenuDinamicoBB extends GenericBB<ItemMenu> { private HtmlPanelMenu itensMenu; @Override protected ItemMenuService getService() { return (ItemMenuService) ServiceFactory.getService(ItemMenuService.class); } /** * Retorna um componente html que contém os menus gerados dinamicamente * * @return * @throws ServiceException */ public HtmlPanelMenu getItensMenu() { if (itensMenu != null) { return itensMenu; } itensMenu = new HtmlPanelMenu(); try { final List<UIComponent> childrenMenus = itensMenu.getChildren(); //buscando o usuário logado final UsuarioSistema usuario = SessionService.getUsuarioLogado(SessionService.getCurrent()); final Sistema sistemaSessao = SessionService.getSistema(SessionService.getCurrent()); final ItemMenuService itemMenuService = SegurancaService.getItemMenuService(); final List<ItemMenu> itensMenuCriados = new ArrayList<ItemMenu>(); //buscando os itens de menu daquele usuário final ArrayList<ItemMenu> itensMenuByUsuario = (ArrayList<ItemMenu>) itemMenuService.findAllItensMenuByUsuario(usuario, sistemaSessao); //separando os itens de menu por sistema. final HashMap<Sistema, List<ItemMenu>> map = new HashMap<Sistema, List<ItemMenu>>(); for (ItemMenu im1 : itensMenuByUsuario) { final Sistema key = im1.getSistema(); List<ItemMenu> list = map.get(key); if (list == null) { list = new ArrayList<ItemMenu>(); map.put(key, list); } list.add(im1); } //Criando um HtmlPanelMenuGroup por sistema for (Entry<Sistema, List<ItemMenu>> entry : map.entrySet()) { final HtmlPanelMenuGroup sistema = new HtmlPanelMenuGroup(); final List<UIComponent> childrenSistema = sistema.getChildren(); final List<ItemMenu> itensMenuDoSistema = entry.getValue(); final String nomeSistema = entry.getKey().getNomeSistema(); sistema.setLabel(nomeSistema); sistema.setName(nomeSistema); sistema.setExpanded(true); //Criando os grupos de itens de menu desse sistema for (ItemMenu im2 : itensMenuDoSistema) { final List<ItemMenu> filhosDoItemMenu = itemMenuService.getFilhos(im2, itensMenuDoSistema); //Se não é folha if (filhosDoItemMenu.size() > 0) { //então cria um HtmlPanelGroup pra ele final HtmlPanelMenuGroup subGroup = new HtmlPanelMenuGroup(); final List<UIComponent> children = subGroup.getChildren(); final String nomeSubGroup = im2.getNomeItemMenu(); subGroup.setLabel(nomeSubGroup); subGroup.setName(nomeSubGroup); subGroup.setExpanded(true); StringBuffer onClick; String urlItemMenu = im2.getUrlItemMenu(); if (!StringUtils.isEmpty(urlItemMenu)) { onClick = new StringBuffer("document.location.href=\'"); onClick.append(urlItemMenu); onClick.append('\''); subGroup.setOnclick(onClick.toString()); } //e busca os filhos e cria um HtmlPanelMenuItem pra cada filhos for (ItemMenu filho : filhosDoItemMenu) { final HtmlPanelMenuItem itemFilho = new HtmlPanelMenuItem(); final String nomeFilho = filho.getNomeItemMenu(); itemFilho.setLabel(nomeFilho); itemFilho.setName(nomeFilho); urlItemMenu = filho.getUrlItemMenu(); if (!StringUtils.isEmpty(urlItemMenu)) { onClick = new StringBuffer("document.location.href=\'"); onClick.append(urlItemMenu); onClick.append('\''); itemFilho.setOnclick(onClick.toString()); } //itemFilho.setId(nomeFilho); children.add(itemFilho); //Como ele já apareceu dentro de outro menu, vamos removar da lista de menus //que será reaproveitada mais tarde itensMenuCriados.add(filho); } //adicionando o subgrupo no grupo do sistema childrenSistema.add(subGroup); itensMenuCriados.add(im2); } } System.out.println("MARCEL " + itensMenuCriados.size()); itensMenuDoSistema.removeAll(itensMenuCriados); itensMenuCriados.clear(); //Criando os items folhas do item de menu desse sistema for (ItemMenu m : itensMenuDoSistema) { final HtmlPanelMenuItem item = new HtmlPanelMenuItem(); final String nomeItemMenu = m.getNomeItemMenu(); item.setLabel(nomeItemMenu); item.setName(nomeItemMenu); final String urlItemMenu = m.getUrlItemMenu(); if (!StringUtils.isEmpty(urlItemMenu)) { final StringBuffer onClick = new StringBuffer("document.location.href=\'"); onClick.append(urlItemMenu); onClick.append('\''); item.setOnclick(onClick.toString()); System.out.println("MARCEL " + urlItemMenu); } childrenSistema.add(item); } childrenMenus.add(sistema); } } catch (ServiceException e) { setShowMessagePesquisa(true); addError(MessageUtils.getMessage("system.exception.erroMenu")); } return itensMenu; } public void setItensMenu(HtmlPanelMenu itensMenu) { this.itensMenu = itensMenu; } }
Similar Threads
-
Returning the selected menu item from a popup screen
By phil128 in forum AWT / SwingReplies: 4Last Post: 12-11-2010, 06:08 PM -
Menu item activation in struts2+tiles project
By aruna.hcu in forum Web FrameworksReplies: 0Last Post: 01-26-2010, 11:43 PM -
Menu item not working properly for mouse events
By Preethi in forum New To JavaReplies: 1Last Post: 09-23-2008, 09:56 AM -
Checking toggle state of a menu item
By xsive in forum SWT / JFaceReplies: 1Last Post: 09-22-2008, 03:42 PM -
how to create Popup Menu with Sub Menu while right-clicking the JTree Node??
By Kabiraa in forum AWT / SwingReplies: 7Last Post: 05-09-2008, 08:54 AM
Bookmarks