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 :

JSF et itération


Sujet :

JSF Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 146
    Par défaut JSF et itération
    Bonjour,

    je suis en train de tenter de réaliser une itération très simple sur une table (Environnement) dans ma base de donnée MySql. En fait lorsque je tente d'accéder à ma page index.xhtml j'ai l'erreur suivante :

    java.lang.NumberFormatException: For input string: "idEnv"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:492)
    at java.lang.Integer.parseInt(Integer.java:527)
    at javax.el.ArrayELResolver.toInteger(ArrayELResolver.java:378)
    at javax.el.ArrayELResolver.getValue(ArrayELResolver.java:198)
    at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
    at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
    at com.sun.el.parser.AstValue.getValue(AstValue.java:138)
    at com.sun.el.parser.AstValue.getValue(AstValue.java:183)
    at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:224)
    at com.sun.faces.facelets.el.ELText$ELTextVariable.writeText(ELText.java:227)
    at com.sun.faces.facelets.el.ELText$ELTextComposite.writeText(ELText.java:150)
    at com.sun.faces.facelets.compiler.TextInstruction.write(TextInstruction.java:85)
    at com.sun.faces.facelets.compiler.UIInstructions.encodeBegin(UIInstructions.java:82)
    at com.sun.faces.facelets.compiler.UILeaf.encodeAll(UILeaf.java:183)
    at com.sun.faces.facelets.component.RepeatRenderer.encodeChildren(RepeatRenderer.java:104)
    at com.sun.faces.facelets.component.UIRepeat.process(UIRepeat.java:523)
    at com.sun.faces.facelets.component.UIRepeat.encodeChildren(UIRepeat.java:984)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1757)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760)
    at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:402)
    at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
    at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
    at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
    at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860)
    at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757)
    at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056)
    at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229)
    at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
    at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
    at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
    at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
    at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
    at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
    at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
    at java.lang.Thread.run(Thread.java:744)
    Je n'arrive pas à comprendre ce que j'ai mal fait. Mon code est le suivant.

    index.xhtml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <table>
        <tr>
    	<td> ID </td>
    	<td> NOM </td>
        </tr>
        <ui:repeat var="env" value="#{environnementBean.getListe()}">
    	<tr>
            	<td> #{env.idEnv} </td>
    		<td> #{env.nomEnv} </td> 
    	</tr>
         </ui:repeat>
    </table>
    Fichier EnvironnementBean.java
    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
     
    package com.beans;
     
    import java.io.Serializable;
    import java.util.ArrayList;
    import java.util.List;
     
    import javax.ejb.EJB;
    import javax.faces.bean.ManagedBean;
    import javax.faces.bean.RequestScoped;
     
    import com.dao.EnvironnementDao;
    import com.entities.Environnement;
     
    @ManagedBean
    @RequestScoped
    public class EnvironnementBean implements Serializable
    {
    	/**
             * 
             */
    	private static final long serialVersionUID = 1L;
     
    	private Environnement _environnement;
     
        // Injection de notre EJB (Session Bean Stateless)
        @EJB
        private EnvironnementDao _environnementDao;
     
        private List<Environnement> _envs;
     
        // Initialisation de l'entité env
        public EnvironnementBean() 
        {
            _environnement = new Environnement();
            _envs = new ArrayList<Environnement>();
        }
     
        public Environnement getEnvironnement()
        {
        	return _environnement;
        }
     
        public List<Environnement> getListe()
        {
        	_envs = _environnementDao.lister();
        	return _envs;
        }
     
    }
    Fichier EnvironnementDAO.java
    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    package com.dao;
     
    import java.util.List;
     
    import javax.ejb.Stateless;
    import javax.persistence.EntityManager;
    import javax.persistence.NoResultException;
    import javax.persistence.PersistenceContext;
    import javax.persistence.Query;
    import javax.persistence.TypedQuery;
     
    import com.entities.Environnement;
     
    @Stateless
    public class EnvironnementDao {
        private static final String JPQL_SELECT_PAR_NOM = "SELECT e FROM Environnement e WHERE e.nomEnv=:nomEnv";
        private static final String JPQL_SELECT = "SELECT e.idEnv, e.nomEnv FROM Environnement e";
        private static final String PARAM_NOM = "nomEnv";
     
        // Injection du manager, qui s'occupe de la connexion avec la BDD
        @PersistenceContext( unitName = "bdd" )
        private EntityManager em;
     
        // Enregistrement d'un nouvel environnement
        public void creer(Environnement  env) throws DAOException 
        {
            try 
            {
                em.persist( env );
            } catch ( Exception e ) 
            {
                throw new DAOException( e );
            }
        }
     
        // Recherche d'un utilisateur à partir de son adresse email
        public Environnement trouver( String mail ) throws DAOException 
        {
            Environnement env = null;
            Query requete = em.createQuery(JPQL_SELECT_PAR_NOM);
            requete.setParameter( PARAM_NOM, mail );
            try 
            {
                env = (Environnement) requete.getSingleResult();
            } catch ( NoResultException e ) 
            {
                return null;
            } catch ( Exception e ) 
            {
                throw new DAOException( e );
            }
            return env;
        }
     
        public List<Environnement> lister() throws DAOException
        {
            try 
            {
            	TypedQuery<Environnement> query = em.createQuery( JPQL_SELECT, Environnement.class );
                return query.getResultList();
            } catch ( NoResultException e ) 
            {
                return null;
            } catch ( Exception e ) 
            {
                throw new DAOException( e );
            }
        }
    }
    Et le fichier Environnement.java
    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
     
    package com.entities;
     
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
     
    @Entity
    public class Environnement 
    {
        @Id
        @GeneratedValue( strategy = GenerationType.IDENTITY )
        private int idEnv;
    	private String nomEnv;
     
     
        public int getIdEnv() 
        {
    		return idEnv;
    	}
     
    	public void setIdEnv(int idEnv) 
    	{
    		this.idEnv = idEnv;
    	}
     
    	public String getNomEnv() 
    	{
    		return nomEnv;
    	}
     
    	public void setNomEnv(String nomEnv) 
    	{
    		this.nomEnv = nomEnv;
    	}
    }

    C'est certainement un truc tout bête mais je vois pas. Si sa saute aux yeux de quelqu'un sa serait génial.

    Merci à vous

  2. #2
    Traductrice
    Avatar de Mishulyna
    Femme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Par défaut
    Bonjour,

    J'ignore complètement MySQL mais je dirais que dans la classe DAO ou entity tu devrais avoir une requête "findAll", capable de te ramener une liste d'objets pour y faire des itérations, sorte de
    "SELECT e FROM Environnement e". "SELECT e.idEnv, e.nomEnv FROM Environnement e" ce n'est pas la même chose.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 146
    Par défaut
    Non mais c'est pas vrai c'était juste un problème de requete !! Merci beaucoup.

    Néanmoins pour moi ces 2 requetes doivent fournir le même résultat... je ne comprend pas vraiment pourquoi mon "Select e.idEnv, e.nomEnv from Environnement e" ne fonctionne pas.

  4. #4
    Traductrice
    Avatar de Mishulyna
    Femme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Par défaut
    "Select e.idEnv, e.nomEnv from Environnement e" ramène des int et des String, pas des objets.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 146
    Par défaut
    Ok merci beaucoup pour les explications et l'aide apportée ^^

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. JSF vs Struts
    Par peuh dans le forum JSF
    Réponses: 22
    Dernier message: 06/04/2013, 22h49
  2. Itération dans JSF 2.1 ?
    Par swoop314 dans le forum JSF
    Réponses: 2
    Dernier message: 15/05/2012, 14h42
  3. Comment faire des itérations avec JSF & richFaces?
    Par gettingway dans le forum JSF
    Réponses: 2
    Dernier message: 20/05/2008, 15h03
  4. Itération sur une liste en JSF?
    Par toutoune60 dans le forum JSF
    Réponses: 2
    Dernier message: 26/12/2007, 09h43
  5. itération sous jsf
    Par lieto dans le forum JSF
    Réponses: 11
    Dernier message: 15/03/2007, 13h34

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