gpt4 book ai didi

JSF 2 : selection grouping with SelectItemGroup + POJO

转载 作者:行者123 更新时间:2023-12-04 10:30:50 24 4
gpt4 key购买 nike

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

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com