如何从Bean类

时间:2017-01-11 06:06:14

标签: primefaces breadcrumbs

重要提示:

  • 有两种方法
    1. crumBean(); =>这种方法设置" p:菜单栏" primefaces组件
    2. 面包(); =>此方法用于设置" p:breadcrumb" primefaces组件,我无法设置,这是我的实际问题。

我的问题: 如何在Bean类

中设置primefaces Breadcrumb菜单

我已经浏览了这些链接,但没有找到帮助 Show Prime faces Bread Crumb dynamically
http://javabeat.net/primefaces-breadcrumb/

这是我的代码:

Bean类

 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

<!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>

1 个答案:

答案 0 :(得分:1)

  

我已浏览过这些链接,但找不到帮助

     

Show Prime faces Bread Crumb dynamically

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

可能你没有得到任何异常,因为你有不同版本的PrimeFaces(在版本6.0中渲染空的痕迹)。

注意:<p:menuitem/>

上设置模型后,系统会忽略标记<p:breadCrumb/>