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 :

Converter: getAsObject n'est pas appellée


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 34
    Par défaut Converter: getAsObject n'est pas appellée
    Bonjour,

    J'avance dans ma découverte de JSF et je viens de tomber sur le cas suivant:

    J'affiche dans un formulaire un selectManyCheckbox:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <h:selectManyCheckbox value="#{zone.zonesVues}" converter="javax.faces.Zone" >
    	    					<f:selectItems value="#{zoneBean.toutesLesZones}"/>
    	    				</h:selectManyCheckbox>
    qui contient exactement ce qui existe en base (affichage OK).

    Comme vous pouvez le voir, celui-ci est lié à un converter (correctement défini dans le faces-config puisque getAsString est bien appellé).

    Lorsque je valide mon formulaire, j'obtiens l'erreur suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Erreur de conversion quand la valeur '344@RAC@Racines@394@serv2@host2@2@true' est commise pour le modéle '#{zone.zonesVues}' : Exception: {2}.
    De plus, je ne passe jamais dans la fonction qui est lié au submit du formulaire ni dans getAsObject du formulaire...

    Auriez-vous une solution, une idée ou des infos sur le problème ?

  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
    comment, le code converter n'est pas appelé alors que tu as une erreur de conversion..
    tu définis bien le label et value des selectItems?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 34
    Par défaut
    Mon selectItems est remplis comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    List<Zone> lz = RessourceDelegate.getAllZones();
    			this.toutesLesZones = new ArrayList<SelectItem>();
    			for(Zone z : lz){
    				this.toutesLesZones.add(new SelectItem(z,z.getLibelleZone()));
    			}
    Et, lorsque je fait un debug, elle est bien rempli avec les valeurs voulues...

    Par contre, je confirme que je ne passe ni dans le getAsObject ni dans la fonction liée à la validation du formulaire...

  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
    tu es sur que le code du converter n'est pas exécuté quand tu envoi le formulaire?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 34
    Par défaut
    Mon code getAsObject:

    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
    public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) {
    		System.out.println("getAsObject : " + arg2);
    		Zone zone;
    		try {
    			zone = new Zone();
    			String[] params = arg2.split("@");
    			zone.setIdZone(Long.parseLong(params[0]));
    			zone.setAlias(params[1]);
    			zone.setLibelleZone(params[2]);
    			Serveur s = new Serveur();
    			s.setIdServeur(Long.parseLong(params[3]));
    			s.setLibelleServeur(params[4]);
    			s.setHostname(params[5]);
    			s.setPort(Integer.parseInt(params[6]));
    			s.setExisteCT(Boolean.parseBoolean(params[7]));
    			zone.setServeur(s);
    		} catch (Exception e) {
    			 FacesMessage facesMessage = new FacesMessage();
                 facesMessage.setSeverity(FacesMessage.SEVERITY_ERROR);
                 facesMessage.setSummary("Format incorrect");
                 facesMessage.setDetail("Le format reçu ne permet pas de transformer un String en Zone.");
                 throw new ConverterException(facesMessage);
    		}
    		return zone;
    	}
    public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) {
    		System.out.println("getAsString : " + arg2);
    		if(arg2 instanceof String){
    			return (String) arg2;
    		}else{
    			return ((Zone)arg2).toString();
    		}
    	}
    J'ai des points de debug partout et le System.out ne passerait pas innaperçut (je vois bien ceux du getAsString) ;p

    Il me squizze donc cette étape et m'affiche directement le message d'erreur précédant...

  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
    tu n'a pas d'erreur de validation?

    donne quoi ??

    et c'est quoi la trace complète de l'exception?

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

Discussions similaires

  1. converter dans datagrid n'est pas appeler quand valeur nulle
    Par Golzinne dans le forum Silverlight
    Réponses: 1
    Dernier message: 09/11/2011, 00h37
  2. La classe Installer n'est pas appelée
    Par alexandreb dans le forum C#
    Réponses: 5
    Dernier message: 06/07/2007, 15h35
  3. [AJAX] [Firefox] send n'est pas appelée tout le temps
    Par MademoiselleL dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/07/2007, 15h16
  4. [débutant] la methode Validate() n'est pas appellée
    Par maxattack dans le forum Struts 1
    Réponses: 26
    Dernier message: 16/05/2007, 17h06
  5. [servlet][filtre] filtre qui n'est pas appelé
    Par felix79 dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 29/06/2005, 20h09

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