首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从Bean类中设置p:面包屑的菜单项

如何从Bean类中设置p:面包屑的菜单项
EN

Stack Overflow用户
提问于 2017-01-11 06:06:13
回答 1查看 1.1K关注 0票数 0

重要提示:

  • 有两种方法
    1. crumBean();=>此方法设置“p:menubar”素数面组件
    2. =>这个方法用于设置“p:面包屑”primefaces组件,这是我无法设置的,这是我的实际问题。

我的问题:如何从Bean类中设置primefaces菜单

我已经浏览过这些链接,但没有发现有帮助。

Show Prime faces Bread Crumb dynamically

http://javabeat.net/primefaces-breadcrumb/

这是我的代码:

Bean类

代码语言:javascript
运行
复制
 package test;

    import java.util.ArrayList;
    import java.util.List;

    import javax.annotation.PostConstruct;   
    import org.primefaces.component.breadcrumb.BreadCrumb;
    import org.primefaces.component.menuitem.UIMenuItem;
    import org.primefaces.model.menu.DefaultMenuItem;
    import org.primefaces.model.menu.DefaultMenuModel;
    import org.primefaces.model.menu.DefaultSeparator;
    import org.primefaces.model.menu.DefaultSubMenu;
    import org.primefaces.model.menu.DynamicMenuModel;
    import org.primefaces.model.menu.MenuElement;
    import org.primefaces.model.menu.MenuModel;
    import org.springframework.context.annotation.Scope;
    import org.springframework.stereotype.Component;    

    @Component("breadBean")
    @Scope(value = "view")
    @SuppressWarnings("all")
    public class BreadCrumBean {

        BreadCrumb breadCrum = new BreadCrumb();
        MenuModel menuModel = new DynamicMenuModel();
        private MenuModel menubar = new DefaultMenuModel();     

        @PostConstruct
        public void init(){
            try {               
                crumBean();
                bread();

            } catch (Exception e) {
                e.printStackTrace();
        FacesUtil.addErrorMessage(FacesUtil.getBundleKey(Constants.MESSAGE_RESOURCE,  "general.generalError"));
            }           
        }       
        public void crumBean(){

            DefaultSubMenu home = new DefaultSubMenu("Home");
            DefaultSubMenu home1 = new DefaultSubMenu("Home1");
            DefaultSubMenu index = new DefaultSubMenu("Index");

            DefaultMenuItem home2 = new DefaultMenuItem("Home2");
            DefaultMenuItem home3 = new DefaultMenuItem("Home3");

            DefaultMenuItem index1 = new DefaultMenuItem("Index1");

            DefaultMenuItem index2 = new DefaultMenuItem("Index2");
            index2.setAjax(false);

            DefaultMenuItem index3 = new DefaultMenuItem("Index3");
            index3.setUrl("http://www.primefaces.org/showcase/");

            DefaultMenuItem index4 = new DefaultMenuItem("Index4");
            DefaultMenuItem index5 = new DefaultMenuItem("Index5");

            home1.addElement(index1);
            home1.addElement(index2);
            home1.addElement(index3);

            index.addElement(index4);
            index.addElement(index5);
            index.addElement(new DefaultSeparator());
            index.addElement(index3);

            home.addElement(home1);
            home.addElement(home2);
            home.addElement(new DefaultSeparator());
            home.addElement(home3);

            this.menubar.addElement(home);
            this.menubar.addElement(index);
        }       
        public void bread(){

            DefaultSubMenu bread = new DefaultSubMenu("Bread");
            DefaultSubMenu bread1 = new DefaultSubMenu("Bread1");
            DefaultSubMenu crumb = new DefaultSubMenu("Crumb");

            DefaultMenuItem bread2 = new DefaultMenuItem("Bread2");
            DefaultMenuItem bread3 = new DefaultMenuItem("Bread3");

            DefaultMenuItem bread12 = new DefaultMenuItem("Bread12");

            DefaultMenuItem bread21 = new DefaultMenuItem("Bread21");
            bread21.setAjax(false);

            DefaultMenuItem bread31 = new DefaultMenuItem("Bread31");
            bread31.setUrl("http://www.primefaces.org/showcase/");

            DefaultMenuItem crumb1 = new DefaultMenuItem("Crumb1");
            DefaultMenuItem crumb2 = new DefaultMenuItem("Crumb2");

            bread1.addElement(bread12);
            bread1.addElement(bread21);
            bread1.addElement(bread31);

            crumb.addElement(crumb1);
            crumb.addElement(crumb2);
            crumb.addElement(new DefaultSeparator());
            crumb.addElement(bread31);

            bread.addElement(bread1);
            bread.addElement(bread2);
            bread.addElement(new DefaultSeparator());
            bread.addElement(bread3);

            this.menuModel.addElement(bread);
            this.menuModel.addElement(crumb);
            //How to set menuItem or menumodel in breadcrumb component
        }    
        public BreadCrumb getBreadCrum() {
            return breadCrum;
        }    
        public void setBreadCrum(BreadCrumb breadCrum) {
            this.breadCrum = breadCrum;
        }    
        public MenuModel getMenuModel() {
            return menuModel;
        }    
        public void setMenuModel(MenuModel menuModel) {
            this.menuModel = menuModel;
        }
        public MenuModel getMenubar() {
            return menubar;
        }
        public void setMenubar(MenuModel menubar) {
            this.menubar = menubar;
        }
    }

test.xhtml

代码语言:javascript
运行
复制
<!DOCTYPE html >
    <html xmlns="http://www.w3.org/1999/xhtml"
        xmlns:ui="http://java.sun.com/jsf/facelets"
        xmlns:h="http://java.sun.com/jsf/html"
        xmlns:f="http://java.sun.com/jsf/core"
        xmlns:c="http://java.sun.com/jsp/jstl/core"
        xmlns:fn="http://java.sun.com/jsp/jstl/functions"
        xmlns:p="http://primefaces.org/ui">
    <h:head>
    <style type="text/css">
                .bread-crum {
                     border: none;
                }
                .bread-crum a { 
                     text-decoration: inherit;
                }
                .bread-crum .ui-state-disabled{
                     opacity: inherit;
                     color:black;
                     font-weight:bold;
                     font-style: normal;
                }   
    </style>
    <script name="jquery/jquery.js" library="primefaces"></script>
        <title>BreadCrumb</title>
    </h:head>
<h:body>
     <h:form id="testForm"> 
                    <p:menubar  model="#{breadBean.menubar}" styleClass="bread-crum"></p:menubar>       
                    <p:breadCrumb model="#{breadBean.menuModel}">
                        <p:menuitem value="#{breadBean.menuModel}"> </p:menuitem>
                    </p:breadCrumb>     
            </h:form>
        </h:body>
        </html>
EN

Stack Overflow用户

发布于 2017-01-12 21:17:22

我已经浏览过这些链接,但没有发现有帮助。 Show Prime faces Bread Crumb dynamically

如果你再看一遍(第一个答案),你会发现你的问题基本上是一样的。<p:breadCrumb/>组件的模型只接受org.primefaces.model.menu.MenuItem的实例作为它的元素。

可能您没有任何异常,因为您有不同版本的PrimeFaces (在Version6.0中呈现空的面包屑)。

注意:一旦您在<p:breadCrumb/>上设置模型,就会忽略标记<p:menuitem/>

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41583805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档