gpt4 book ai didi

java - 如何将 PrimeFaces SelectOneMenu ItemLabel 和 ItemValue 与列表一起使用?

转载 作者:行者123 更新时间:2023-12-02 14:45:20 24 4
gpt4 key购买 nike

据我所知,在 SelectOneMenu 中显示信息的正确方法是拥有一个对象列表并使用它的属性,如下所示:

<p:selectOneMenu id="player" value="">  
<f:selectItem itemLabel="Select" itemValue="" />
<f:selectItems value="#{players}"
var="player"
itemLabel="#{player.name}"
itemValue="#{player.id}"/>
</p:selectOneMenu>

但是如果我没有玩家列表怎么办,如果我有这样的东西怎么办?我想让它像这样工作:

//PlayerManager
public List<String> getPlayerNames() {
String[] names = new String[] {"player1", "player2"};
return Arrays.asList(names);
}

public List<String> getPlayerIds() {
String[] ids = new String[] {"1", "2"};
return Arrays.asList(ids);
}

<p:selectOneMenu id="player" value="">
<f:selectItem itemLabel="Select" itemValue="" />
<f:selectItems value="#{playerManager.playerNames}"
var="player"
itemLabel="#{playerManager.playerNames}"
itemValue="#{playerManager.playerIds}"/>
</p:selectOneMenu>

最佳答案

使用<c:forEach>生成<f:selectItem>成分。您可以使用它的varStatus属性来获取当前迭代索引,这样就可以通过索引获取另一个列表的项目。

<c:forEach items="#{playerManager.playerIds}" var="playerId" varStatus="loop">
<f:selectItem itemValue="#{playerId}" itemLabel="#{playerManager.playerNames[loop.index]}" />
</c:forEach>

请注意,当 #{playerManager}如果是 View 作用域,则此构造将在每次回发时重新创建 bean。另请参阅JSTL in JSF2 Facelets... makes sense?

关于java - 如何将 PrimeFaces SelectOneMenu ItemLabel 和 ItemValue 与列表一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15815517/

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