这个预先选择的autoCompleteBean.selectedPlayer1不起作用!!
这是从primefaces网站展示中提取的示例:https://www.primefaces.org/showcase/ui/input/oneMenu.xhtml
<p:selectOneMenu value="#{autoCompleteBean.selectedPlayer1}" converter="player">
<f:selectItems value="#{autoCompleteBean.players}" var="player"
itemLabel="#{player.name}" itemValue="#{player}"/>
</p:selectOneMenu>
在bean中,我把这行:
private Player selectedPlayer1;
private List players;
/* AutoCompleteBean - constructor */
public AutoCompleteBean() {
players = new ArrayList<Player>();
players.add(new Player("Messi", 10, "messi.jpg", "CF"));
players.add(new Player("Bojan", 9, "bojan.jpg", "CF"));
selectedPlayer1 = players.get(1);
}
变量autoCompleteBean.selectedPlayer1, 包含在打开jsp之前指定的值。 但是,这不是预先选定的。仅出现始终选择的第一个元素 arraylist。为什么?
只有我需要p:selectOneMenu,在列表中预选de value。
提前致谢!!
答案 0 :(得分:0)
嗯,实际上你可以预先选择一个值,换句话说,默认选择一个值:
<p:selectOneMenu value="#{autoCompleteBean.selectedPlayer1}" effect="fade" converter="player">
<f:selectItem itemLabel="autoCompleteBean.selectedPlayer1.name" itemValue="autoCompleteBean.selectedPlayer1" />
<f:selectItems value="#{autoCompleteBean.players}" var="player" itemLabel="#{player.name}" itemValue="#{player}"/>
</p:selectOneMenu>
唯一的问题是它会重复默认选择的值,如下所示:
而你我猜你想要这样的东西:
因此,我建议您使用阵列播放器:
itemValue="#{player}"
但是从这个数组中删除了预先选择的选项
答案 1 :(得分:0)
你的播放器类是否有hashCode()和equals()函数?
如果它们缺失,则表面不能区分它们。
类似的问题: primefaces selectOneMenu doesn't working when it should