1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    mars 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 25
    Localisation : Arabie Saoudite

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mars 2015
    Messages : 2
    Points : 3
    Points
    3

    Par défaut Probléme avec le converter d'un <h:selectOneMenu>

    salut à vous tous,
    Vraiment en besoin d'aide je souffre avec une erreur depuis 2 jours. je suis en train de développer ma premiére application JEE avec JSF2.2 Hibernate 5.2.9 Spring3
    je veux remplir dynamiquement un selectOneMenu à partir d'une base de données.
    dans ma page JSF addUtilisateur.xhtml
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
                                  <tr>
    				<td><h:outputLabel for="groupe" value="Groupe : "  effect="fade" /></td> 
    					<td><h:selectOneMenu  value="#{utilisateurMB.groupe}" id="groupe" converter="com.it4all.giep.core.controller.GroupeConverter">
    					    <f:selectItem itemLabel="" itemValue=""></f:selectItem>
    					    <f:selectItems value="#{groupeMB.groupeList}" var="groupe" itemLabel="#{groupe.libelle}" itemValue="#{groupe}"
                                                 </f:selectItems>
    						<p:ajax event="blur" update="groupeMsg" />
    					         <p:message id="groupeMsg" for="groupe" display="icon" />
    					</h:selectOneMenu></td>
    			     </tr>

    la classe du converter GroupeConverter

    Code ava : 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
    @FacesConverter("com.it4all.giep.core.controller.GroupeConverter")
    public class GroupeConverter implements Converter {
        @Resource
        private IGroupeService groupeService;
    	@Override
    	public Object getAsObject(FacesContext context, UIComponent component,String value) {
    		 String str[] = value.split(",", 2);
     
    		    if (value != null && !value.trim().isEmpty()){
    		         // Instanciation du model
    		        Groupes groupe = new Groupes();
    		       // System.out.println(str[1]);
    		        System.out.println(value);
    		       // Va chercher l'objet en base qui correspond à cet id
     
    		      groupe = groupeService.getGroupeById( Integer.parseInt(str[0]));
     
     
    		        return groupe;
    		    }
    		    else {
    		        FacesMessage message = new FacesMessage("Veuillez sélectionner un groupe");
    		        message.setSeverity(FacesMessage.SEVERITY_ERROR);
    		        return null;
    		    }
    	}
     
    	@Override
    	public String getAsString(FacesContext context, UIComponent component,
                Object value) {
    		return value.toString();
        }
    }

    méthode equals je l'ai générée automatiquement dans la classe Groupes

    Code java : 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
     
    	@Override
    	public boolean equals(Object obj) {
    		if (this == obj)
    			return true;
    		if (obj == null)
    			return false;
    		if (getClass() != obj.getClass())
    			return false;
    		Groupes other = (Groupes) obj;
    		if (idgroupe != other.idgroupe)
    			return false;
    		if (libelle == null) {
    			if (other.libelle != null)
    				return false;
    		} else if (!libelle.equals(other.libelle))
    			return false;
    		return true;
    	}
    }

    la groupeList dans le GroupeManagedbean

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public List<Groupes> getGroupeList() {
     
    		groupeList = new ArrayList<Groupes>();
    		groupeList.addAll(getGroupeService().findAll());
    		return groupeList;
    	}
     
    }

    quant j'execute je récupére ma liste de la base de données mais quand je choisit un Groupe de la liste déroulante JSF utilise leGroupeConverter avec getAsObject il me renvoie mon message on console avec la valeure "1,admin" puis j'ai cette érreur NullPointerException
    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
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
     
    Hibernate: select groupes0_.IDGROUPE as IDGROUPE1_9_, groupes0_.DESCRIPTION as DESCRIPT2_9_, groupes0_.LIBELLE as LIBELLE3_9_ from groupes groupes0_
    1,admin
    avr. 17, 2017 9:42:31 PM com.sun.faces.context.PartialViewContextImpl processPartial
    INFOS: java.lang.NullPointerException
    java.lang.NullPointerException
    	at com.it4all.giep.core.controller.GroupeConverter.getAsObject(GroupeConverter.java:33)
    	at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(Unknown Source)
    	at com.sun.faces.renderkit.html_basic.MenuRenderer.convertSelectOneValue(Unknown Source)
    	at com.sun.faces.renderkit.html_basic.MenuRenderer.getConvertedValue(Unknown Source)
    	at javax.faces.component.UIInput.getConvertedValue(Unknown Source)
    	at javax.faces.component.UIInput.validate(Unknown Source)
    	at javax.faces.component.UIInput.executeValidate(Unknown Source)
    	at javax.faces.component.UIInput.processValidators(Unknown Source)
    	at com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback.visit(Unknown Source)
    	at com.sun.faces.component.visit.PartialVisitContext.invokeVisitCallback(Unknown Source)
    	at javax.faces.component.UIComponent.visitTree(Unknown Source)
    	at javax.faces.component.UIComponent.visitTree(Unknown Source)
    	at javax.faces.component.UIForm.visitTree(Unknown Source)
    	at javax.faces.component.UIComponent.visitTree(Unknown Source)
    	at javax.faces.component.UIComponent.visitTree(Unknown Source)
    	at com.sun.faces.context.PartialViewContextImpl.processComponents(Unknown Source)
    	at com.sun.faces.context.PartialViewContextImpl.processPartial(Unknown Source)
    	at org.primefaces.context.PrimePartialViewContext.processPartial(PrimePartialViewContext.java:60)
    	at javax.faces.component.UIViewRoot.processValidators(Unknown Source)
    	at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(Unknown Source)
    	at com.sun.faces.lifecycle.Phase.doPhase(Unknown Source)
    	at com.sun.faces.lifecycle.LifecycleImpl.execute(Unknown Source)
    	at javax.faces.webapp.FacesServlet.service(Unknown Source)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:442)
    	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1083)
    	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:640)
    	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    	at java.lang.Thread.run(Thread.java:745)
     
    avr. 17, 2017 9:42:31 PM com.sun.faces.lifecycle.ProcessValidationsPhase execute
    AVERTISSEMENT: java.lang.NullPointerException
    javax.faces.FacesException: java.lang.NullPointerException
    	at com.sun.faces.context.PartialViewContextImpl.processPartial(Unknown Source)
    	at org.primefaces.context.PrimePartialViewContext.processPartial(PrimePartialViewContext.java:60)
    	at javax.faces.component.UIViewRoot.processValidators(Unknown Source)
    	at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(Unknown Source)
    	at com.sun.faces.lifecycle.Phase.doPhase(Unknown Source)
    	at com.sun.faces.lifecycle.LifecycleImpl.execute(Unknown Source)
    	at javax.faces.webapp.FacesServlet.service(Unknown Source)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:442)
    	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1083)
    	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:640)
    	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    	at java.lang.Thread.run(Thread.java:745)
    Caused by: java.lang.NullPointerException
    	at com.it4all.giep.core.controller.GroupeConverter.getAsObject(GroupeConverter.java:33)
    	at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(Unknown Source)
    	at com.sun.faces.renderkit.html_basic.MenuRenderer.convertSelectOneValue(Unknown Source)
    	at com.sun.faces.renderkit.html_basic.MenuRenderer.getConvertedValue(Unknown Source)
    	at javax.faces.component.UIInput.getConvertedValue(Unknown Source)
    	at javax.faces.component.UIInput.validate(Unknown Source)
    	at javax.faces.component.UIInput.executeValidate(Unknown Source)
    	at javax.faces.component.UIInput.processValidators(Unknown Source)
    	at com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback.visit(Unknown Source)
    	at com.sun.faces.component.visit.PartialVisitContext.invokeVisitCallback(Unknown Source)
    	at javax.faces.component.UIComponent.visitTree(Unknown Source)
    	at javax.faces.component.UIComponent.visitTree(Unknown Source)
    	at javax.faces.component.UIForm.visitTree(Unknown Source)
    	at javax.faces.component.UIComponent.visitTree(Unknown Source)
    	at javax.faces.component.UIComponent.visitTree(Unknown Source)
    	at com.sun.faces.context.PartialViewContextImpl.processComponents(Unknown Source)
    	... 27 more
     
    avr. 17, 2017 9:42:31 PM com.sun.faces.context.AjaxExceptionHandlerImpl handlePartialResponseError
    GRAVE: java.lang.NullPointerException
    	at com.it4all.giep.core.controller.GroupeConverter.getAsObject(GroupeConverter.java:33)
    	at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(Unknown Source)
    	at com.sun.faces.renderkit.html_basic.MenuRenderer.convertSelectOneValue(Unknown Source)
    	at com.sun.faces.renderkit.html_basic.MenuRenderer.getConvertedValue(Unknown Source)
    	at javax.faces.component.UIInput.getConvertedValue(Unknown Source)
    	at javax.faces.component.UIInput.validate(Unknown Source)
    	at javax.faces.component.UIInput.executeValidate(Unknown Source)
    	at javax.faces.component.UIInput.processValidators(Unknown Source)
    	at com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback.visit(Unknown Source)
    	at com.sun.faces.component.visit.PartialVisitContext.invokeVisitCallback(Unknown Source)
    	at javax.faces.component.UIComponent.visitTree(Unknown Source)
    	at javax.faces.component.UIComponent.visitTree(Unknown Source)
    	at javax.faces.component.UIForm.visitTree(Unknown Source)
    	at javax.faces.component.UIComponent.visitTree(Unknown Source)
    	at javax.faces.component.UIComponent.visitTree(Unknown Source)
    	at com.sun.faces.context.PartialViewContextImpl.processComponents(Unknown Source)
    	at com.sun.faces.context.PartialViewContextImpl.processPartial(Unknown Source)
    	at org.primefaces.context.PrimePartialViewContext.processPartial(PrimePartialViewContext.java:60)
    	at javax.faces.component.UIViewRoot.processValidators(Unknown Source)
    	at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(Unknown Source)
    	at com.sun.faces.lifecycle.Phase.doPhase(Unknown Source)
    	at com.sun.faces.lifecycle.LifecycleImpl.execute(Unknown Source)
    	at javax.faces.webapp.FacesServlet.service(Unknown Source)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:442)
    	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1083)
    	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:640)
    	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    	at java.lang.Thread.run(Thread.java:745)
    J'attends votre aide.

  2. #2
    Membre confirmé Avatar de Cincinnatus
    Homme Profil pro
    Développeur Java
    Inscrit en
    mars 2007
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : mars 2007
    Messages : 175
    Points : 476
    Points
    476

    Par défaut

    Bonjour,

    Dans le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public Object getAsObject(FacesContext context, UIComponent component,String value) {
             String str[] = value.split(",", 2);
     
                if (value != null && !value.trim().isEmpty()){
                     // Instanciation du model
                    Groupes groupe = new Groupes();
                   // System.out.println(str[1]);
                    System.out.println(value);
                   // Va chercher l'objet en base qui correspond à cet id
              groupe = groupeService.getGroupeById( Integer.parseInt(str[0]));
    tu testes si value est null après le value.split(...). Premier point à corriger.

    Ensuite, le str[0] peut être vérifié, ou directement avec le parseInt (qui peut renvoyer null).

    Si le groupeId est bon, alors le problème se pose ailleurs. Mais il faut d'abord en être sûr.

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    mars 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 25
    Localisation : Arabie Saoudite

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mars 2015
    Messages : 2
    Points : 3
    Points
    3

    Par défaut Probléme résolu

    Cincinnatus, Merci pour votre aide.
    En fait le split[0] prend la bonne valeure, ce qui est nul c'est le retour de la méthode getUtilisateurService() et c'est du à:
    -Avec le @FacesConverter on ne peut pas injecter des ressources la solution c'est de créer un managedbean qui implémente l'interface Converter

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

Discussions similaires

  1. Problème avec la commande CONVERT
    Par GDMINFO dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 05/03/2008, 17h37
  2. Réponses: 1
    Dernier message: 14/11/2007, 14h53
  3. Problème avec convert datetime
    Par sane79 dans le forum MS SQL-Server
    Réponses: 3
    Dernier message: 02/07/2007, 10h43
  4. Probléme avec org.apache.axis.utils.JavaUtils.convert
    Par adil_aeh dans le forum Web Services
    Réponses: 1
    Dernier message: 22/06/2007, 15h57
  5. Problème avec un Convert
    Par elfye dans le forum Langage SQL
    Réponses: 1
    Dernier message: 28/02/2007, 13h42

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