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 :

[debutant] problème template jsf 2.0 netbeans 6.8M2


Sujet :

JSF Java

  1. #1
    Membre très actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2006
    Messages : 380
    Par défaut [debutant] problème template jsf 2.0 netbeans 6.8M2
    Bonjour
    Je suis tout débutant en jsf, et j'essaies les JSF 2.0

    - J'ai installé netbeans 6.8M2 et j'ai créé un projet de type "WebApplication"

    -Le serveur d'application est glassfish 3.0

    - Framework : java server faces
    Librairie : (par défault) use default library which comes whith Server (JSF 2.0)
    Configuration : (par défault)
    JSF Servlet Name : Faces Servlet
    Servlet URL Pattern /faces/*

    dans le welcome file list j'ai mis
    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
        <context-param>
            <param-name>javax.faces.PROJECT_STAGE</param-name>
            <param-value>Development</param-value>
        </context-param>
        <context-param>
            <param-name>javax.faces.PROJECT_STAGE</param-name>
            <param-value>Development</param-value>
        </context-param>
        <servlet>
            <servlet-name>Faces Servlet</servlet-name>
            <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>Faces Servlet</servlet-name>
            <url-pattern>/faces/*</url-pattern>
        </servlet-mapping>
        <session-config>
            <session-timeout>
                30
            </session-timeout>
        </session-config>
        <welcome-file-list>
            <welcome-file>/newjsf.xhtml</welcome-file>
        </welcome-file-list>
    </web-app>
    à l'intérieur j'ai créé un fichier "newTemplate.xhtml" dont voici le contenu
    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
     
    <?xml version='1.0' encoding='UTF-8' ?> 
    <!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="./resources/css/default.css" rel="stylesheet" type="text/css" />
            <link href="./resources/css/cssLayout.css" rel="stylesheet" type="text/css" />
            <title><ui:insert name="titre">Titre par défault</ui:insert></title>
        </h:head>
     
        <h:body>
     
     
            <div id="top" class="top">
                <ui:insert name="haut">Haut par défault</ui:insert>
            </div>
            <div>
                <div id="left">
                    <ui:insert name="gauche">gauche par défaut</ui:insert>
                </div>
                <div id="content" class="left_content">
                    <ui:insert name="contenu">contenu par défaut</ui:insert>
                </div>
            </div>
        </h:body>
    </html>
    puis un fichier newjsf.xhtml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?xml version='1.0' encoding='UTF-8' ?>
    <!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:h="http://java.sun.com/jsf/html"
          xmlns:ui="http://java.sun.com/jsf/facelets">
        <ui:composition template="/newTemplate.xhtml">
    	<ui:define name="titre">montitre</ui:define>
    	<ui:define name="haut">monhaut</ui:define>
    	<ui:define name="gauche">magauche</ui:define>
    	<ui:define name="gauche">magauche</ui:define>
    	<ui:define  name="contenu">moncontenu</ui:define>
        </ui:composition>
    </html>
    lorsque j'appelle cette page voici le résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    montitre monhaut magauche	magauche moncontenu
    Après de nombreux essais et recherches je me suis dit qu'il y avait probablement quelque chose qui n'allait pas. On dirait que mes balises <ui..." ne sont tout simplement pas interprétées, et qu'il y avait une chance qu'il faille créer un répertoire faces indiqué dans la configuration du web.xml
    J'ai donc créé le répertoire faces j'ai glissé mes deux fichiers dedans, j'ai changé le
    welcome-file par :"/faces/newjsf.xhtml"

    et dans ma page newjsf j'ai changé la référence de mon template par
    "/faces/newTemplate.xhtml"

    et là c'est très amusant, lorsque je lance le projet par le petit bouton prévu pour ça dans netbeans, j'ai exactement le même résultat, mais par contre, quand je tape directement l'adresse de ma page, voici le message qui ressort de mon navigateur internet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    An Error Occurred:
    /newjsf.xhtml Not Found in ExternalContext as a Resource
    Est-ce que quelqu'un pourrait me dire ce qu'il faut faire pour que ça marche parce que j'en ai un peu marre de chercher pendant des heures

  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
    Pour mettre une page jsf en page d'accueil:
    dans le welcome-file il faut mettre un /newjsf.jsf, pour que la requete soit traitée par JSF, et créer un fichier vide newjsf.jsf pour ne pas avoir fileNotFoundException.
    tu peux trouver une explication détaillée dans la

    Sinon tu peux essayé d'acceder à ta page directement /newjsf.jsf

  3. #3
    Membre très actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2006
    Messages : 380
    Par défaut
    sous netbeans je suis obligé de l'appeler xhtml...
    Quand on essaies de faire renommer, il n'y a pas l'accès à l'extension.

    Et que faut il faire ? le mettre dans le répertoire faces ou non ?

  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
    Citation Envoyé par tralloc Voir le message
    sous netbeans je suis obligé de l'appeler xhtml...
    Quand on essaies de faire renommer, il n'y a pas l'accès à l'extension.

    Et que faut il faire ? le mettre dans le répertoire faces ou non ?
    tu peux créer le fichier en dur, mais, pour voir si le problème vient de là, essaye d'utiliser d'accéder directement à la page.

  5. #5
    Membre très actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2006
    Messages : 380
    Par défaut
    Déjà j'ai oublié de te remercier de ta réponse, donc merci


    Je viens de faire le test et c'est assez peu instructif hélas.
    Quoique...

    j'ai renommé mon newjsf.xhtml en newjsf.jsf (et j'ai fais le changement dans mon welcome-file)
    lorsque je l'atteint depuis l'application j'obtiens toujours le même résultat, c'est à dire :
    montitre monhaut magauche magauche moncontenu

    Par contre lorsque j'accède directement à la jsf par le chemin :
    http://localhost:8080/WebApplication1/faces/newjsf.jsf

    j'ai une réponse plus claire :
    "HTTP Status 404 - /newjsf.jsf not found"

    une belle erreur 404 alors que tout à l'heure j'avais une page qui voulait un peu dire la même chose mais générée par sun avec un stacktrace...

  6. #6
    Membre très actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2006
    Messages : 380
    Par défaut
    Je me demande s'il ne manque pas des choses dans mon web.xml (Généré par netbeans), j'ai aussi remarqué qu'il y avait 3 fois le même context param

    J'ai donc simplifié par le vide, mais le résultat est toujours le même.

  7. #7
    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 as essayé de mettre le pattern de la faces servlet *.jsf et d'essayer d'acceder directement à la page:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://localhost:8080/WebApplication1/newjsf.jsf
    tu dois avoir le fichier newjsf.xhtml à la racine de ta webapp

  8. #8
    Membre très actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2006
    Messages : 380
    Par défaut
    Oui sniper j'ai essayé celà et je viens de le refaire pour être sûr.
    La seule différence c'est que je peux taper la page en direct sans qu'il y ait d'erreur.

    Mais j'ai toujours le résultat :
    montitre monhaut magauche magauche moncontenu
    Au lieu d'avoir au moins le titre "montitre" dans la barre de titrede firefox, comme ce que j'ai compris du code, je peux me tromper sur le code, je n'en sais rien.

  9. #9
    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 as regardé le code source généré?

  10. #10
    Membre très actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2006
    Messages : 380
    Par défaut
    Oui lorsque j'accède au fichier xhtml il le retranscrit mot pour mot. C'est pour celà aussi que je me suis dit que le code n'était pas interprêté... Je peux mettre ça sur le compte de la nouveauté de la version de netbeans peut-être...

    Je viens de faire un autre test de mettre un managed bean tout simple, le résultat : une page blanche alors que j'ai mis comme dans le tutoriel que j'ai lu, un <h:outputText value="#{bonjour.nom}"/>
    voici mon bean :
    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
     
    package objet;
     
     
    import javax.faces.bean.ManagedBean;
    import javax.faces.bean.RequestScoped;
     
    @ManagedBean(name="bonjour")
    @RequestScoped
    public class Bonjour {
        private String nom="duduche";
     
        public String getNom() {
    	return nom;
        }
     
        public void setNom(String nom) {
    	this.nom = nom;
        }
    }
    et comme précédemment la source vue dans firefox ressemble exactement à mon code au lieu d'avoir de l'html (j'imagine que je devraiçs avoir de l'html puisque en jsf, le code jsf ne se voit que du côté serveur)

    Je vais abandonner pour ce soir...
    Merci !!!

  11. #11
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par tralloc Voir le message
    Oui lorsque j'accède au fichier xhtml il le retranscrit mot pour mot.
    Cas typique d'un fichier non traité, ce qui indique que ton url ne passe pas par la servlet JSF.
    vu ton web.xml d'origine, ton fichier doit être placé à la racine de ta webapp, MAIS (et c'est probablement ça ton erreur), tes url dans le browser doivent inclure le "/faces/" mentionné comme mapping jsf dans ton web.xml
    (tu l'as défini ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        <servlet-mapping>
            <servlet-name>Faces Servlet</servlet-name>
            <url-pattern>/faces/*</url-pattern>
        </servlet-mapping>
    )
    , sinon ca ne passe jamais par JSF et tu te retrouve avec le fichier non traité. Ainsi, sans changer ton mapping jsf, ni tes fichiers de ton premier post modifie ceci dans ton web.xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        <welcome-file-list>
            <welcome-file>/faces/newjsf.xhtml</welcome-file>
        </welcome-file-list>
    et ton fichier par défaut sera correct.

  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
    pour utiliser JSF, il faut passer par le controleur Faces Servlet donc utiliser l'url définis dans le web.xml: *.jsf et non *.xhtml.
    tu as définis le default suffix dans le web.xml? il me semble que non..
    sinon un petit coup d'oeil dans les cours JSF avec Facelets te facilitera la tache..aujourd'hui ou plus tard

  13. #13
    Membre très actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2006
    Messages : 380
    Par défaut
    Hello !
    Je suis très content car la réponse de tchise fonctionne à merveille
    pour que mon application fonctionne correctement j'ai juste rajouté un index.xhtml à la racine avec une redirection à l'intérieur.

    Je suppose que si dans l'urlpattern j'avais inscrit *.jsf à la place de /faces/*,
    c'est la solution de Sniper37 qui aurait fonctionné.

    En tous les cas merci pour votre aide à tous les deux.

    Maintenant il va falloir que je me trouve un bon tutoriel décrivant les différentes balises.

    Je vous rembêterai peut-être durant ma phase d'apprentissage sur d'autres posts
    A++

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 27/11/2011, 18h50
  2. Réponses: 4
    Dernier message: 23/03/2011, 12h07
  3. [DEBUTANT]Problème Navigation JSF
    Par El_touristo dans le forum JSF
    Réponses: 7
    Dernier message: 27/03/2009, 14h58
  4. [debutant]Problèmes
    Par BibiGmi dans le forum OpenGL
    Réponses: 2
    Dernier message: 05/03/2004, 14h00
  5. [Debutant] Problème du linker [Dev-c++4]
    Par Macdir dans le forum Dev-C++
    Réponses: 3
    Dernier message: 30/05/2003, 20h50

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