2010-10-16 17 views
1

Je souhaite définir les éléments d'une liste pour les sélectionner dans les zones de glace. Mais quand je fais la même chose que je reçois l'erreur suivante: java.lang.ClassCastException: ne peut pas être jeté à javax.faces.model.SelectItemDéfinition des éléments de la liste dans la glace: SelectOneMenu

La est une classe d'entité.

Aidez-nous s'il vous plaît.

Répondre

3

La façon normale de créer et de remplir les selectOneMenu articles seraient les suivants:

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())); 
    } 
} 

avec ce qui suit dans la vue (vous pouvez facilement subsitite <h: avec <ice:):

<h:selectOneMenu value="#{bean.selectedItem}"> 
    <f:selectItems value="#{bean.selectItems}" /> 
</h:selectOneMenu> 

lieu d'une valeur String, vous pouvez également utiliser Number (Integer, Long, etc.) puisque JSF a des convertisseurs intégrés pour cela. Mais si vous souhaitez utiliser des objets entiers comme valeur d'élément, vous devez créer un Converter. Ceci est décrit en détail dans this article.