2013-07-19 70 views
2

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

POJO:

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

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

}

后端豆:

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> 

回答

2

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

这应做到:

itemValue="#{loc}" 

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

+0

就是这样。将selectManyMenu值设置为selectItems ItemValue的相同类型(集合)解决了它。谢谢。 – Tandina

+0

不客气。 – BalusC