Réglage des éléments de liste dans la glace: SelectOneMenu
-
08-10-2019 - |
Question
Je souhaite des éléments paramétrés d'une liste à l'selectonemenu dans ICEfaces. 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.SelectItem
est une classe d'entité.
S'il vous plaît Aide.
La solution
La façon normale de créer et de remplir les éléments de selectOneMenu
serait le suivant:
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 <h:
subsitite avec <ice:
):
<h:selectOneMenu value="#{bean.selectedItem}">
<f:selectItems value="#{bean.selectItems}" />
</h:selectOneMenu>
Au lieu d'une valeur de String
, vous pouvez également utiliser JSF depuis une Number
(Integer
, Long
, etc.) a intégré des convertisseurs pour cela. Mais si vous voulez utiliser des objets entiers comme valeur de l'élément, vous devez créer un Converter
. Ceci est décrit en détail dans cet article .