我尝试在bean中构建菜单模型并将其与标记p:menubar
绑定<p:menubar class="menu" model="#{layoutView.menuModel}" />
一切正常,期待一件事。问题是,我将获得以下菜单结构(当然使用菜单模型):
<p:menubar>
<p:menuitem>
<h:panelGrid onmouseover="$(this).find('img').attr('src','resources/images/template_2/header/home_hover.png')" onmouseout="$(this).find('img').attr('src','resources/images/template_2/header/home.png')" columns="2">
<p:graphicImage value="/resources/images/template_2/header/home.png" />
<h:commandLink actionListener="#{routesService.redirect}" value="Siema" />
</h:panelGrid>
</p:menuitem>
</p:menubar>
你可以看到。 p:menuitem有子h:panelGrid(这个.xhtml页面有效)。但是我不能通过在bean中构建菜单模型来获得相同的效果
DefaultMenuItem item = new DefaultMenuItem();
HtmlPanelGrid panelGrid = new HtmlPanelGrid();
HtmlGraphicImage icon = new HtmlGraphicImage();
HtmlCommandLink link = new HtmlCommandLink();
link.setValue(Helper2.transformStringFirstLetterUpper(menusItems.getAvalue()));
link.setValueExpression("actionListener", Helper2.createValueExpression("#{routesService.contextRedirect('" + route.getPattern() + "')}", Object.class));
panelGrid.getChildren().add(icon);
panelGrid.getChildren().add(link);
item.getChildren().add(panelGrid); // here i get nullpointer exception
我得到nullpointer异常。我检查了
的源代码 org.primefaces.model.menu.DefaultMenuItem
和方法getChildren返回null
我想知道如何将panelGrid放入p:menuitem。
我也尝试过切换
DefaultMenuItem into UIMenuItem
但是通过创建菜单模型我得到以下错误
java.lang.IllegalArgumentException: 1
at javax.faces.component.UIComponentBase.validateId(UIComponentBase.java:586)
at javax.faces.component.UIComponentBase.setId(UIComponentBase.java:412)
at org.primefaces.model.menu.BaseMenuModel.generateUniqueIds(BaseMenuModel.java:56)
at org.primefaces.model.menu.BaseMenuModel.generateUniqueIds(BaseMenuModel.java:44)
at org.primefaces.model.menu.DefaultMenuModel.generateUniqueIds(DefaultMenuModel.java:28)
at org.primefaces.component.menu.BaseMenuRenderer.encodeEnd(BaseMenuRenderer.java:111)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:919)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1863)
at javax.faces.render.Renderer.encodeChildren(Renderer.java:176)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:889)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1856)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
任何人都可以帮助解决这个问题我将不胜感激任何帮助。