【问题标题】:How to use PrimeFaces SelectOneMenu ItemLabel & ItemValue with Lists?如何将 PrimeFaces SelectOneMenu ItemLabel 和 ItemValue 与列表一起使用?
【发布时间】:2013-04-04 15:30:50
【问题描述】:

据我所知,在 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> 

【问题讨论】:

  • function?那是Java还是JavaScript? String[] 顺便说一下不是一个列表,而是一个数组。请正确使用条款并发布可编译的代码以避免红鲱鱼。
  • @BalusC 抱歉是 Java。现在修好了。我需要第二种方式的原因是因为我试图填充一个选择菜单,其值不是来自数据库。希望这是有道理的。
  • function 在 Java 中不存在。您正在将 Java 与 JavaScript 混合使用。
  • @BalusC 很抱歉,是的,我在用伪代码思考,并在脑海中做了一个例子。

标签: java jsf primefaces


【解决方案1】:

使用&lt;c:forEach&gt; 生成&lt;f:selectItem&gt; 组件。可以使用它的varStatus属性来获取当前迭代索引,这样就可以通过索引获取其他列表中的一项。

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

请注意,当#{playerManager} 是视图范围时,此构造将在每次回发时重新创建 bean。另见JSTL in JSF2 Facelets... makes sense?

【讨论】:

  • 谢谢!有没有办法使用这个解决方案并允许设置默认值? &lt;p:selectOneMenu id="player" value="2"&gt;
  • value属性后面的属性中设置:value="#{playerManager.selectedPlayerId}"。不,它不能是静态字符串,它必须是可写的。否则,请在页面加载期间使用 JavaScript 通过其小部件变量进行设置。
猜你喜欢
  • 2014-02-15
  • 2018-04-06
  • 2012-10-29
  • 1970-01-01
  • 1970-01-01
  • 2012-12-22
  • 2013-11-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多