Impostazione voci di elenco nel ghiaccio: SelectOneMenu
-
08-10-2019 - |
Domanda
Vorrei voci impostate da un elenco alla selectonemenu in ICEfaces. Ma quando faccio lo stesso ricevo il seguente errore: java.lang.ClassCastException: non può essere gettato a javax.faces.model.SelectItem
Il è una classe di entità.
Guida.
Soluzione
Il modo normale di creare e popolare le voci selectOneMenu
sarebbe il seguente:
private String selectedItem; // +getter +setter
private List<SelectItem> selectItems; // +getter
public Bean() {
selectItems = new ArrayList<SelectItem>();
for (Entity entity : getYourEntities()) {
selectItems.add(new SelectItem(entity.getValue(), entity.getLabel()));
}
}
Con la seguente nella vista (si può facilmente <h:
subsitite con <ice:
):
<h:selectOneMenu value="#{bean.selectedItem}">
<f:selectItems value="#{bean.selectItems}" />
</h:selectOneMenu>
Al posto di un valore String
, è anche possibile utilizzare qualsiasi Number
(Integer
, Long
, ecc) in quanto JSF ha incorporato convertitori per questo. Ma se si desidera utilizzare oggetti interi come valore di elemento, quindi è necessario creare un Converter
. Questo è descritto in dettaglio nella questo articolo .