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 :

[JSF & RichFaces] Affichage de FacesMessage avec <h:message> lors de la validation


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 9
    Par défaut [JSF & RichFaces] Affichage de FacesMessage avec <h:message> lors de la validation
    Bonjour,
    Je dois faire pour un projet un formulaire de validation qui réagit lorsque l'on saisit les informations. J'ai donc choisi le RichFaces pour l'ajax.

    Cependant, je n'arrive pas à afficher sur ma page les messages que je créé en cas d'erreur.
    Voici le code jsf "test.jsf" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <h:form>
    	<h:outputText value="Nom : " />
    	<h:inputText value="#{test.lastName}" id="lastname" required="true">
    		<a4j:support event="onkeyup" action="#{test.checkLastName}" reRender="pouet" />
    	</h:inputText>
    	<a4j:outputPanel ajaxRendered="true">
    		<h:message id="pouet" for="lastname" />
    	</a4j:outputPanel>
    </h:form>
    Et voici mon bean "test.jsf" qui est bien déclaré dans mon faces.conf
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public class test {
    	private String lastName="";
     
    	public String getLastName() {
    		return lastName;
    	}
    	public void setLastName(String lastName) {
    		this.lastName = lastName;
    	}
     
    	public void checkLastName(){
    		FacesContext fc = FacesContext.getCurrentInstance();
    		fc.addMessage("lastname", new FacesMessage("Error LastName"));
    	}
    Cet exemple est bête je veux juste afficher un message lorsque je saisi quelque chose dans le inputText.
    Ce code me permet de générer l'erreur, mais pas de l'afficher dans ma page HTML. Dans les logs du serveur j'ai cela qui est assez explicite mais qui ne m'aide pas à corriger mon erreur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    sourceId=lastname[severity=(INFO 0), summary=(Error Lastname), detail=()];|WARNING: FacesMessage(s) have been enqueued, but may not have been displayed.
    sourceId=lastname[severity=(INFO 0), summary=(Error Lastname), detail=()]|#]
    Je sais que ce sujet a déja été traité dans le forum, mais je n'ai pas réussi à corriger mon probleme avec les post parlant de ce sujet.

    Merci de votre aide...

    PS : Lorsque je laisse le champ vide, le message d'erreur s'affiche correctement.

  2. #2
    Membre éclairé
    Inscrit en
    Novembre 2007
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 69
    Par défaut
    salut!

    tu dois utiliser client id au lieu de l'id coté serveur pour afficher tes messages

    tu dois remplacer l'id lastname par client id
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fc.addMessage("lastname", new FacesMessage("Error LastName"));

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 9
    Par défaut
    Bonsoir
    Je ne suis pas sur d'avoir compris....
    J'ai remplace mon code java par "client-id" tel que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    fc.addMessage("client-id",new FacesMessage("Error Lastname"));
    Mais les message s'affichent toujours dans la console d'Eclipse.
    Le "client-id" doit correspondre à quelque chose dans ma page jsp ???

    Désolé d'etre un boulet mais j'ai très peu d'expérience avec le jsp et richfaces...

  4. #4
    Membre éclairé
    Inscrit en
    Novembre 2007
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 69
    Par défaut
    Salut

    peut j ai pas bien expliqué car j'étais un peu pressé.

    j'explique:

    JSF au moment de la génération du l'html correspondant à ta page JSP, génére un client id(un identifiant coté client) pour que chaque composant de ta page soit unique, pour ton cas "lastname" c juste l'id coté serveur, mais si tu visualiseras le code source de ta page générée tu vas trouver un autre id.

    Solution:
    Tu peux faire un bindig de ton composant avec une proprieté dans ton managedBean et tu remplace ton code par celui:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fc.addMessage(nomdelavariable.getClientId(), new FacesMessage("Error LastName"));
    n'hésite pas si tu as besoin de plus explication

    Merci

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 9
    Par défaut
    C'est à moi de te remercier....
    Avec un ton aide et quelques recherches google j'ai réussi à obtenir le résultat que je désire...

    Merci beaucoup à toi


    Citation Envoyé par lion.maroc Voir le message
    Salut

    peut j ai pas bien expliqué car j'étais un peu pressé.

    j'explique:

    JSF au moment de la génération du l'html correspondant à ta page JSP, génére un client id(un identifiant coté client) pour que chaque composant de ta page soit unique, pour ton cas "lastname" c juste l'id coté serveur, mais si tu visualiseras le code source de ta page générée tu vas trouver un autre id.

    Solution:
    Tu peux faire un bindig de ton composant avec une proprieté dans ton managedBean et tu remplace ton code par celui:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fc.addMessage(nomdelavariable.getClientId(), new FacesMessage("Error LastName"));
    n'hésite pas si tu as besoin de plus explication

    Merci

  6. #6
    Membre éclairé
    Inscrit en
    Novembre 2007
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 69
    Par défaut
    Salut,

    genial merci a dieu,

    Peux tu ajouter Resolu a votre discussion

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

Discussions similaires

  1. Problème d'affichage de texte avec JSF
    Par fab76000 dans le forum JSF
    Réponses: 5
    Dernier message: 19/05/2012, 19h21
  2. Réponses: 1
    Dernier message: 06/07/2009, 16h38
  3. affichage page Css avec JSF
    Par prog_deb dans le forum JSF
    Réponses: 7
    Dernier message: 03/05/2009, 15h43
  4. Développement RIA avec JSF et Richfaces
    Par Sniper37 dans le forum JSF
    Réponses: 0
    Dernier message: 30/12/2008, 12h19

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