Primefaces selectManyMenu默认选择

时间:2013-07-19 18:57:04

标签: jsf-2 primefaces omnifaces

p:selectedManyManu是否允许默认选择?我一直无法实现这一点。我甚至尝试过Omnifaces ListConverter和selectItemsConverter而没有成功。任何帮助或指针都表示赞赏。页面加载时,默认情况下可以选择多个项目。这是我的代码:

POJO:

public class LocationRef implements Serializable{
private integer Seqid;
private String locname;
private String locaddress;
private String phonenumber;

//getters and setters
//tostring
//equals, hashcode

}

后端bean:

public class SelectionBean implements Serializable {
private List<LocationRef> selectedLocations;
private List<LocationRef> allLocations;

@PostConstruct
public void init() {
    selectedLocations = new ArrayList<LocationRef>();
    allLocations = new ArrayList<LocationRef>();
    selectedLocation = dao.getSelectedLocation(idList);
    allLocation = dao.getAllLocations();
}

public List<LocationRef> getSelectedLocations() {
    return selectedLocations;
}
public List<LocationRef> getAllLocations() {
    return allLocations;
}
public void setAllLocations(List<LocationRef> allLocations) {
    this.allLocations = allLocations;
}
}

XHTML:

<p:selectManyMenu  id="location" value="#{SelectionBean.selectedLocations}" 
               converter="omnifaces.SelectItemsConverter"
               showCheckbox="true" style="width: 220px" 
               >
<f:selectItems value="#{SelectionBean.allLocations}" var="loc" 
               itemValue="#{loc.locationSeqid}"
               itemLabel="#{loc.sitename}"/>       
</p:selectManyMenu>

1 个答案:

答案 0 :(得分:2)

您的<f:selectItems itemValue>不对。它应该表示您想要在<p:selectManyMenu value>后面的集合中进行单独设置的相同值。

这应该这样做:

itemValue="#{loc}"

omnifaces.SelectItemsConverter是用于此目的的正确转换器。 omnifaces.ListConverter仅适用于那些不使用<f:selectItem(s)>作为孩子的组件,而是“普通”List作为自己的属性,例如<p:autoComplete>和{{1 }}