如果你在JSF 1.x中,您需要提供一個SelectItem[]
,List<SelectItem>
或Map<String, Object>
到f:selectItems
的value
。最常見的選擇是List<SelectItem>
。假設你想使用Model#getIdManfacturer()
(我假設是一個Long
)既項標籤和值,這裏有一個例子:
public class Bean {
private Long selectedManfacturerId; // +getter +setter
private List<SelectItem> selectManfacturerIds; // +getter
@PostConstruct
public void init() {
selectManfacturerIds = new ArrayList<SelectItem>();
List<Manfacturer> manfacturers = getItFromDatabaseSomehow();
for (Manfacturer manfacturer : manfacturers) {
selectManfacturerIds.add(new SelectItem(manfacturer.getManfacturerId()));
}
}
// ...
}
結合
<h:selectOneMenu value="#{bean.selectedManfacturerId}">
<f:selectItems value="#{bean.selectManfacturerIds}" />
</h:selectOneMenu>
然而,如果您已經使用JSF 2.0,那麼您也可以使用List<SomeBean>
。 JSF 2.0 <f:selectItems>
中新的var
屬性允許您在視圖中聲明迭代項目。開球例如:
public class Bean {
private Long selectedManfacturerId; // +getter +setter
private List<Manfacturer> manfacturers; // +getter
@PostConstruct
public void init() {
manfacturers = getItFromDatabaseSomehow();
}
// ...
}
結合
<h:selectOneMenu value="#{bean.selectedManfacturerId}">
<f:selectItems value="#{bean.manfacturers}" var="manfacturer" itemValue="#{manfacturer.manfacturerId}" />
</h:selectOneMenu>