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

Struts 1 Java Discussion :

Comportement bizarre d'un layout:select


Sujet :

Struts 1 Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    80
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Sénégal

    Informations forums :
    Inscription : Mars 2003
    Messages : 80
    Points : 46
    Points
    46
    Par défaut Comportement bizarre d'un layout:select
    Bonsoir,
    Soit le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <layout:select key="candidat.TXT_NATIONALITE" property="TXT_nationalite_OB" isRequired="true">
    <layout:options collection="listePays" property="value" labelProperty="label" />
    </layout:select>
    La liste listePays est alimentée comme suit :
    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
     
    Vector fillPays() {
       TraitCandidat trait = new TraitCandidat();
       Object[] tab;
       Vector vect = new Vector();
       // Requete SELECT * FROM PAYS
       List listechamp = trait.selectPays();
     
       vect.add(new sn.com.bit.utils.LabelValue("", ""));
       for (int i = 0; i < listechamp.size(); i++) {
          tab = (Object[]) listechamp.get(i);
          System.out.println("CandidatForm.fillPays( )  tt " +tab[0].toString() );
          vect.add(new sn.com.bit.utils.LabelValue((tab[1].toString()),tab[0].toString()));
       }
       return vect;
    }
    Dans ma base j'ai les données suivantes de la table PAYS (code, libelle):
    SN Sénégal
    FR France
    ES Espagne
    Quand j'affiche le system.out qui est dans ma boucle FOR, je n'obtiens que la première lettre du code pays (tab[0] représentant la colonne code de ma table et tab[1], la colonne libelle).
    Donc en affichant la source de ma page web, j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <select name="TXT_nationalite_OB" onchange="checkValue(this, 'TXT_nationalite_OB','TEXT',true);">
       <option value=""></option>
       <option value="E">Espagne</option>
       <option value="F">France</option>
       <option value="S">Sénégal</option>
    </select>
    Qu'est ce qui pourrait expliquer cela? On dirait que j'ai une coupure d'un caractère pourtant je n'ai pas ce problème lorsque le champ code est de type integer auto incrément dans ma base. En effet, des tables (de format : code-libelle) de plus de 40 enregistrements avec des codes égaux à : 10,11,12... n'ont pas se problème.
    6ril 4 ever

  2. #2
    Expert éminent

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Points : 7 778
    Points
    7 778
    Par défaut
    Si lors du println, le code pays est déjà tronqué, ce n'est pas le layout:select qui est en cause mais plutôt la méthode qui te permet de récupérer la liste des pays.

    D'ailleurs, si tu utilises Hibernate, tu dois pouvoir récupérer directement une liste d'objet Pays plutôt qu'une liste d'Object[].

    Peux-tu montrer le code de la méthode selectPays() ?
    Modératrice Java - Struts, Servlets/JSP, ...

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    80
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Sénégal

    Informations forums :
    Inscription : Mars 2003
    Messages : 80
    Points : 46
    Points
    46
    Par défaut
    Salut,
    Voici le code de la méthode selectPays()
    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
     
    public List selectPays() throws HibernateException {
    	Session session = (Session) HibernateUtil.currentSession();
    	Transaction tx = null;
     
    	List SC = null;
    	try {
    		tx = session.beginTransaction();
    		SC = session.createSQLQuery("select codepays, libellepays from bdemp.pays").list();
     
    		tx.commit();
    	} catch (HibernateException e) {
    		if (tx != null)
    			tx.rollback();
    		throw e;
    	} finally {
    		session.close();
    	}
    	return SC;
    }
    6ril 4 ever

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Je suppose que tu as un objet Pays pour le mapping Hibernate de ta table pays.
    Dans ton cas, tu fais une requête SQL native (createSQLQuery), tu devrais passer par createQuery, dans ce cas, tu récupéreras une liste d'objet Pays
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    return session.createQuery("from Pays").list();
    Du coup, le paramétrage de <layout:select> change un peu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <layout:optionsCollection property="listePays" label="libellepays" value="codepays"/>
    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    80
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Sénégal

    Informations forums :
    Inscription : Mars 2003
    Messages : 80
    Points : 46
    Points
    46
    Par défaut
    OButterlin,
    Merci pour le code, ça fonctionne. Cependant je n'arrive toujours pas à m'expliquer ce problème là; m'enfin du moment que j'ai la solution, pourquoi se plaindre!!
    6ril 4 ever

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

Discussions similaires

  1. Comportement bizarre de l'affichage avant un select
    Par maximus15 dans le forum Réseau
    Réponses: 2
    Dernier message: 31/03/2010, 04h06
  2. Réponses: 3
    Dernier message: 23/06/2008, 15h08
  3. comportement bizarre d"un SELECT
    Par jam92400 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 15/02/2007, 15h20
  4. select au comportement bizarre
    Par juin29 dans le forum Oracle
    Réponses: 5
    Dernier message: 18/05/2006, 19h24
  5. [Sybase] Comportement bizarre d'une table
    Par sdozias dans le forum Sybase
    Réponses: 4
    Dernier message: 03/02/2004, 10h39

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