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 :

Page avec plusieurs <h:form>


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 104
    Par défaut Page avec plusieurs <h:form>
    Bonjour à tous,

    Je travaille actuellement sur un projet JSF.
    Une des fonctionnalités est l'ajout d'un 'manager' et d'un 'customer' depuis la même page. J'ai donc un formulaire "bindé" avec un managed bean "AddManagerBean" et un autre formulaire "bindé" avec un autre managed bean "AddCustomerBean", chacun traitant leur formulaire respectif.

    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
     
    <div id="manager-form">
       <h2>Add a Manager</h2>
       <h:messages .../>
       <h:form>
          [... plusieurs input manager...]
       </h:form>
    </div>
    <div id="customer-form">
       <h2>Add a Customer</h2>
       <h:messages .../>
       <h:form>
          [... plusieurs input customer...]
       </h:form>
    </div>
    Au niveau logique, tout va bien, chaque managed bean gère son formulaire.
    Par contre, j'ai un problème avec les messages de confirmation après soumission. Je souhaite rester sur la même page et afficher un message au dessus du formulaire qui vient d'être soumis.
    En utilisant <h:messages>, les messages s'affichent au dessus des deux formulaires, ce que je comprends bien et qui me parait normal. Je ne sais pas comment gérer ce mécanisme.

    Y'a-t-il une solution ?
    Peut-on "associé" un/des message(s) à un formulaire en particulier avec h:messages ?
    Dois-je créer deux champs successMessage et errorMessage dans chaque controlleur et l'afficher depuis ma page (donc sans passer par h:messages) ?

    Merci pour votre aide.

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Par défaut
    Bonjour,

    As-tu essayé de renseigner l'attribut for de h:message ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <div id="customer-form">
        <h:message for="customer-form" />
        ...
     
    </div>
    Et au moment de l'ajout du message :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    FacesContext context = FacesContext.getCurrentInstance();
    context.addMessage("customer-form", new FacesMessage("Un message"));

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 104
    Par défaut
    Merci Mathieu.J pour ta réponse.

    Je n'ai pas réussi à obtenir quelque chose avec ta méthode, avec l'attribut "for" sur <h:messages>. J'ai essayé sur le <div> avec un id particulier, plus rien ne s'affiche. J'ai ensuite donné un id à mon <h:form>, pas mieux.

    Dans les deux cas, j'ai un warning dans les log :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    WARNING: Impossible de détecter le composant dont l’ID est «newManagerForm» dans la vue.
    WARNING: Impossible de détecter le composant dont l’ID est «newUserForm» dans la vue.
    Je sais que le "for" s'utilise bien avec <h:message>, les <h:inputText> par exemple sont bien reconnu comme composant. Mais je souhaite un message lié à tel formulaire et pas tel champs.

    J'ai fais pas mal de recherche et j'ai trouvé la solution, avec l'attribut "binding" sur mon <h:form>. Ca fonctionne bien. J'espère que c'est la bonne méthode, et que ce n'est pas "sale". Voici mon nouveau code :

    Pour le formulaire addManagerForm:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <h:form binding="#{newManagerForm}">
       <h:messages rendered="#{newManagerForm.submitted}" errorClass="errorMessage" infoClass="infoMessage" warnClass="warnMessage"/>
       [... Inputs...]
    </h:form>
    Pour le formulaire addUserForm, même principe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <h:form binding="#{newUserForm}">
       <h:messages rendered="#{newUserForm.submitted}" errorClass="errorMessage" infoClass="infoMessage" warnClass="warnMessage"/>
       [... Inputs...]
    </h:form>
    Peux-tu me donner ton avis ?

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 04/01/2013, 10h59
  2. Réponses: 10
    Dernier message: 26/06/2011, 10h15
  3. Fermer une page avec plusieur cadre
    Par 12_darte_12 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 22/11/2005, 12h29
  4. [] plusieurs instances de form avec leur contexte ?
    Par Seb-31 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 11/04/2003, 13h56

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