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 sur clic lien "java.io.FileNotFoundException"


Sujet :

JSF Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2004
    Messages : 36
    Points : 19
    Points
    19
    Par défaut Erreur sur clic lien "java.io.FileNotFoundException"
    Bonjour,

    je développe une application en JSF (c'est une première pour moi) sous Netbeans, avec primefaces.
    J'utilise d’ailleurs le menu fournis dans le labo. Voici un exrait de ce dernier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <p:submenu label="Administrateur">   
      <p:menuitem value="Fonctions" url="/faces/resources/module/fonction/FonctionList.xhtml"/>   
    </p:submenu>
    Lorsque je clique sur le lien en question, l'appli me retourne cette erreur :

    java.io.FileNotFoundException
    at org.apache.naming.resources.DirContextURLConnection.getInputStream(DirContextURLConnection.java:400)
    at com.sun.faces.facelets.impl.DefaultFaceletCache._getLastModified(DefaultFaceletCache.java:172)
    J'ai l'impression qu'il ne mappe pas correctement ma page ?

    Si quelqu'un pourvait m'aiguiller ?

    Merci d'avance

  2. #2
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Novembre 2008
    Messages : 162
    Points : 255
    Points
    255
    Par défaut
    Bonjour acoue,

    As-tu, via la console ou le mode debug, une trace de l'url final générée ?

    Si oui correspond-elle à ton chemin voulu ?
    La forme même des pyramides prouve que l'être humain tend à en faire de moins en moins.

  3. #3
    Membre chevronné
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Points : 2 112
    Points
    2 112
    Par défaut
    Ce qui est passé par l'attribut "url" d'un p:menuitem, c'est une adresse complete. En gros ça se retrouvera sans aucune transformation dans un <a href=""> tel quel.

    Ce n'est pas URL qu'il faut que tu utilises ou alors il faudra donner le chemin complet de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <p:menuitem value="Fonctions" url="#{request.contextPath}/faces/resources/module/fonction/FonctionList.xhtml" />
    le mieux étant de rester dans le monde JSF pur avec ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <p:menuitem value="Fonctions" action="/resources/module/fonction/FonctionList.xhtml" />
    Moins on code, moins il y a de bug ... et vice-versa ainsi qu'inversement ...

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2004
    Messages : 36
    Points : 19
    Points
    19
    Par défaut
    Merci de vos réponses.
    fxrobin, voici ce que me renvoie l'appli quand je clique sur le lien du menu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Impossible de trouver un cas de navigation correspondant depuis l’ID de vue «/index.xhtml» pour l’action «/resources/module/fonction/FonctionList.xhtml» avec le résultat «/resources/module/fonction/FonctionList.xhtml».
    Merci de ton aide.
    Anthony

  5. #5
    Membre chevronné
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Points : 2 112
    Points
    2 112
    Par défaut
    Bon et bien tente avec la première version (en conservant URL mais en ajoutant ${request.contextPath})

    juste une question, ta page est bien dans "/resources/module/fonction/FonctionList.xhtml" ?
    Moins on code, moins il y a de bug ... et vice-versa ainsi qu'inversement ...

  6. #6
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2004
    Messages : 36
    Points : 19
    Points
    19
    Par défaut
    En effet, il y avait une faute dans l'URL désolé.
    Mais désormais lorsque je clique sur le menu il ne se passe plus rien.
    Dans la barre d'état j'ai http://localhost:8080/appli-war/# mais le clic ne déclenche rien.

    Merci

  7. #7
    Membre chevronné
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Points : 2 112
    Points
    2 112
    Par défaut
    Montre tout ton code actuel s'il te plait ...
    Moins on code, moins il y a de bug ... et vice-versa ainsi qu'inversement ...

  8. #8
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2004
    Messages : 36
    Points : 19
    Points
    19
    Par défaut
    Merci de ta réponse. Pour information j'utilise une template pour la mise en page.

    J'ai créer une page pour le second lien "Poste", pointant sur une page vierge sans appel à la template => le lien fonctionne

    Voici mon code

    Template.xhtml
    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
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"
          xmlns:ui="http://java.sun.com/jsf/facelets"
          xmlns:h="http://java.sun.com/jsf/html">
     
        <h:head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
            <link href="#{facesContext.externalContext.requestContextPath}/resources/css/default.css" rel="styleSheet" type="text/css"/>    
            <link href="#{facesContext.externalContext.requestContextPath}/resources/css/cssLayout.css" rel="styleSheet" type="text/css"/>    
            <title>Atlantis</title>
        </h:head>
     
        <h:body>
            <div id="global">
                <div id="entete">
                    <ui:define name="entete" />
                </div>
                <div id="navigation">
                    <ui:include src="navigation.xhtml" id="navigation" />
                </div>
                <div id="contenu">
                     <ui:insert name="contenu">Content</ui:insert>
                </div>
                <div id="pied">
                    <ui:include src="pied.xhtml" id="pied" />
                </div>
            </div>
        </h:body>
    </html>
    navigation.xhtml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <ui:composition xmlns:h="http://java.sun.com/jsf/html"
          xmlns:p="http://primefaces.org/ui"
     
          xmlns:ui="http://java.sun.com/jsf/facelets">    
        <h:form>
            <p:menubar>  
            <p:submenu label="Administrateur">   
                <p:menuitem value="Poste" action="/resources/module/poste/PosteList.xhtml"/>   
                <p:menuitem value="Fonctions" action="/resources/module/fonction/FonctionList.xhtml"/>   
            </p:submenu>            
        </p:menubar>  
        </h:form>
    </ui:composition>
    Ma page index.xhtml (non fonctionnelle) :

    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
    <!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <ui:composition 
        template="./resources/template/template.xhtml" 
        xmlns="http://www.w3.org/1999/xhtml"
        xmlns:ui="http://java.sun.com/jsf/facelets"        
        xmlns:f="http://java.sun.com/jsf/core"    
        xmlns:h="http://java.sun.com/jsf/html"
        xmlns:p="http://primefaces.org/ui"
        >
    <ui:define name="contenu">
        <p:messages id="messages" autoUpdate="true"/> 
        <p>Bienvenue sur l'application Atlantis, pour y accéder merci de vous identifier</p>
        <h:form id="form">
            <p:panel header="Formulaire d'identification" >   
                <h:panelGrid columns="2" id="formGrid">                     
                    <h:outputLabel for="username" value="Nom d'utilisateur :" />  
                    <p:inputText id="username" required="true" 
                                 requiredMessage="Nom d'utilisateur obligatoire" value=""/>  
                    <h:outputLabel for="password" value="Mot de passe :" />  
                    <p:password id="password" required="true" 
                                requiredMessage="Mot de passe obligatoire" value="" />  
                </h:panelGrid>   
                <p:commandButton id="validateButton" update="formGrid" value="Se connecter" />  
            </p:panel>
         </h:form>
     
    </ui:define>
    </ui:composition>

  9. #9
    Membre chevronné
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Points : 2 112
    Points
    2 112
    Par défaut
    et le fichier "/resources/module/fonction/FonctionList.xhtml" existe bien ?
    tu es bien en JSF 2 ?

    sinon il te faudra rajouter une navigation-rule ... dans ton faces-config
    depuis "*" vers ta page pour une action "FonctionList" par exemple ...

    tu as essayé avec url="#{request.contextPath}/faces/...... etc" ?
    Quel lien est affiché dans le navigateur ?
    Moins on code, moins il y a de bug ... et vice-versa ainsi qu'inversement ...

  10. #10
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2004
    Messages : 36
    Points : 19
    Points
    19
    Par défaut
    Oui le fichier existe bien j'ai vérifié l'orthographe du chemin

    Voici ce qui est affiché dans la navigateur :
    http://localhost:8080/Atlantis-war/A...tionList.xhtml

    l'attribut Atlantis-war/ est doublé.
    Lorsque je le retire et que je valide l'adresse je retrouve l'erreur du début.

    Je vais essayer la navigation-rule

  11. #11
    Membre chevronné
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Points : 2 112
    Points
    2 112
    Par défaut
    ah oui tiens, j'ai trouvé "on" a oublié un slash au début :

    url="/#{request.contextPath}/faces/ ...."
    Moins on code, moins il y a de bug ... et vice-versa ainsi qu'inversement ...

  12. #12
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2004
    Messages : 36
    Points : 19
    Points
    19
    Par défaut
    Merci pour le on mais un tu aurais suffit

    Pas mieux l'Url renvoyée : http://localhost:8080/Atlantis-war//...tionList.xhtml

    en testant avec
    url="../#{request.contextPath}/faces/ ...."
    J'obtient l'URL suivante : http://localhost:8080//Atlantis-war/...tionList.xhtml

    Mais avec les erreurs du début java.io.FileNotFoundException

    J'ai testée d'ajouter un faces-config.xml (car je n'en avais pas) avec la rule indiquée. Bilan : perte des css je pense, j'avais simplement le texte d'accueil et plus de formulaire.

  13. #13
    Membre chevronné
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Points : 2 112
    Points
    2 112
    Par défaut
    C'est le boxon

    tu veux pas m'envoyer ta WebApp que je regarde.
    Je t'envoi mon mail par MP.
    Moins on code, moins il y a de bug ... et vice-versa ainsi qu'inversement ...

  14. #14
    Membre chevronné
    Avatar de fxrobin
    Homme Profil pro
    Architecte SI, Java Fan, API Manager
    Inscrit en
    Novembre 2007
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte SI, Java Fan, API Manager
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 875
    Points : 2 112
    Points
    2 112
    Par défaut
    Des nouvelles du front ()

    bonne nouvelle, j'ai trouvé :-) et ça marche

    Alors déjà

    1 - dans ton fichier FonctionList.xhtml qui est dans /resources/module/fonction, tu ne pointes pas correctement vers le template. C'était d'ailleurs ça ton message FileNotFound : c'est Facelets qui ne trouvait le template, et non pas JSF qui ne trouvait ta page.

    Donc pour le corriger, il faut mettre "/resources/template/template.xhtml " et pas "./resources/template/template.xhtml".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <ui:composition template="/resources/template/template.xhtml"  ..... >


    2 - dans ton fichier ne navigation faces-config.xml, voici ce qu'il faut déclarer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <navigation-rule>
    	<display-name>FonctionList</display-name>
    	<from-view-id>*</from-view-id>
    	<navigation-case>		
    		<from-outcome>FonctionList</from-outcome>
    		<to-view-id>/resources/module/fonction/FonctionList.xhtml</to-view-id>  
                    <redirect />                
    	</navigation-case>
    </navigation-rule>
    --> à voir si la clause "redirect" t'est utile, perso je la mets toujours quand il s'agit d'un menu.

    3 - dans ton menu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <p:submenu label="Administrateur">   
                <p:menuitem value="Poste" action="PosteList"/>   
                <p:menuitem value="Fonctions" action="FonctionList" />   
    </p:submenu>
    Tu noteras que le "action" du menu, fait référence à l'outcome de la navigation rule.

    Tu ne devrais pas mettre tes templates dans "ressources" mais plutôt dans "/WEB-INF" car il faut protéger leur accès depuis l'extérieur. Dans ressources, ils sont accessibles via l'URL et donc lisibles : ce n'est pas TOP pour la sécurité.
    Moins on code, moins il y a de bug ... et vice-versa ainsi qu'inversement ...

  15. #15
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2004
    Messages : 36
    Points : 19
    Points
    19
    Par défaut
    En regardant de plus prêt avec divers exemple, j'ai repéré une petite faute qui s'était glissée dans le faces-config :
    il fallait en début <faces-config version="2.0" ...

    J'avais d'inscrit vesion="1.2"

    En le modifiant, je retrouve ma page mise en page lors de l'arrivée sur l'index.
    Ensuite en suivant tes modifications, le clic sur le lien dans le menu charge la page, me renvoie une erreur mais au moins il y a redirection.

    Merci pour ton aide

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

Discussions similaires

  1. Fonctions JavaScript : erreurs sur les liens
    Par mic54 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 06/02/2009, 22h09
  2. Réponses: 6
    Dernier message: 01/04/2008, 15h42
  3. [Hibernate]Erreur sur LongType.next(LongType.java:54)
    Par Kcirtap dans le forum Hibernate
    Réponses: 2
    Dernier message: 31/05/2007, 16h02

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