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;
    }
}