显示Prime面包屑动态 [英] Show Prime faces Bread Crumb dynamically

查看:596
本文介绍了显示Prime面包屑动态的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要在托管bean中动态创建面包屑菜单,我发现这如何使一个初始化面包屑动态?在堆栈溢出和初始化动态菜单创建的示例。以下是我的代码来创建动态菜单

i need to create primefaces bread crumb menu dynamically in managed bean, i found this How to make a primefaces breadcrumb dynamic? example of dynamic menu creation on stack overflow and primefaces. following is my code to create a dynamic menu

public class BreadCrumb  { 

private MenuModel model;

public BreadCrumb() {

    createMenu();

}

@PostConstruct
private void createMenu()
{

     model = new DefaultMenuModel();
      // First submenu
    DefaultSubMenu firstSubmenu = new DefaultSubMenu("First Sub Menu");

    DefaultMenuItem item = new DefaultMenuItem("Item1");
    item.setUrl("http://www.primefaces.org");
    item.setIcon("ui-icon-disk");
    firstSubmenu.addElement(item);
    model.addElement(firstSubmenu);


    // Second submenu
    DefaultSubMenu secondSubmenu = new DefaultSubMenu("Second Sub Menu");
    item = new DefaultMenuItem("Item2");
    item.setIcon("ui-icon-disk");
    item.setUrl("http://www.primefaces.org");
    secondSubmenu.addElement(item);
    //third sub menu
    item = new DefaultMenuItem("Item3");
    item.setIcon("ui-icon-close");
    secondSubmenu.addElement(item);
    //forth sub menu
    item = new DefaultMenuItem("Item4");
    item.setIcon("ui-icon-search");
    secondSubmenu.addElement(item);


    model.addElement(secondSubmenu);
}


public MenuModel getModel() {
    return model;
}
}   

我的xhtml是

 <h:form>

<p:breadCrumb model="#{breadCrumbBean.model}"> 

</p:breadCrumb>


</h:form>

我尝试使用模型与巨型菜单,菜单和菜单项,但有时我不呈现任何东西,有时它给出一个例外。对于当前场景我得到这个异常。

i tried using model with mega menu, menu and menu item but sometimes i doesn't render anything and sometimes it gives an exception. for current scenario i am getting this exception.

      Error Rendering View[/revdep/breadcrumb.xhtml]: java.lang.ClassCastException: org.primefaces.model.menu.DefaultSubMenu cannot be cast to org.primefaces.model.menu.MenuItem
at org.primefaces.component.breadcrumb.BreadCrumbRenderer.encodeMarkup(BreadCrumbRenderer.java:42) [primefaces-5.2.jar:5.2]
at org.primefaces.component.menu.BaseMenuRenderer.encodeEnd(BaseMenuRenderer.java:113) [primefaces-5.2.jar:5.2]
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875) [jboss-jsf-api_2.1_spec-2.0.0.Final.jar:2.0.0.Final]
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1764) [jboss-jsf-api_2.1_spec-2.0.0.Final.jar:2.0.0.Final]
at javax.faces.render.Renderer.encodeChildren(Renderer.java:168) [jboss-jsf-api_2.1_spec-2.0.0.Final.jar:2.0.0.Final]
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845) [jboss-jsf-api_2.1_spec-2.0.0.Final.jar:2.0.0.Final]
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1757) [jboss-jsf-api_2.1_spec-2.0.0.Final.jar:2.0.0.Final]
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760) [jboss-jsf-api_2.1_spec-2.0.0.Final.jar:2.0.0.Final]
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:402) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT]
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT]
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT]
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT]
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT]
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594) [jboss-jsf-api_2.1_spec-2.0.0.Final.jar:2.0.0.Final]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.10.Final.jar:]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.10.Final.jar:]
at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:100) [primefaces-5.2.jar:5.2]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.10.Final.jar:]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.10.Final.jar:]
at com.googlecode.webutilities.filters.CompressionFilter.doFilter(CompressionFilter.java:112) [webutilities-0.0.5.jar:]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.10.Final.jar:]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.10.Final.jar:]
at org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.doFilterInternal(OpenEntityManagerInViewFilter.java:113) [spring-orm-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) [spring-web-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.10.Final.jar:]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.10.Final.jar:]
at pk.gov.fbr.insys.base.IRISFilterBean.doFilter(IRISFilterBean.java:105) [classes:]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.10.Final.jar:]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.10.Final.jar:]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.10.Final.jar:]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.10.Final.jar:]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:489) [jbossweb-7.0.10.Final.jar:]
at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:154) [jboss-as-web-7.1.0.Final.jar:7.1.0.Final]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.10.Final.jar:]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.10.Final.jar:]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.10.Final.jar:]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.10.Final.jar:]
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.10.Final.jar:]
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.10.Final.jar:]
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.10.Final.jar:]
at java.lang.Thread.run(Unknown Source) [rt.jar:1.6.0_33]

我似乎找不到任何解决方案来创建动态面包屑,

i can't seem to find any solution for creating dynamic breadcrumb, any help would be appreciated

推荐答案

你的链接([...]你有路线,适应这个为BreadCrumb [..])和stacktrace( java.lang.ClassCastException:org.primefaces.model.menu。 DefaultSubMenu不能转换为org.primefaces.model.menu.MenuItem )状态,不能使用类 org.primefaces.model.menu.DefaultSubMenu < p:breadcrumb> 中。
此外,面包屑是一维结构,因此您不能嵌套元素。

Like your link ("[...] You have off course, to adapt this one for BreadCrumb[..]") and the stacktrace (java.lang.ClassCastException: org.primefaces.model.menu.DefaultSubMenu cannot be cast to org.primefaces.model.menu.MenuItem) state, you can't use the class org.primefaces.model.menu.DefaultSubMenu in a <p:breadcrumb>. Furthermore, a breadcrumb is an one-dimensional structure, so you can't nest elements.

解决方案:使用 org.primefaces.model.menu.MenuItem ,如 org.primefaces.model.menu.DefaultMenuItem 而不是 org。 primefaces.model.menu.DefaultSubMenu 。示例:

Solution: Use an implementation of org.primefaces.model.menu.MenuItem, like org.primefaces.model.menu.DefaultMenuItem instead of org.primefaces.model.menu.DefaultSubMenu. Example:

    model = new DefaultMenuModel();

    DefaultMenuItem item = new DefaultMenuItem("Item1");
    item.setIcon("ui-icon-disk");
    item.setUrl("http://www.primefaces.org");
    model.addElement(item);

    item = new DefaultMenuItem("Item2");
    item.setIcon("ui-icon-disk");
    item.setUrl("http://www.primefaces.org");
    model.addElement(item);

    item = new DefaultMenuItem("Item3");
    item.setIcon("ui-icon-close");
    model.addElement(item);

    item = new DefaultMenuItem("Item4");
    item.setIcon("ui-icon-search");
    model.addElement(item);

这篇关于显示Prime面包屑动态的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆