如何从bean JSF

时间:2018-06-06 09:05:19

标签: java jsf menu menuitem

我正在编写一个下拉菜单,点击一个按钮菜单,它会显示它的子菜单或菜单项。目前,我无法从bean填充p:menuitem。以前,我试图编码为

<p:menu label="PrimeFaces" icon="ui-icon-heart">
  <p:menuitem value="Home" url="http://www.primefaces.org" icon="ui-icon-home" />
  <p:menuitem value="Docs" url="http://www.primefaces.org/documentation" icon="ui-icon-document" />
  <p:menuitem value="Download" url="http://www.primefaces.org/downloads" icon="ui-icon-arrowthick-1-s" />
  <p:menuitem value="Support" url="http://www.primefaces.org/support" icon="ui-icon-wrench" />
</p:menu>

正如您所注意到的,菜单项值(Home,Docs等)在JSF中是硬编码的。如何从bean中获取值并填充为菜单项?当我可以将列表设置为值时,p:menuitem是否有类似f:selectItems的东西?

我想要尝试实现的是从bean中填充菜单项,并在选择单个菜单项时触发方法。

非常感谢帮助。谢谢。

2 个答案:

答案 0 :(得分:0)

如果您使用Primefaces,您可以尝试:

豆:

public class MyItem {
  private String value;
  private String url;
  private String icon;
  ....
  getters/setters
  ...
}


public List<MyItem> getMenuItems() {
  // build list
}

XHTML:

<p:repeat value="#{bean.menuItems}" var="item">
  <p:menuitem value="#{item.value}" url="#{item.url}" icon="#{item.icon}" />
</prepeat>

答案 1 :(得分:0)

您确定菜单是jsf组件吗?我认为您可能正在使用primefaces组件,名称方案通常定义如下,而p:menu是primefaces的组件:

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:p="http://primefaces.org/ui"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:c="http://java.sun.com/jsp/jstl/core"
      xmlns:sec="http://www.springframework.org/security/tags" >

您可以自定义并使用Bean中的菜单,如下所示:

xhtml:

 <p:menu model="#{menuBean.model}" />

Bean:

public class MenuBean {

    private MenuModel model;

    public MenuBean() {

    model = new DefaultMenuModel();
    //First submenuDefaultSubMenu firstSubmenu = new DefaultSubMenu("Dynamic Submenu");
    DefaultMenuItem item = new DefaultMenuItem("External");
    item.setUrl("http://www.primefaces.org");
    item.setIcon("ui-icon-home");
    firstSubmenu.addElement(item);
    model.addElement(firstSubmenu);
    //Second submenuDefaultSubMenu secondSubmenu = new DefaultSubMenu("Dynamic Actions");
    item = new DefaultMenuItem("Save");
    item.setIcon("ui-icon-disk");
    item.setCommand("#{menuBean.save}");
    item.setUpdate("messages");
    secondSubmenu.addElement(item);
    item = new DefaultMenuItem("Delete");
    item.setIcon("ui-icon-close");
    item.setCommand("#{menuBean.delete}");
    item.setAjax(false);
    secondSubmenu.addElement(item);
    item = new DefaultMenuItem("Redirect");
    item.setIcon("ui-icon-search");
    item.setCommand("#{menuBean.redirect}");
    secondSubmenu.addElement(item);
    model.addElement(secondSubmenu);
    }

    public MenuModel getModel() { return model; }
}

在这里您可以看到所有文档: https://www.primefaces.org/docs/guide/primefaces_user_guide_6_2.pdf(第333页)