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 :

[PrimeFaces] Problème d'affichage


Sujet :

JSF Java

  1. #1
    Membre averti
    Inscrit en
    Janvier 2013
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 18
    Par défaut [PrimeFaces] Problème d'affichage
    Bonjour,

    J'ai un problème avec JSF.

    A l'exécution de ma page xhtml, je n'obtiens que les outputtext, sans le bouton, ni les inputtext et il n'y a pas d'exception. Sachant que j'ai ajouté le JAR primefaces 3-3
    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
    <f:view xmlns="http://www.w3.org/1999/xhtml"
          xmlns:h="http://java.sun.com/jsf/html"
          xmlns:f="http://java.sun.com/jsf/core"
          xmlns:p="http://primefaces.org/ui"
          xmlns:ui="http://java.sun.com/jsf/facelets"> 
     
    <h:head></h:head> 
    <body> 
    <h:form id="form">
    <p:growl showDetail="true" sticky="true"></p:growl>
    <p:panel header="Ajouter Article" toggleable="true">
    <h:panelGrid columns="3" cellpadding="4" cellspacing="4">
     
    <h:outputText value="Code" />
    <p:inputText id="code" value="#{createArticleCtrl.article.code_Art}" required="true"></p:inputText>
    <p:message for="code"></p:message>
    <h:outputText value=" Nom" />
    <p:inputText id="Nom" value="#{createArticleCtrl.article.nom_art}" required="true"></p:inputText>
    <p:message for="Nom"></p:message>
    <h:outputText value="Prix" />
    <p:inputText id="Prix" value="#{createArticleCtrl.article.prix_HTVA}" required="true" ></p:inputText>
    <p:message for="Prix"></p:message>
    <p:commandButton value="Valider" action="#{createArticleCtrl.doAddArticle()}" update="form"></p:commandButton>
    </h:panelGrid>
     
     
    </p:panel>
    </h:form>
     
    </body> 
     
    </f:view>
    Quelqu'un saurait-il m'indiquer d'où peut venir le problème ?

    Merci d'avance pour votre aide.

  2. #2
    Membre Expert
    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
    Par défaut
    Bonjour,

    à la place de f:view, mets html
    à la place de body, mets h:body

    J'ai deux questions pour pouvoir t'aider :

    1 - comment s'appelle physiquement ton fichier ?
    2 - quel est le mapping d'URL vers la Servlet de JSF dans ton /WEB-INF/web.xml ?

    De plus, peux-tu mettre une capture d'écran de ce que tu obtiens ainsi que le code HTML retourné au navigateur (clic droit, afficher la source)

  3. #3
    Membre averti
    Inscrit en
    Janvier 2013
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 18
    Par défaut
    J'ai changé comme vous m'avez conseillé mais c'est la meme chose, mais ce que je voulais dire c'est que j'ai vu une vidéo avec f:view au lieu de html et ca a marché pour lui.

    1-Mon fichier s'apelle ajouterArticle.xhtml
    2- voici ci joint le fichier web.xml

    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"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
      <display-name>edu.esprit.pfeProjectWeb</display-name>
      <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>
    </web-app>
    Et voila le code source de la page

    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
    <html xmlns="http://www.w3.org/1999/xhtml" xmlns:p="http://primefaces.org/ui"><head></head><body>
    <form id="form" name="form" method="post" action="/edu.esprit.pfeProjectWeb/faces/ajouterArticle.xhtml" enctype="application/x-www-form-urlencoded">
    <input type="hidden" name="form" value="form" />
     
    <p:growl showDetail="true" sticky="true"></p:growl>
    <p:panel header="Ajouter Article" toggleable="true"><table cellpadding="4" cellspacing="4">
    <tbody>
    <tr>
    <td>Code</td>
    <td>
    <p:inputText id="code" value="0" required="true"></p:inputText>
    <p:message for="code"></p:message></td>
    <td> Nom</td>
    </tr>
    <tr>
    <td>
    <p:inputText id="Nom" required="true"></p:inputText>
    <p:message for="Nom"></p:message></td>
    <td>Prix</td>
    <td>
    <p:inputText id="Prix" value="0" required="true"></p:inputText>
    <p:message for="Prix"></p:message>
    <p:commandButton value="Valider" update="form"></p:commandButton></td>
    </tr>
    </tbody>
    </table>
     
     
     
    </p:panel><input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="-6125831200178489161:-5323908101614772598" autocomplete="off" />
    </form></body> 
     
    </html>
    Images attachées Images attachées  

  4. #4
    Membre Expert
    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
    Par défaut
    Comme tu peux le voir dans le code de la page HTML, ta page a été renvoyée directement sans que les tags primefaces n'ait été interprétés. En revanches, les tags JSF ont bien été interprétés ce qui montre que le config JSF semble être bonne.

    Donc mes questions :
    - quel est ton serveur web ? (Tomcat ? GlassFish ?)
    - quelle est sa version ?
    - as-tu bien mis le JAR de PrimeFaces dans WEB-INF/lib ?

  5. #5
    Membre averti
    Inscrit en
    Janvier 2013
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 18
    Par défaut
    Mon serveur c'est Jboss 7.1.

    En ce qui concerne le JAR, il doit etre obligatoirement dans lib sous WEB-INF ?? Parce que tous mes Jars sont sous Java Resource/Librairie

  6. #6
    Membre Expert
    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
    Par défaut
    Oui obligatoirement.

    Ne confonds pas le "ClassPath" de ton projet sous Eclipse et le packaging de l'application web qui doit FORCEMENT inclure les librairies dont ton application dépend.

    C'est à dire à la difference entre "compile time" et "run time"

  7. #7
    Membre averti
    Inscrit en
    Janvier 2013
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 18
    Par défaut
    Merci infiniment, ca marche maintenant.

    Si je peux me permettre, quand je fais l'ajout, y a une exception
    EJB Invocation failed on component ArticleDao for method public abstract void edu.esprit.pfeProjectEJB.DAO.interfaces.ArticleDaoRemote.createArticle(edu.esprit.pfeProjectEJB.persistence.Article): javax.ejb.EJBException: javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist: edu.esprit.pfeProjectEJB.persistence.Article.

    Vous avez une idée de ce que ca peut etre ?? Parce que j'ai testé mes CRUD par une classe de Test (main) et ils marchent.

  8. #8
    Membre Expert
    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
    Par défaut
    Là il faut que tu montres du code pour qu'on puisse t'aider.

  9. #9
    Membre averti
    Inscrit en
    Janvier 2013
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 18
    Par défaut
    Voici les classes relatives à Article.

    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
    package edu.esprit.pfeProjectEJB.persistence;
     
    import java.io.Serializable;
     
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.ManyToOne;
     
    /**
     * Entity implementation class for Entity: Article
     * 
     */
    @Entity
    public class Article implements Serializable {
     
    	private int code_Art;
    	private String ref_Art;
    	private String nom_art;
    	private String libelle;
    	private int prix_HTVA;
    	private int TVA;
    	private int quantité;
    	private int quantité_min;
     
    	private User user;
    	private Commande commande;
    	private static final long serialVersionUID = 1L;
     
    	public Article() {
    		super();
    	}
     
    	@Id
    	@GeneratedValue(strategy = GenerationType.IDENTITY)
    	public int getCode_Art() {
    		return this.code_Art;
    	}
     
    	public void setCode_Art(int code_Art) {
    		this.code_Art = code_Art;
    	}
     
    	public Article(String ref_Art, String nom_art, String libellé,
    			int prix_HTVA, int tVA, int quantité, int quantité_min) {
    		super();
    		this.ref_Art = ref_Art;
    		this.nom_art = nom_art;
    		this.libelle = libellé;
    		this.prix_HTVA = prix_HTVA;
    		TVA = tVA;
    		this.quantité = quantité;
    		this.quantité_min = quantité_min;
    	}
     
     
     
    	public String getRef_Art() {
    		return ref_Art;
    	}
     
    	public void setRef_Art(String ref_Art) {
    		this.ref_Art = ref_Art;
    	}
     
    	public String getNom_art() {
    		return nom_art;
    	}
     
    	public void setNom_art(String nom_art) {
    		this.nom_art = nom_art;
    	}
     
    	public String getLibellé() {
    		return libelle;
    	}
     
    	public void setLibellé(String libellé) {
    		this.libelle = libellé;
    	}
     
    	public int getPrix_HTVA() {
    		return prix_HTVA;
    	}
     
    	public void setPrix_HTVA(int prix_HTVA) {
    		this.prix_HTVA = prix_HTVA;
    	}
     
    	public int getTVA() {
    		return TVA;
    	}
     
    	public void setTVA(int tVA) {
    		TVA = tVA;
    	}
     
    	public Article(String nom_art, String libellé) {
    		super();
    		this.nom_art = nom_art;
    		this.libelle = libellé;
    	}
     
    	public int getQuantité() {
    		return quantité;
    	}
     
    	public void setQuantité(int quantité) {
    		this.quantité = quantité;
    	}
     
    	public int getQuantité_min() {
    		return quantité_min;
    	}
     
    	public void setQuantité_min(int quantité_min) {
    		this.quantité_min = quantité_min;
    	}
     
    	@ManyToOne
    	public Commande getCommande() {
    		return commande;
    	}
     
    	public void setCommande(Commande commande) {
    		this.commande = commande;
    	}
     
    	@ManyToOne
    	public User getUser() {
    		return user;
    	}
     
    	public void setUser(User user) {
    		this.user = user;
    	}
     
     
     
    }
    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
    package edu.esprit.pfeProjectEJB.DAO;
     
    import java.util.List;
     
    import edu.esprit.pfeProjectEJB.DAO.interfaces.ArticleDaoLocal;
    import edu.esprit.pfeProjectEJB.DAO.interfaces.ArticleDaoRemote;
    import edu.esprit.pfeProjectEJB.persistence.Article;
     
    import javax.ejb.LocalBean;
    import javax.ejb.Stateless;
    import javax.persistence.EntityManager;
    import javax.persistence.NamedQueries;
    import javax.persistence.PersistenceContext;
    import javax.persistence.Query;
     
    /**
     * Session Bean implementation class ArticleDao
     */
    @Stateless
    @LocalBean
    public class ArticleDao implements ArticleDaoRemote, ArticleDaoLocal {
     
    	@PersistenceContext(unitName="edu.esprit.pfeProjectEJB")
    	EntityManager em ;
        public ArticleDao() {
            // TODO Auto-generated constructor stub
        }
     
     
    	public void createArticle(Article article) {
    		em.persist(article) ;
     
    	}
     
     
    	public void updateArticle(Article article) {
    		em.merge(article) ;
     
    	}
     
     
    	public void deleteArticle(Article article) {
    		em.remove(article) ;
     
    	}
     
     
     
    	@SuppressWarnings("unchecked")
    	public List<Article> getAllArticle() {
    		Query query = em.createQuery("select a from Article a") ;
    		return query.getResultList() ;
    	}
     
     
     
     
     
    	@Override
    	public Article readById(int codeArt) {
    		return 	 em.find(Article.class, codeArt) ;
     
    	}
     
    }
    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
    package edu.esprit.pfeProjectEJB.DAO.interfaces;
     
    import java.util.List;
     
    import javax.ejb.Remote;
     
    import edu.esprit.pfeProjectEJB.persistence.Article;
     
    @Remote
    public interface ArticleDaoRemote {
     
    	public void createArticle(Article article) ;
    	public void updateArticle(Article article) ;
    	public void deleteArticle(Article article) ;
    	public Article readById(int codeArt) ;
    	public List<Article> getAllArticle() ;
     
    }
    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
    package ctrl;
     
    import javax.ejb.EJB;
    import javax.faces.application.FacesMessage;
    import javax.faces.bean.ManagedBean;
    import javax.faces.bean.SessionScoped;
    import javax.faces.context.FacesContext;
     
    import edu.esprit.pfeProjectEJB.DAO.interfaces.ArticleDaoRemote;
    import edu.esprit.pfeProjectEJB.persistence.Article;
     
    @ManagedBean
    @SessionScoped
    public class CreateArticleCtrl {
    	private Article article = new Article();
    	@EJB
    	ArticleDaoRemote remote;
     
    	public String doAddArticle() {
    		FacesContext context=FacesContext.getCurrentInstance();
    try { 
    		remote.createArticle(article);
    		article= new Article();
    		FacesMessage message=new FacesMessage(FacesMessage.SEVERITY_INFO,"Info","Création réuissite");
    		context.addMessage(null, message);
    }catch(Exception e){
     
    			FacesMessage message=new FacesMessage(FacesMessage.SEVERITY_ERROR,"Erreur","Erreur de création");
    			context.addMessage(null, message);
    }
    		return "";
    	}
     
    	public Article getArticle() {
    		return article;
    	}
     
    	public void setArticle(Article article) {
    		this.article = article;
    	}
     
    }

  10. #10
    Membre Expert
    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
    Par défaut
    Dans ton ManagedBean JSF tu ne devrais pas invoquer en Remote, mais en Local :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    @EJB 
    ArticleDaoLocal articleDao;

  11. #11
    Membre averti
    Inscrit en
    Janvier 2013
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 18
    Par défaut
    Probleme résolu, c'est lié à la clé primaire. Merci

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

Discussions similaires

  1. [Primefaces] Problème d'affichage d'image
    Par syrine Jerbi dans le forum JSF
    Réponses: 5
    Dernier message: 05/03/2014, 00h32
  2. Réponses: 4
    Dernier message: 08/11/2012, 19h34
  3. Réponses: 3
    Dernier message: 22/10/2012, 14h58
  4. [PrimeFaces] Problème d'affichage d'une map
    Par ahmedpa dans le forum JSF
    Réponses: 0
    Dernier message: 22/09/2012, 17h02
  5. Réponses: 2
    Dernier message: 13/08/2012, 16h57

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