problème avec le composant h:selectOneMenu
Bonjour,
j'ai deux classes "client" et "secteur" qui sont définit comme suit :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
|
package ma.it.model;
// Generated 4 juin 2012 10:20:08 by Hibernate Tools 3.4.0.CR1
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import static javax.persistence.GenerationType.IDENTITY;
import javax.persistence.CascadeType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
/**
* Client generated by hbm2java
*/
@Entity
@Table(name = "client", catalog = "bdd_itrekrute")
public class Client implements java.io.Serializable {
private Integer idMembre;
private String nom;
private String prenom;
private Secteur secteur;
public Client() {
}
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "idMembre", unique = true, nullable = false)
public Integer getIdMembre() {
return this.idMembre;
}
public void setIdMembre(Integer idMembre) {
this.idMembre = idMembre;
}
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "idSecteur", nullable = false)
public Secteur getSecteur() {
return this.secteur;
}
public void setSecteur(Secteur secteur) {
this.secteur = secteur;
}
@Column(name = "nom", length = 254)
public String getNom() {
return this.nom;
}
public void setNom(String nom) {
this.nom = nom;
}
@Column(name = "prenom", length = 254)
public String getPrenom() {
return this.prenom;
}
public void setPrenom(String prenom) {
this.prenom = prenom;
}
} |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
|
import java.util.HashSet;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import static javax.persistence.GenerationType.IDENTITY;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
/**
* Secteur generated by hbm2java
*/
@Entity
@Table(name = "secteur", catalog = "bdd_itrekrute")
public class Secteur implements java.io.Serializable {
private Integer idSecteur;
private String designation;
private Set<Client> clients = new HashSet<Client>(0);
public Secteur() {
}
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "idSecteur", unique = true, nullable = false)
public Integer getIdSecteur() {
return this.idSecteur;
}
public void setIdSecteur(Integer idSecteur) {
this.idSecteur = idSecteur;
}
@Column(name = "designation", length = 254)
public String getDesignation() {
return this.designation;
}
public void setDesignation(String designation) {
this.designation = designation;
}
@OneToMany(fetch = FetchType.LAZY, mappedBy = "secteur")
public Set<Client> getClients() {
return this.clients;
}
public void setClients(Set<Client> clients) {
this.clients = clients;
}
} |
je veux lors de la création d'un nouveau client préciser son secteur d'activité c'est pourquoi j'ai ajouté un combobox à mon formulaire d'ajout:
Code:
1 2 3 4
|
<h:selectOneMenu value="#{ClientBean.currentClient.secteur}">
<f:selectItems value="#{SecteurBean.secteurList}" />
</h:selectOneMenu> |
mais la liste des secteurs ne se charge pas , et je me trouve face à cette exception :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
4 juin 2012 16:00:29 com.sun.faces.lifecycle.LifecycleImpl phase
ATTENTION: executePhase(RENDER_RESPONSE 6,com.sun.faces.context.FacesContextImpl@163de4e) threw exception
java.lang.IllegalArgumentException: "Argument Error: An option for component j_id_jsp_662708871_102 was not an instance of javax.faces.model.SelectItem. Type found: java.util.ArrayList.
at com.sun.faces.renderkit.RenderKitUtils.getSelectItems(RenderKitUtils.java:321)
at com.sun.faces.renderkit.html_basic.MenuRenderer.getOptionNumber(MenuRenderer.java:506)
at com.sun.faces.renderkit.html_basic.MenuRenderer.renderSelect(MenuRenderer.java:482)
at com.sun.faces.renderkit.html_basic.MenuRenderer.encodeEnd(MenuRenderer.java:447)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:847)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:241)
at com.sun.faces.renderkit.html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:153)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:827)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:233)
at com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:270)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:827)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:883)
at javax.faces.render.Renderer.encodeChildren(Renderer.java:137)
.... |
Pourriez vous m'aider svpp