JSF / Primefaces 3.4.1 / SelectOneMenu / Pojo / Pre选择pojo值不起作用

时间:2012-12-03 09:58:56

标签: jsf-2 primefaces

这个预先选择的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。

提前致谢!!

2 个答案:

答案 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>  

唯一的问题是它会重复默认选择的值,如下所示:

enter image description here

而你我猜你想要这样的东西:

enter image description here

因此,我建议您使用阵列播放器:

itemValue="#{player}" 

但是从这个数组中删除了预先选择的选项

答案 1 :(得分:0)

你的播放器类是否有hashCode()和equals()函数?

如果它们缺失,则表面不能区分它们。

类似的问题: primefaces selectOneMenu doesn't working when it should