Jsf PrimeFaces的问题试图实例化菜单项和子菜单

Jsf PrimeFaces的问题试图实例化菜单项和子菜单,jsf,primefaces,interface,Jsf,Primefaces,Interface,如何实例化菜单项和子菜单 我有下面的代码来自于我所关注的PrimeFaces教程,但我无法实例化MenuItem和Submenu,因为它们是接口,但教程没有说明任何内容。我想这可能是因为PrimeFaces的版本。有人能帮我使这个代码工作吗 package br.com.k19.controle; import javax.faces.bean.ManagedBean; import org.primefaces.component.column.Column; import org.pri

如何实例化菜单项和子菜单

我有下面的代码来自于我所关注的PrimeFaces教程,但我无法实例化MenuItem和Submenu,因为它们是接口,但教程没有说明任何内容。我想这可能是因为PrimeFaces的版本。有人能帮我使这个代码工作吗

package br.com.k19.controle;

import javax.faces.bean.ManagedBean;

import org.primefaces.component.column.Column;
import org.primefaces.model.menu.DefaultMenuModel;
import org.primefaces.model.menu.MenuItem;
import org.primefaces.model.menu.MenuModel;
import org.primefaces.model.menu.Submenu;

@ManagedBean
public class MegaMenuBean {

    private MenuModel menuModel;

    public MegaMenuBean() {

        this.menuModel = new DefaultMenuModel();

        Submenu esporteMenu = new Submenu();
        esporteMenu.setLabel("Esportes");

        Submenu futebolMenu = new Submenu();
        futebolMenu.setLabel("Futebol");

        MenuItem item = new MenuItem();
        item.setValue("Brasileiro");
        item.setUrl("#");
        futebolMenu.getChildren().add(item);

        item = new MenuItem();
        item.setValue("Europeu");
        item.setUrl("#");
        futebolMenu.getChildren().add(item);

        item = new MenuItem();
        item.setValue("Japonês");
        item.setUrl("#");
        futebolMenu.getChildren().add(item);

        Submenu voleiMenu = new Submenu();
        voleiMenu.setLabel("Volei");

        item = new MenuItem();
        item.setValue("Liga Mundial");
        item.setUrl("#");
        voleiMenu.getChildren().add(item);

        item = new MenuItem();
        item.setValue("Eliminatórias da Copa");
        item.setUrl("#");
        voleiMenu.getChildren().add(item);

        Submenu automobilismoMenu = new Submenu();
        automobilismoMenu.setLabel("Automobilismo");

        item = new MenuItem();
        item.setValue("Fórmula 1");
        item.setUrl("#");
        automobilismoMenu.getChildren().add(item);

        item = new MenuItem();
        item.setValue("Fórmula 3");
        item.setUrl("#");
        automobilismoMenu.getChildren().add(item);

        item = new MenuItem();
        item.setValue("Fotos");
        item.setUrl("#");
        automobilismoMenu.getChildren().add(item);

        Column esporteColuna1 = new Column();
        esporteColuna1.getChildren().add(futebolMenu);
        esporteColuna1.getChildren().add(voleiMenu);
        esporteMenu.getChildren().add(esporteColuna1);

        Column esporteColuna2 = new Column();
        esporteColuna2.getChildren().add(automobilismoMenuesporteMenu.getChildren().add(esporteColuna2);

        this.menuModel.addSubmenu(esporteMenu);
        Submenu noticiaMenu = new Submenu();
        noticiaMenu.setLabel("Notícias");

        Submenu economiaMenu = new Submenu();
        economiaMenu.setLabel("Economia");

        item = new MenuItem();
        item.setValue("Brasil");
        item.setUrl("#");
        economiaMenu.getChildren().add(item);

        item = new MenuItem();
        item.setValue("Mundo");
        item.setUrl("#");
        economiaMenu.getChildren().add(item);

        Submenu tecnologiaMenu = new Submenu();
        tecnologiaMenu.setLabel("Tecnologia");

        item = new MenuItem();
        item.setValue("Segurança");
        item.setUrl("#");
        tecnologiaMenu.getChildren().add(item);

        item = new MenuItem();
        item.setValue("Negócios em TI");
        item.setUrl("#");
        tecnologiaMenu.getChildren().add(item);

        Submenu educacaoMenu = new Submenu();
        educacaoMenu.setLabel("Educação");

        item = new MenuItem();
        item.setValue("Vestibular");
        item.setUrl("#");
        educacaoMenu.getChildren().add(item);

        item = new MenuItem();
        item.setValue("ENEM");
        item.setUrl("#");
        educacaoMenu.getChildren().add(item);

        item = new MenuItem();
        item.setValue("ProUni");
        item.setUrl("#");
        educacaoMenu.getChildren().add(item);

        Column noticiaColuna1 = new Column();
        noticiaColuna1.getChildren().add(economiaMenu);
        noticiaColuna1.getChildren().add(tecnologiaMenu);
        noticiaMenu.getChildren().add(noticiaColuna1);

        Column noticiaColuna2 = new Column();
        noticiaColuna2.getChildren().add(educacaoMenu);
        noticiaMenu.getChildren().add(noticiaColuna2);

        this.menuModel.addSubmenu(noticiaMenu);
    }

    public MenuModel getMenuModel(){
        return menuModel;
    }


K19 Treinamentos

您应该使用
org.primefaces.model.menu.DefaultMenuItem
org.primefaces.model.menu.DefaultSubMenu
,如主菜单所示。因此,你应该做的是:

DefaultSubMenu esporteMenu = new DefaultSubMenu();
   esporteMenu.setLabel("Esportes");

如果有人有同样的问题,我必须使用DefaultMenuColumn而不是Column

DefaultSubMenu esporteMenu = new DefaultSubMenu();
   esporteMenu.setLabel("Esportes");