JSF 2 : selection grouping with SelectItemGroup + POJO

标签 jsf jsf-2

我尝试过使用这样的分组选择:

<h:selectOneMenu value="#{selectionLabBean.oneSelectMenuGroup}"
    id="SelectOneMenuGroup" >
        <f:selectItems value="#{selectionLabBean.heroGroupList}" />
</h:selectOneMenu>
<p:message for="SelectOneMenuGroup" />

heroGroupList 是这样的:
SelectItem[] heroArr = new SelectItem[] {
    new SelectItem("Paladin"),
    ...
};
heroListWithGrouping.add(
    new SelectItemGroup("Human", 
        "A collection of human race Heroes", 
        false,
        heroArr
    )
);
.....

我想知道我是否可以使用 POJO 而不是 SelectItem 对象进行这种分组?

如果我无法做到这一点,我想我必须以某种方式将我的域对象或我的查询结果转换为 SelectItem 数组以使其工作。

有任何想法吗 ?

最佳答案

当您想使用 SelectItemGroup 时,这确实是不可能的。 .您需要从 POJO 的集合转换为 List<SelectItem>在bean(后)构造期间的双for循环中。

@PostConstruct
public void init() {
    List<HeroRace> heroRaces = getItSomehowFromDatabase();
    this.heroGroupList = new ArrayList<SelectItem>();
    for (HeroRace heroRace : heroRaces) {
        SelectItemGroup group = new SelectItemGroup(heroRace.getName()); // Human, etc
        List<SelectItem> heroes = new ArrayList<SelectItem>();
        for (Hero hero : heroRace.getHeroes()) {
            heroes.add(new SelectItem(hero.getName()); // Paladin, etc
        }
        group.setSelectItems(heroes.toArray(new SelectItem[heroes.size()]));
        this.heroGroupList.add(group);
    }
}

您也可以使用 Hero作为项目值
heroes.add(new SelectItem(hero, hero.getName()); // Paladin, etc

这样就可以绑定(bind)#{selectionLabBean.oneSelectMenuGroup}Hero键入而不是 String .但是你需要提供一个 Converter . Amorfis 已经回答了那部分。

关于JSF 2 : selection grouping with SelectItemGroup + POJO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4553093/

相关文章:

jsf - 设置热键以折叠面板

java - 我在哪里可以找到 Unified EL 2.2 的语法?

java - 通过 JSF 中的 java 脚本启用/禁用按钮

java - 输入文本区域不显示文本

java - JSF 身份验证

jsf - 将字符串参数从 xhtml 传递给函数或方法

jsf - JSF使用原始/原始XHTML/XML/EL源而不是呈现的HTML输出返回空白/未分析的页面

hibernate - Maven、JEE6、Tomcat 7/Glassfish 3.1、EJB、JSF2、Hibernate/JPA 和 PrettyFaces

java - JSF转换器全局解决方案

css - 丰富的 :dataTable headerClass attribute issue