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 :

Problème de conversion d'objet dans un selectonmenu


Sujet :

JSF Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 158
    Par défaut Problème de conversion d'objet dans un selectonmenu
    Bonjour tout le monde,
    J'essaye de faire un selectOnMenu avec des objets, mais malheureusement ca marche pas comme je veux. Je pense que c'est un problème de conversion étant donné le message d'erreur, mais j'arrive pas trop à m'en sortir.

    Voici le création d'un élément de ma liste pour le selectOnMenu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    listDepartementSelection.add(new SelectItem(departement,departement.getNomDepartement()));
    l'utilisation dans la page JSP:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <html:selectOneMenu value="#{BeanGestionCode.nouveauCode.departement}">
    	<core:selectItems value="#{BeanGestionCode.listDepartement}"/>
    </html:selectOneMenu>
    Remarque: departement est une classe référencée dans la classe code.

    Et voici le message retourné:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Erreur de conversion quand la valeur 'com.modele.donnees.Departement@3b7fb35b' est commise pour le modéle 'null Converter'
    Si quelqu'un à une idée? Peut être un converter d'objet en string et inversement ou autre? Merci de me donner un petit coup de pouce.

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    il faut ajouter un converter, pour passer de ton objet departement à un string et vice versa..
    pour le converter consulte la
    sinon tu peux passer l'id de ton objet departement dans la valeur.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 158
    Par défaut
    Citation Envoyé par Sniper37 Voir le message
    il faut ajouter un converter, pour passer de ton objet departement à un string et vice versa..
    pour le converter consulte la
    sinon tu peux passer l'id de ton objet departement dans la valeur.
    C'est se que je faisait avant (le passage des id), mais je me dit que si on peut mettre des objet comme identifiant dans un item de selectonmenu c'est pas pour rien. Donc c'est pour ca que j'essaye cette méthode qui me semble plus pratique. Merci du conseil quand même.

    En fait c'est solution devient vite galère, j'utilise les menus déroulants dans un tableau. C'est en grande partie pour cela que j'aimerais que ma référence de liste d'items soit un objet (ici departement).

    J'ai vérifier dans la FAQ et ils ne parle pas de la conversion String To Object qui semble être le problème ici mais que de la conversion Object To String.

    Si tu as une idée pour la conversion String To object? Merci d'avance

  4. #4
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    C'est la même principe:

    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
    public Object getAsObject(FacesContext context, UIComponent uiComponent, String value) throws ConverterException {
     
     
    		if (context == null)
    			throw new NullPointerException("context");
    		if (uiComponent == null)
    			throw new NullPointerException("uiComponent");
     
    		if (value != null) {
     
    				try {
    					// convertir 
                                            // return ;
     
    				} catch (Exception e) {
    					throw new ConverterException();
    				}
     
    			}
    		}
    		return null;
     
    	}

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 158
    Par défaut
    En fait c'est le convertir que je vois pas du tout. Comment convertir une chaine de caractère en objet?

  6. #6
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    ça depend comment tu as converti ton object en chaine,
    on convertir bien une chaine en Boolean, une chaine en Float ou Integer, il faut faire tes règles de parsing.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 158
    Par défaut
    en gros ma chaine de caractère lors de la conversion vaut, com.modele.donnees.Departement@3b7fb35b. Je vois pas trop comment je peux transformer ça en objet de type département?

  8. #8
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    c'est à toi de formater ton départment en chaine..

    Departement
    nom = pyrénées atlantique
    code = 64

    de departement en chaine ça peut donner "64" ..

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 158
    Par défaut
    En fait, je sais pas si je suis très claire. J'ai un menu déroulant, dans lequel je passe une liste d'objet de type Departement, la référence de chacun des items de cette liste correspond au type de la classe concaténé avec ça référence et j'aimerais que lors de la conversion String To Object je récupéré l'objet de ma liste associé pour le mémoriser dans mon objet de Type code. Je sais qu'en c++ avec la référence on peut relier deux objet au même espace mémoire, mais en Java il me semble que c'est pas possible. Dés lors, j'aurais aimé savoir comment attribuer une référence a un objet Java afin qu'il point vers un objet déjà existant. Tout en sachant que je ne dispose que d'une chaine de caractère pour passer les informations.

  10. #10
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    Citation Envoyé par iviath Voir le message
    En fait, je sais pas si je suis très claire. J'ai un menu déroulant, dans lequel je passe une liste d'objet de type Departement, la référence de chacun des items de cette liste correspond au type de la classe concaténé avec ça référence et j'aimerais que lors de la conversion String To Object je récupéré l'objet de ma liste associé pour le mémoriser dans mon objet de Type code. Je sais qu'en c++ avec la référence on peut relier deux objet au même espace mémoire, mais en Java il me semble que c'est pas possible. Dés lors, j'aurais aimé savoir comment attribuer une référence a un objet Java afin qu'il point vers un objet déjà existant. Tout en sachant que je ne dispose que d'une chaine de caractère pour passer les informations.
    on ne ne va pas s'attarder sur la différence entre le java et le C++, mais tu peux faire ce que tu veux..dans la fonction getAsString, tu cast l'objet passé en paramètre en objet Departement.
    et dans getAsObject à toi de voir comment recréer ton objet Departement à partir de la chaine de caractère.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 158
    Par défaut
    C'est bien la le problème. Je ne vois pas du tout comment caster le String en Departement

  12. #12
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    Citation Envoyé par iviath Voir le message
    C'est bien la le problème. Je ne vois pas du tout comment caster le String en Departement
    Il n'y a pas de méthode générique, c'est suivant l'implémentation de objet Department, c'est pour pouvoir retrouver une instance unique à partir d'une chaine.

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 158
    Par défaut
    en fait, j'ai pas du tout d'idée la dessus, je coince totalement, peut être que je peux retrouver la liste des departements dans mon ui compenant? J'ai vu qu'il y a déjà eu le problème et ca a été résolu, mais le poste est trop vieux et je peux pas le lire.

    Ils en parlent ici:
    http://www.developpez.net/forums/d12...selectonemenu/

  14. #14
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    pourquoi tu veux passer l'objet au lieu de l'id du département?

    le selectItem va généer <option value="dd" /> en html,
    je pense que c'est plus simple de passer l'id de ton objet et si tu veux le retrouver ensuite dans ton code java, une simple itération sur la liste te permettra de le retrouver.

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 158
    Par défaut
    c'est plus simple car, c'a m'évite de faire une nouvelle requête sur la table en plus le SelectItem prévoit se cas (cf api), reste a savoir comment récupérer l'objet à l'aide d'un converter. Ça doit être dans le UIComponent je pense je suis entrain de tester.

  16. #16
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    ton objet tu va le récupérer une fois que tu as implementer le converter avec les deux méthodes. getAsString et getAsObject.

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 158
    Par défaut
    lol. Je crois que tu ne comprend pas bien le problème. Je ne vois pas comment implémenter le AsObject pour qu'il me retourne l'objet tant désiré.
    Je suis un peut dépiter, je sais qu'il y a une méthode propre et plus simple mais je pense que finalement je vais passer par les ID, car je vois vraiment pas comment implémenter ce ... de converter, dans le cadre du SelectItem cf plus haut, dommage.

  18. #18
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    ook, regarde un exemple sur le net, si tu as les sources regarde dataTimeConverter.

    exemple simple:
    si département contient nom et code
    la chaine peut etre une concaténation de nom et code avec un séparateur..et pour récupérer l'objet tu parse la chaine et tu récupère ton objet..

  19. #19
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 158
    Par défaut
    Le problème c'est que cette objet en capsule d'autres objets et ainsi de suite donc je peux pas m'en tirer par un simple copier coller des différentes chaines de string. De plus, je crois pas qu'Hibernate va tolérer le fait de modifier un objet qui ne correspond à la référence de l'objet mise en mémoire. J'ai déjà eu le problème dans une autre partie de l'application à se sujet, il ne reconnaissait pas l'objet quand je voulais le modifier.

  20. #20
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    et c'est pour ça que c'est mieux de séparer la partie vue de la partie persitence .

    tu peux utiliser l'id c'est plus simple.

Discussions similaires

  1. problème de conversion de dimension dans BUSINESS OBJECT
    Par greatmaster1971 dans le forum Deski
    Réponses: 4
    Dernier message: 28/04/2014, 13h15
  2. Problème d'affichage d'objets dans un 'Screen'
    Par Euphoria S' dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 31/01/2013, 14h46
  3. Problème de conversion d'objet en tableau
    Par Sergei75 dans le forum Langage
    Réponses: 4
    Dernier message: 30/10/2011, 23h58
  4. Réponses: 0
    Dernier message: 27/03/2008, 00h18
  5. Problème création d'un objet dans une Form
    Par helico2 dans le forum C++/CLI
    Réponses: 7
    Dernier message: 02/01/2008, 16h32

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