Jon*_*han 2 java jsf primefaces
我知道在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>
Run Code Online (Sandbox Code Playgroud)
但是,如果我没有一个球员名单,如果我有这样的东西怎么办?我想让它像这样工作:
//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>
Run Code Online (Sandbox Code Playgroud)
使用<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>
Run Code Online (Sandbox Code Playgroud)
请注意,当#{playerManager}视图作用域时,此构造将在每次回发时重新创建bean.另请参阅JSF2 Facelets中的JSTL ......有意义吗?
| 归档时间: |
|
| 查看次数: |
18566 次 |
| 最近记录: |