IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JSF Java Discussion :

probleme de selectOneListbox


Sujet :

JSF Java

  1. #1
    Membre éclairé Avatar de solawe
    Inscrit en
    Juillet 2006
    Messages
    368
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juillet 2006
    Messages : 368
    Par défaut probleme de selectOneListbox
    bonsoir,
    j'utilise dans page une liste comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <h:selectOneListbox value="#{devisBean.article}">
    		<f:selectItems value="#{controleur.listArticle}"/>
    	</h:selectOneListbox>
    quand j'essaie de l'afficher,j'obtient l'exception suivante :
    GRAVE: "Servlet.service()" pour la servlet FacesServlet a généré une exception
    java.lang.ClassCastException: java.lang.String
    at com.sun.faces.renderkit.html_basic.MenuRenderer.getOptionNumber(MenuRenderer.java:492)
    at com.sun.faces.renderkit.html_basic.MenuRenderer.renderSelect(MenuRenderer.java:465)
    at com.sun.faces.renderkit.html_basic.MenuRenderer.encodeEnd(MenuRenderer.java:430)
    at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:720)
    at javax.faces.webapp.UIComponentTag.encodeEnd(UIComponentTag.java:623)
    at javax.faces.webapp.UIComponentTag.doEndTag(UIComponentTag.java:546)
    at com.sun.faces.taglib.html_basic.SelectOneListboxTag.doEndTag(SelectOneListboxTag.java:521)
    at org.apache.jsp.jsp.etablirDemandeDevis_jsp._jspx_meth_h_selectOneListbox_0(etablirDemandeDevis_jsp.java:235)
    at org.apache.jsp.jsp.etablirDemandeDevis_jsp._jspx_meth_h_form_0(etablirDemandeDevis_jsp.java:148)
    at org.apache.jsp.jsp.etablirDemandeDevis_jsp._jspx_meth_f_view_0(etablirDemandeDevis_jsp.java:101)
    at org.apache.jsp.jsp.etablirDemandeDevis_jsp._jspService(etablirDemandeDevis_jsp.java:69)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)





    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    public class DevisBean {
    private Date date_devis;
    private int article;
    private int paragraphe;
    private int ligne;
    private String dotation;
    private List listArticle=new ArrayList();
    public List getListArticle() {
    	return listArticle;
    }
    public void setListArticle(List listArticle) {
    	this.listArticle = listArticle;
    }
    public int getArticle() {
    	return article;
    }
    public void setArticle(int article) {
    	this.article = article;
    }
    public Date getDate_devis() {
    	return date_devis;
    }
    public void setDate_devis(Date date_devis) {
    	this.date_devis = date_devis;
    }
    public String getDotation() {
    	return dotation;
    }
    public void setDotation(String dotation) {
    	this.dotation = dotation;
    }
    public int getLigne() {
    	return ligne;
    }
    public void setLigne(int ligne) {
    	this.ligne = ligne;
    }
    public int getParagraphe() {
    	return paragraphe;
    }
    public void setParagraphe(int paragraphe) {
    	this.paragraphe = paragraphe;
    }
     
    public DevisBean() {
    	super();
    	// TODO Auto-generated constructor stub
    }
     
    }
    listArticle est une liste qui contient des elements de type String.
    Si vous pouvez m'aider.merci

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    511
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 511
    Par défaut
    t as liste d'article doit etre de type SelectItem. et si ton article est un int tu vas avoir besoin de rajouter le converter java.lang.Integer

  3. #3
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Par défaut
    Si mes souvenir sont bons, lorsque tu créer une selectOneListbox tu détermines un SelectItem par un id et un texte. Le problème doit provenir de la ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    			String key = data.getId() + "";
    			String value = data.getValue();
    			SelectItem item = new SelectItem(key, value);

  4. #4
    Membre éclairé Avatar de solawe
    Inscrit en
    Juillet 2006
    Messages
    368
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juillet 2006
    Messages : 368
    Par défaut
    merci pour la réponse,
    j'ai changé le type de listarticle en SelectItem,mais maintenant j'obtient une autre exception:
    org.apache.jasper.JasperException: javax.servlet.jsp.JspException: Erreur dans les arguments: Un ou plusieurs paramétres peuvent ''tre nuls.
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:322)
    com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:130)
    com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:87)
    com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
    com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:117)
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:198)


  5. #5
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Par défaut
    Alors la je vois deux choses possibles

    soient lors de la création de ton selectitem tu passes une valeur null

    soit tu accèdes à une propriété depuis ta page JSF à un attribut qui n'est pas existant

  6. #6
    Membre éclairé Avatar de solawe
    Inscrit en
    Juillet 2006
    Messages
    368
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juillet 2006
    Messages : 368
    Par défaut
    le code de ma page jsp est le suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <h:selectOneListbox value="#{devisBean.article}">
    		<f:selectItems value="#{controleur.listArticle}"/>
    	</h:selectOneListbox>
    la listArticle dans la classe controlleur est la suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SelectItem listArticle=new SelectItem();
     
    	public SelectItem getListArticle() throws HibernateException{
    		listArticle=retournerArticle();
    		return listArticle;
    	}
     
    	public void setListArticle(SelectItem listArticle) {
    		this.listArticle = listArticle;
    	}
    dans faces-config ,je déclare le bean "controleur"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <managed-bean>
      <managed-bean-name>controleur</managed-bean-name>
      <managed-bean-class>com.intendance.presentation.controleur.Controleur</managed-bean-class>
      <managed-bean-scope>session</managed-bean-scope>
      <managed-property>
       <property-name>listArticle</property-name>
       <property-class>javax.faces.model.SelectItem</property-class>
       <value/>
      </managed-property>
     </managed-bean>
    Sachant que la méthode retournerArticle retourne une liste de type SelectItem,j'ai vérifié,elle n'est pas vide,elle contient exactement le nombre de ligne que j'ai dans ma table dans la BDD.

    Je vois pas,l'origine de l'erreur puisque la liste existe et elle n'est pas nulle

  7. #7
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Par défaut
    je veux bien mais "#{devisBean.article}" represente un objet article

    si tu veux afficher une propriété particulière ca sera "#{devisBean.article.name}"

  8. #8
    Membre éclairé Avatar de solawe
    Inscrit en
    Juillet 2006
    Messages
    368
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juillet 2006
    Messages : 368
    Par défaut
    merci pour ton aide,Dans le bean devisBean,l'attribut article est de type int
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    public class DevisBean {
    private Date date_devis;
    private int article;
    private int paragraphe;
    private int ligne;
    private String dotation;
    private SelectItem listArticle=new SelectItem();
     
    public SelectItem getListArticle() {
    	return listArticle;
    }
    public void setListArticle(SelectItem listArticle) {
    	this.listArticle = listArticle;
    }
    public int getArticle() {
    	return article;
    }
    public void setArticle(int article) {
    	this.article = article;
    }
    public Date getDate_devis() {
    	return date_devis;
    }
    public void setDate_devis(Date date_devis) {
    	this.date_devis = date_devis;
    }
    public String getDotation() {
    	return dotation;
    }
    public void setDotation(String dotation) {
    	this.dotation = dotation;
    }
    public int getLigne() {
    	return ligne;
    }
    public void setLigne(int ligne) {
    	this.ligne = ligne;
    }
    public int getParagraphe() {
    	return paragraphe;
    }
    public void setParagraphe(int paragraphe) {
    	this.paragraphe = paragraphe;
    }
     
    public DevisBean() {
    	super();
    	// TODO Auto-generated constructor stub
    }
     
    }
    Je pense pas que l'erreur vient de là

Discussions similaires

  1. JSF/Ajax : Probleme avec un selectOneListbox
    Par tmanta7 dans le forum JSF
    Réponses: 0
    Dernier message: 03/04/2010, 18h33
  2. Probleme validation selectOneListbox
    Par outhman83 dans le forum JSF
    Réponses: 6
    Dernier message: 14/11/2008, 17h39
  3. Probleme avec h:selectOneListbox et a4j:support
    Par yoskater dans le forum JSF
    Réponses: 14
    Dernier message: 20/02/2008, 11h56
  4. probleme bidding selectOneListbox
    Par koichokor dans le forum JSF
    Réponses: 1
    Dernier message: 18/12/2007, 19h33
  5. [Kylix] Probleme d'execution de programmes...
    Par yopziggy dans le forum EDI
    Réponses: 19
    Dernier message: 03/05/2002, 14h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo