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 :

Erreur java.lang.NumberFormatException: For input string: "null" sur clique menuitem


Sujet :

JSF Java

  1. #1
    Membre actif
    Profil pro
    100
    Inscrit en
    Juillet 2007
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : 100

    Informations forums :
    Inscription : Juillet 2007
    Messages : 585
    Points : 270
    Points
    270
    Par défaut Erreur java.lang.NumberFormatException: For input string: "null" sur clique menuitem
    Bonjour,

    Dans mon appli JSF/PF, j'ai un menu que je construis avec un DefaultMenuModel.
    J'ai notamment le MenuItem "Déconnexion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    /**
             * Construis le sous-menu "Déconnexion"
             */
    	private void buildMenuDeconnexion() {
    		DefaultMenuItem deconnexion = new DefaultMenuItem(getMessage("Deconnexion"), "ui-icon-close");
            deconnexion.setCommand("#{menuView.logout}");
            menuModel.addElement(deconnexion);
    	}
    Qui appelle la méthode logout() :
    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
     
    /**
             * Méthode de déconnexion de l'utilisateur
             */
    	public void logout() {
    		FacesContext context = FacesContext.getCurrentInstance();
    		ExternalContext externalContext = context.getExternalContext();
     
    		try {
    			HttpSession session = ((HttpServletRequest) externalContext
    					.getRequest()).getSession();
    			session.invalidate();
     
    			externalContext.redirect(externalContext.getRequestContextPath() + IUrlLocation.URL_LOGIN);
    		} catch (Exception e) {
    			context.addMessage(null, new FacesMessage(e.getMessage()));
    		}
    	}
    L'URL login :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public static final String URL_LOGIN = "/connexion/login.xhtml";
    Le filtre, référencé par l'erreur :
    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
     
    public class LoginFilter implements Filter {
     
        /**
         * Checks if user is logged in. If not it redirects to the login.xhtml page.
         */
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
            // Get the loginBean from session attribute
            Utilisateur loginBean = (Utilisateur) ((HttpServletRequest) request).getSession().getAttribute("user");
     
            // For the first application request there is no loginBean in the session so user needs to log in
            // For other requests loginBean is present but we need to check if user has logged in successfully
            if (loginBean == null) {
                String contextPath = ((HttpServletRequest) request).getContextPath();
                ((HttpServletResponse) response).sendRedirect(contextPath + IUrlLocation.URL_LOGIN);
            }
     
            chain.doFilter(request, response);
        }
     
        public void init(FilterConfig config) throws ServletException {
            // Nothing to do here!
        }
     
        public void destroy() {
            // Nothing to do here!
        }   
     
    }
    Quand je clique sur "Déconnexion", obtiens l'erreur suivante, alors que si je mets un point d'arrêt dans la méthode lgout(), je ne m'y arrête pas:

    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
     
    public class LoginFilter implements Filter {
     
        /**
         * Checks if user is logged in. If not it redirects to the login.xhtml page.
         */
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
            // Get the loginBean from session attribute
            Utilisateur loginBean = (Utilisateur) ((HttpServletRequest) request).getSession().getAttribute("user");
     
            // For the first application request there is no loginBean in the session so user needs to log in
            // For other requests loginBean is present but we need to check if user has logged in successfully
            if (loginBean == null) {
                String contextPath = ((HttpServletRequest) request).getContextPath();
                ((HttpServletResponse) response).sendRedirect(contextPath + IUrlLocation.URL_LOGIN);
            }
     
            chain.doFilter(request, response);
        }
     
        public void init(FilterConfig config) throws ServletException {
            // Nothing to do here!
        }
     
        public void destroy() {
            // Nothing to do here!
        }   
     
    }
    Qqun a-t-il une idée du problème ?
    Merci d'avance pour votre aide

  2. #2
    Membre habitué Avatar de Arislas
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2015
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 116
    Points : 170
    Points
    170
    Par défaut
    J'ai déjà eu une erreur nommer java.lang.NumberFormatException, ça venait du fait que j'essayait de parse en int un string qui pouvait être vide à certains moment, mais du coup je ne voit pas du tout le rapport avec ton programme.

  3. #3
    Membre habitué Avatar de Arislas
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2015
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 116
    Points : 170
    Points
    170
    Par défaut
    Tu utilise quel logicielle de développement ( eclispe , netBeans , ...) ? Et tu n'as pas une erreur plus du type :


    Code ERROR : 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
     
     
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    	at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
    	at java.lang.Double.parseDouble(Unknown Source)
    	at WindowDebit$4.run(WindowDebit.java:287)
    	at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    	at java.awt.EventQueue.access$200(Unknown Source)
    	at java.awt.EventQueue$3.run(Unknown Source)
    	at java.awt.EventQueue$3.run(Unknown Source)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    	at java.awt.EventQueue.dispatchEvent(Unknown Source)
    	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    	at java.awt.EventDispatchThread.run(Unknown Source)

  4. #4
    Membre actif
    Profil pro
    100
    Inscrit en
    Juillet 2007
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : 100

    Informations forums :
    Inscription : Juillet 2007
    Messages : 585
    Points : 270
    Points
    270
    Par défaut
    J'utilise eclipse, voici la trace complète :
    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
    2015-04-20T16:21:14.623+0200|Grave: java.lang.NumberFormatException: For input string: "null"
    	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    	at java.lang.Integer.parseInt(Integer.java:580)
    	at java.lang.Integer.parseInt(Integer.java:615)
    	at org.primefaces.component.menu.BaseMenuRenderer.findMenuitem(BaseMenuRenderer.java:83)
    	at org.primefaces.component.menu.BaseMenuRenderer.decode(BaseMenuRenderer.java:61)
    	at javax.faces.component.UIComponentBase.decode(UIComponentBase.java:831)
    	at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1225)
    	at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1220)
    	at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1220)
    	at org.primefaces.component.layout.Layout.processDecodes(Layout.java:226)
    	at javax.faces.component.UIForm.processDecodes(UIForm.java:225)
    	at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1220)
    	at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1220)
    	at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:929)
    	at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78)
    	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
    	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
    	at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:344)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
    	at ch.rwb.application.filters.LoginFilter.doFilter(LoginFilter.java:41)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:316)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
    	at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
    	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
    	at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
    	at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:415)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:282)
    	at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459)
    	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167)
    	at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:201)
    	at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:175)
    	at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235)
    	at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
    	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284)
    	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201)
    	at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133)
    	at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112)
    	at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
    	at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:561)
    	at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)
    	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)
    	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56)
    	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)
    	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:565)
    	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:545)
    	at java.lang.Thread.run(Thread.java:745)
    Merci pour ton aide

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2015
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2015
    Messages : 87
    Points : 117
    Points
    117
    Par défaut
    tu dois faire un parse de int en String

  6. #6
    Membre habitué Avatar de Arislas
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2015
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 116
    Points : 170
    Points
    170
    Par défaut
    Tu nous as pas donner le code correspondant à l'erreur, comme l'as dit Monta, tu dois avoir faire un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Interger.ParseInt(String)
    quelque part. Et le string doit pouvoir être "null" à un moment donné , ce qui provoque l'erreur.

    Il nous faudrait le bon code.

  7. #7
    Membre actif
    Profil pro
    100
    Inscrit en
    Juillet 2007
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : 100

    Informations forums :
    Inscription : Juillet 2007
    Messages : 585
    Points : 270
    Points
    270
    Par défaut
    C'est le bon code.

    Le menuItem déclenche la méthode logout() du bean MenuView et l'erreur se produit.
    Je n'ai rien de plus

  8. #8
    Membre habitué Avatar de Arislas
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2015
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 116
    Points : 170
    Points
    170
    Par défaut
    J'ai 2 chose à te dire:


    - Essaie de le mode debug, il te permettra de voir où est exactement l'erreur, si tu ne l'as pas déjà fait.
    - Je te dit que ce n'est pas le bon code, car le code que tu nous a donné ne contient pas de Integer.parseInt(), donc ce n'est surement pas le bon code. Peu être que tu utilise une classe que tu n'as pas développer et qui contient ce bout de code.

    Du coup je ne vois pas bien pourquoi ton programme plante sur un Integer.parseInt() si tu dit que tu n'as pas de code qui en contient. C'est surement un bout de code d'une autre partie de ton programme( une fonction que tu utilise par exemple).

  9. #9
    Membre actif
    Profil pro
    100
    Inscrit en
    Juillet 2007
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : 100

    Informations forums :
    Inscription : Juillet 2007
    Messages : 585
    Points : 270
    Points
    270
    Par défaut
    Hello,

    désolé pour le délai, j'étais absent ces derniers jours.
    En mode debug, pour ce qui est de mon code, la dernière instruction exécutée est l'appel à doFilter dans mon filtre de login :
    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
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
            // Get the loginBean from session attribute
            Employe loginBean = (Employe) ((HttpServletRequest) request).getSession().getAttribute("user");
             
            // For the first application request there is no loginBean in the session so user needs to log in
            // For other requests loginBean is present but we need to check if user has logged in successfully
            if (loginBean == null) {
                String contextPath = ((HttpServletRequest) request).getContextPath();
                String adresseInitiale = ((HttpServletRequest) request).getServletPath();
                
                HttpSession session = ((HttpServletRequest) request).getSession();
                session.setAttribute(ConnexionForm.PARAM_URL_ORIGINALE, adresseInitiale);
                
                ((HttpServletResponse) response).sendRedirect(contextPath + IUrlLocation.URL_LOGIN);
            }
             
            chain.doFilter(request, response);    }
    Ca remonte ensuite dans les classes de l'API et ça bloque dans la classe BaseMenuRenderer, dans cette méthode (car le tableau path contient un seul élément, qui est null):
    A noter que le paramètre id transmis est également null et que elements contient mes 4 menu principaux ....
    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
    protected MenuItem findMenuitem(List<MenuElement> elements, String id) {        
            if(elements == null || elements.isEmpty()) {
                return null;
            }
            else {
                String[] paths = id.split(SEPARATOR);
                
                if(paths.length == 0)
                    return null;
                
                int childIndex = Integer.parseInt(paths[0]);           
               if(childIndex >= elements.size()) 
                    return null;
                
                MenuElement childElement = elements.get(childIndex);
    
                if(paths.length == 1) {
                    return (MenuItem) childElement;
                }
                else {
                    String relativeIndex = id.substring(id.indexOf(SEPARATOR) + 1);
    
                    return findMenuitem(((MenuGroup) childElement).getElements(), relativeIndex);
                }
            }
        }
    Le code de création du menu déconnexion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    private void buildMenuDeconnexion() {
    	DefaultMenuItem deconnexion = new DefaultMenuItem(getMessage("Deconnexion"), "ui-icon-close");
            deconnexion.setCommand("#{menuView.logout}");
            menuModel.addElement(deconnexion);
    }
    Il y-aurait-il un problème d'identification des menus ou quelques chose comme ça ?
    Là je sèche

  10. #10
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    Salut,

    dans ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      int childIndex = Integer.parseInt(paths[0]);
    L´erreur te dis que paths[0] est egal a null.
    si tu veux verifier, il suffit de faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(paths[0] == null ) 
      return null;
    eric

  11. #11
    Membre actif
    Profil pro
    100
    Inscrit en
    Juillet 2007
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : 100

    Informations forums :
    Inscription : Juillet 2007
    Messages : 585
    Points : 270
    Points
    270
    Par défaut
    Oui merci mais le problème est que ce bout de code fait partie d'une classe de l'API et je ne peux donc pas la modifier.
    Il doit y avoir un problème dans mon propre code mais je ne vois pas ou ....

  12. #12
    Membre habitué Avatar de Arislas
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2015
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 116
    Points : 170
    Points
    170
    Par défaut
    La classe MenuItem est dans l'API ?

  13. #13
    Membre actif
    Profil pro
    100
    Inscrit en
    Juillet 2007
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : 100

    Informations forums :
    Inscription : Juillet 2007
    Messages : 585
    Points : 270
    Points
    270
    Par défaut
    C'est la classe BaseMenuRenderer qui génère l'erreur, elle est pas dans l'API mais se trouve dans le jar de PrimeFaces...

  14. #14
    Membre habitué Avatar de Arislas
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2015
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 116
    Points : 170
    Points
    170
    Par défaut
    Ok , mais la réponse que t'as donné Jeffray03 portait sur la methode findMenuItem();

    De plus l'erreur que tu nous as donner :

    2015-04-20T16:21:14.623+0200|Grave: java.lang.NumberFormatException: For input string: "null" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:580)
    at java.lang.Integer.parseInt(Integer.java:615)
    at org.primefaces.component.menu.BaseMenuRenderer.findMenuitem(BaseMenuRenderer.java:83)
    at org.primefaces.component.menu.BaseMenuRenderer.decode(BaseMenuRenderer.java:61)
    at javax.faces.component.UIComponentBase.decode(UIComponentBase.java:831)
    at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1225)
    at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1220)
    at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1220)
    at org.primefaces.component.layout.Layout.processDecodes(Layout.java:226)
    at javax.faces.component.UIForm.processDecodes(UIForm.java:225)
    at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1220)
    at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1220)
    at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:929)
    at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:344)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
    at ch.rwb.application.filters.LoginFilter.doFilter(LoginFilter.java:41)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:316)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
    at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:415)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:282)
    at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167)
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:201)
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:175)
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235)
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112)
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:561)
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:565)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:545) at java.lang.Thread.run(Thread.java:745)
    Elle ne porte pas sur la classe BaseMenuRenderer mais sur la méthode findMenuItem() comme l'indique la première ligne qui fait référence à ceux que tu as programmé :

    at org.primefaces.component.menu.BaseMenuRenderer.findMenuitem(BaseMenuRenderer.java:83)


    Fait les changements donnés par jeffray et tu devrait ça devrait résoudre cette erreur.

  15. #15
    Membre actif
    Profil pro
    100
    Inscrit en
    Juillet 2007
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : 100

    Informations forums :
    Inscription : Juillet 2007
    Messages : 585
    Points : 270
    Points
    270
    Par défaut
    oui mais la méthode findMenuItem() fait partie de la classe BaseMenuRenderer du jar PrimeFaces ....ce n'est pas ma méthode, je ne peux donc pas la modifier, non?

  16. #16
    Membre habitué Avatar de Arislas
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2015
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 116
    Points : 170
    Points
    170
    Par défaut
    Ha, du coup il faut que tu te débrouille pour nettoyer ton tableau paths[] , de toutes valeurs null.

    Mais je pense qu'il est possible de modifier la classe dans l'API mais je en sais pas comment le faire.

  17. #17
    Membre actif
    Profil pro
    100
    Inscrit en
    Juillet 2007
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : 100

    Informations forums :
    Inscription : Juillet 2007
    Messages : 585
    Points : 270
    Points
    270
    Par défaut
    Oui il faut que je trouve pourquoi le tableau a des valeurs null.

    Je pourrais éventuellement modifier la classe BaseMenuRenderer et générer un nouveau jar (si c'est possible) mais ça reviendrais juste à cacher un autre problème qui lui est dans mon code et fait que le foutu tableau a des valeurs null.
    De plus je pense (et suit même sûr) que le problème vient de mon code plutôt que de celui de la librairie PrimeFaces

    Bref, je suis toujours à la recherche d'une solution

  18. #18
    Membre habitué Avatar de Arislas
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2015
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 116
    Points : 170
    Points
    170
    Par défaut
    Quelle est la partie de ton programme qui créer le String "id" qui est mit en paramètre de la fonction findMenuItem, et quel est le SEPARATOR ?

    Je te demande ça vu que le tableau de String 'paths[]' est construit grâce à ces deux éléments, je pense donc qu'il doit y avoir des problème dans la String que tu met en paramètre.

  19. #19
    Membre actif
    Profil pro
    100
    Inscrit en
    Juillet 2007
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : 100

    Informations forums :
    Inscription : Juillet 2007
    Messages : 585
    Points : 270
    Points
    270
    Par défaut
    Je sais pas vraiment
    Voici comment je créé le menuItem :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    /**
     * Construis le sous-menu "Déconnexion"
     */
    private void buildMenuDeconnexion() {
    	DefaultMenuItem deconnexion = new DefaultMenuItem(getMessage("Deconnexion"), "ui-icon-close");
    //	deconnexion.setOutcome(IUrlLocation.URL_ACCUEIL);
            deconnexion.setCommand("#{menuView.logout}");
            menuModel.addElement(deconnexion);
    }
    C'est la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    deconnexion.setCommand("#{menuView.logout}");
    C'est le dernier bout de mon code qui est exécuté.
    Si j'inverse la mise en commentaire et fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    deconnexion.setOutcome(IUrlLocation.URL_ACCUEIL);
    à la place de setCommmand .... ça fonctionne, la redirection se fait bien sur la page d'accueil

  20. #20
    Membre habitué Avatar de Arislas
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2015
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 116
    Points : 170
    Points
    170
    Par défaut
    Il y a quelque chose qui ne va pas, dans tous le code que tu nous as donner tu n'utilise jamais findMenuItem, il ne devrait donc pas y avoir d'erreur.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. java.lang.NumberFormatException: For input string: ""
    Par momjunior dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 24/04/2019, 00h50
  2. Réponses: 2
    Dernier message: 21/06/2013, 12h33
  3. Réponses: 0
    Dernier message: 06/05/2010, 10h43
  4. Réponses: 5
    Dernier message: 20/11/2009, 13h18
  5. Réponses: 1
    Dernier message: 15/01/2009, 11h22

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