簡體   English   中英

如何將PrimeFaces SelectOneMenu ItemLabel和ItemValue與列表一起使用?

[英]How to use PrimeFaces SelectOneMenu ItemLabel & ItemValue with Lists?

我知道在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}是視圖范圍時,此構造將在每次回發時重新創建bean。 另請參閱JSF2 Facelets中的JSTL ......有意義嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM