有三种方式:
(1)
页面中:
<h:selectManyMenu value="#{parameterList.categoryIds}">
<s:selectItems value="#{siteList.resultList}" var="category" label="#{category.name}"/>
</h:selectManyMenu>
解释:#{siteList.resultList}是个查询出来的集合。label="#{category.name}"实际显示出name来,
用value="#{parameterList.categoryIds}"来获取直实际上是个一条一条的记录,然后从而可以获取到它对应的ID直。
但是这中方式只能使用与seam自己产生出来的siteList.java中。因为那个页面中可以直接用#{siteList.resultList},所以那样写很好。
如果用这个标签的话:s:selectItems来做选项的话,里面value="#{siteList.属性}",如果用属性的话,这个属性的类型必须是SelectItem,要这样定一private List<SelectItem> cities;
(2)
页面中:
<h:selectManyMenu style="height:100;" value="#{selectManyMenuBean.selCities}">
<f:selectItems value="#{selectManyMenuBean.cities}" />
</h:selectManyMenu>
类中:
public class SelectManyMenuBean {
private List<String> languages;
private List<SelectItem> cities;
private List<String> selCities;
public SelectManyMenuBean() {
cities = new ArrayList<SelectItem>();
cities.add(new SelectItem("Chennai"));
cities.add(new SelectItem("Bangalore"));
cities.add(new SelectItem("Pune"));
cities.add(new SelectItem("Delhi"));
cities.add(new SelectItem("Mumbai"));
}
public List<SelectItem> getCities() {
return cities;
}
public void setCities(List<SelectItem> cities) {
this.cities = cities;
}
public List<String> getSelCities() {
return selCities;
}
public void setSelCities(List<String> selCities) {
this.selCities = selCities;
}
解释:cities是个selectManyMenuBean类的属性
(3)
<h:selectManyMenu style="height:100;" value="#{selectManyMenuBean.languages}">
<f:selectItem itemLabel="Java" itemValue="Java" />
<f:selectItem itemLabel="C" itemValue="C"/>
<f:selectItem itemLabel="C++" itemValue="C++"/>
</h:selectManyMenu>
(4)
<ui:define name="label">Select Sites</ui:define>
<h:selectManyMenu value="#{newscreate.chosesites}" style="width:115px;height:80px;">
<c:forEach items="#{newscreate.siteResults}" var="site">
<f:selectItem itemValue="#{site.id}" itemLabel="#{site.name}"></f:selectItem>
</c:forEach>
</h:selectManyMenu>
类中:
private List<Long> chosesites;
private List<Site> siteResults;
public List<Site> getSiteResults() {
// siteResults = new ArrayList<Site>();
Long userid = user2.getId();
siteList.setEjbql("select s from UserSite userSite,Site s where userSite.siteId=s.id and userSite.userId = "+userid);
if(siteList.getResultCount()>0){
return siteList.getResultList();
}else{
return null;
}
}
public void setSiteResults(List<Site> siteResults) {
this.siteResults = siteResults;
}
public List<Long> getChosesites() {
return chosesites;
}
public void setChosesites(List<Long> chosesites) {
this.chosesites = chosesites;
}