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 :

Soumettre un champs anciennement masqué


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 42
    Par défaut Soumettre un champs anciennement masqué
    Bonjour,

    Je développe une web application à l'aide de JSF 1.2, Richface 3.3.3 Final sous Jboss 4.2.3.

    Mon problème est le suivant: J'ai une page qui affiche des champs en fonction du choix de l'utilisateur à l'aide d'Ajax. Du coup les champs qui n'étaient pas rendered ne sont donc pas présent dans la DOM... (Si le champ est rendered dès le début il est soumis sans problème, si non la valeur est null à l'arrivé)
    Ma question est toute simple comment puis je soumettre ses valeurs pour les récupérer dans mon bean derrière ?

    Voici le bout de code JSF :

    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
    <h:outputLabel value="Prêt/Emprunt : " for="lendBorrow" />
    <rich:comboBox id="lendBorrow"
    	value="#{attributionRequestBean.attribution.lendBorrow}"
    	suggestionValues="#{applicationBean.gp.attributionLendBorrows}"
    	converter="attributionLendBorrowConverter"
    	enableManualInput="false" required="true"
    	requiredMessage="Pret/Emprunt est obligatoire" >
    	<a4j:support event="onselect" action="#{attributionRequestBean.setVisible}" reRender="test" ajaxSingle="true"/>
    	</rich:comboBox>
    <rich:message for="lendBorrow" showDetail="true"
    	styleClass="erreur" />
     
    <a4j:outputPanel id="test">
    <h:outputLabel value="Agence opérationnelle : "
    	for="operationalAgence" rendered="#{attributionRequestBean.agenceVisible}"/>
    <rich:comboBox id="operationalAgence" rendered="#{attributionRequestBean.agenceVisible}"
    	value="#{attributionRequestBean.attribution.operationalAgence}"
    	suggestionValues="#{applicationBean.gp.agences}"
    	converter="agenceConverter" enableManualInput="false" />
    <rich:message rendered="#{attributionRequestBean.agenceVisible}" for="operationalAgence" showDetail="true"
    	styleClass="erreur" />
    	</a4j:outputPanel>
    Si le premier combobox prend une certaine valeur, le second combobox est alors affiché (tout fonctionne très bien).

    Je ne sais pas trop comment résoudre le problème. Comme le champs est affiché à l'aide d'Ajax je me dis qu'il y a peut être une fonction de a4j qui me permettrait de m'aider mais je ne trouve rien...

    Merci par avance!

  2. #2
    Membre éprouvé Avatar de juridakus
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Maroc

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 82
    Par défaut
    Citation Envoyé par Romvaillant Voir le message
    Je ne sais pas trop comment résoudre le problème. Comme le champs est affiché à l'aide d'Ajax je me dis qu'il y a peut être une fonction de a4j qui me permettrait de m'aider mais je ne trouve rien...
    Essaies de positionner l'attribut valueChangeListener du <rich:comboBox> qui prend comme valeur une méthode void (ValueChangeEvent). Il s'agit d'un Listener Ajax mais je ne sais pas s'il sera activé quand le champ sera affiché.

  3. #3
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 42
    Par défaut
    Citation Envoyé par juridakus Voir le message
    Essaies de positionner l'attribut valueChangeListener du <rich:comboBox> qui prend comme valeur une méthode void (ValueChangeEvent). Il s'agit d'un Listener Ajax mais je ne sais pas s'il sera activé quand le champ sera affiché.
    Bien tenté mais malheureusement le problème est le même et je m'en doutais un peu...
    En fait comme le composant n'est pas rendered à la base tous les opérations sur le combobox ne sont pas retransmis au serveur donc les listener, les converter, les validator sont tout simplement ignorés. Je sais que le problème ne vient pas de la méthode car elle est très bien appelé (à la soumission de mon formulaire) quand le composant est rendered à l'origine...

    Merci quand même pour ton aide.

    Quelqu'un d'autre aurait une idée? Il s'agit peut être de mon approche qui n'est pas bonne...

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Ca va être chaud pour toi de résoudre ton pb en utilisant rendered, moi je by passe en utilisant le disable, le client verra le champ, mais ne pourra pas l'utiliser.

  5. #5
    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
    n'utilise pas ajaxSingle, les valeurs seront envoyés dans la requete ajax.

  6. #6
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 42
    Par défaut
    @Sniper37:
    Bonjour,

    Si je supprime le ajaxSingle de mon a4j:support, à chaque sélection il passe par les phases de validation (required plus précisément) des autres champs de mon formulaire. J'ai donc rajouté immediate="true" à mon a4j:support mais dans ce cas là le second combobox se masque une première fois mais ne réapparait plus...

    @DevServlet:
    Bonjour,

    Merci de l'astuce, j'utilise maintenant ta feinte, c'est toujours mieux que ce que j'avais mis en attendant de trouver mieux (afficher le champs la première bien que cela n'avait pas de sens).


    Mon bout de code devient alors
    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
     
    <rich:panel style="padding:0" headerClass="outpanelHeader" id="test">
    ....
    <h:outputLabel value="Prêt/Emprunt : " for="lendBorrow" />
    <rich:comboBox id="lendBorrow" 
    	value="#{attributionRequestBean.attribution.lendBorrow}"
    	suggestionValues="#{applicationBean.gp.attributionLendBorrows}"
    	converter="attributionLendBorrowConverter"
    	enableManualInput="false" required="true"
    	requiredMessage="Pret/Emprunt est obligatoire">
    	<a4j:support event="onselect"
    		action="#{attributionRequestBean.setVisible}" reRender="test" ajaxSingle="true" />
    </rich:comboBox>
    <rich:message for="lendBorrow" showDetail="true"
    	styleClass="erreur" />
     
    <h:outputLabel value="Agence opérationnelle : "
    	for="operationalAgence" />
    <rich:comboBox id="operationalAgence" disabled="#{!attributionRequestBean.agenceVisible}"
    	value="#{attributionRequestBean.attribution.operationalAgence}"
    	suggestionValues="#{applicationBean.gp.agences}"
    	converter="agenceConverter" enableManualInput="false" />
    <rich:message for="operationalAgence" showDetail="true" styleClass="erreur" />
    </rich:panel>

    Je suis toujours preneur si quelqu'un a une solution!!
    Peut être que dois je masquer le champs autrement(j'avais pensé à du javascript mais j'ai pas trop envie de me lancer dedans et puis je me suis dit que le problème pourrait être le même et que c'était dommage de ne pas utiliser les possibilités de RichFaces).

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 03/03/2015, 15h55
  2. [AC-2000] Pb en sortie vba d'un champ avec masque de saisie
    Par davidcurty dans le forum VBA Access
    Réponses: 6
    Dernier message: 06/10/2009, 14h14
  3. Réponses: 9
    Dernier message: 21/08/2008, 17h07
  4. Réponses: 1
    Dernier message: 04/09/2007, 06h21
  5. Vérification des champs et Masques de Saisies
    Par ToTo13 dans le forum VBA Access
    Réponses: 2
    Dernier message: 04/06/2007, 11h15

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