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.

È stato utile?

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 .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top