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 :

Passer la validations et mettre à jour le model


Sujet :

JSF Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 92
    Points : 80
    Points
    80
    Par défaut Passer la validations et mettre à jour le model
    Bonjour,

    J'ai deux page sur deux onglets.

    Je souhaiterai passer la validation de plusieurs champs mais de mettre à jour tout de meme le model sur l'une des pages. J'ai voulu utiliser la fameuse propriéte immediate sur les boutons interressé (à l'interieur de la page). Mais elle ne mets pas à jour mon model. J'ai lue dans la FAQ que normalement si l'on met immediate sur un champs, il sera mise à jour dans le model. Cependant cela ne marche pas (j'ai du mal comprendre).

    J'ai aussi essayer d'utiliser les subForm mais apparemment les subForm faisant partie d'un formulaire ne sont pas soumis quand on soumet le formulaire principal (ce qui ne semble pas donc correspondre à la définition d'un sous formulaire). Or quand je change d'onglet je soumet mon formulaire afin que toutes les données soit soumise (j'utilise t:panelTabbedPane pour les onglets).

    J'avoue que j'ai du mal à trouver des avantages à un framework comme JSF qui demande autant de complication pour juste contrôler notre validation.

    donc voici ma question:


    Comment passer la validation de plusieurs champs mais de mettre à jour tout de meme le model?

    Merci d'avance.

  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
    Points : 5 059
    Points
    5 059
    Par défaut
    tu veux dire quoi par mettre à jour le model ne mar che pas pas??
    tu peux donner un bout de code..

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 92
    Points : 80
    Points
    80
    Par défaut
    Je vais essayer de te passer un bout de code:

    voici ma page principale avec mes onglets, je te met juste le debut:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <h:form id="form">
    <t:panelTabbedPane activeTabStyleClass="onglet_on"
    												inactiveTabStyleClass="onglet_off"
    												tabContentStyleClass="onglet_content" serverSideTabSwitch="true"
    												immediateTabChange="false" binding="#{ProfilBETCtrl.view.tabs}"
    												style="width:1006px">
     
    <t:panelTab id="Identification"													label="#{messages_portail.onglets_identification}"
    styleClass="onglet_page">
           ............
    Qand je change d'onglet, tous le formulaire est soumis.

    Voici une partie de mon code avec un validateur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <td class="information_numerique" width="200px">
    <t:inputText id="cp" forceId="true" required="true" style="width:200px"
    		value="#{bet.codePostalBET}" rendered="#{modifiable}" >
    	<f:validator validatorId="codePostalValidatorBET" />
    </t:inputText>
    <h:message for="cp" styleClass="label_rouge"/>
    </td>
    Cette partie est soumise à ma validations et m'affiche mon message si il y a une erreur lors de la soumission (changement de mon onglet par exemple)

    Voici mon code conerné par le immediate:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <t:dataTable border="0" styleClass="tableau"
    	value="#{bet.agences}" var="agence" rowIndexVar="index"
    	style="width:100%" rowClasses="ligneImpaire,lignePaire" >
    .....
              <!-- Mon champs texte agence-->
              <t:inputText  value="#{agence.nomagence}" rendered="#{modifiable}" styleClass="tailleMaximale"/>
    .........
             <!-- Mon bouton qui appel mon action -->
             <t:commandLink  action="#{controller.ajoutAgence}" immediate="true" title="Ajouter une agence">
    		<h:graphicImage url="/images/common/add.gif" style="border-color:white"/>
    	</t:commandLink>
    Je veux que quand je clique sur mon bouton mes validateurs concernant mon code n°2 ne soit pas exécuté. Ce que fait le immediate="true". Cependant la valeur saisie dans agence est perdue car le model n'est pas mis à jour.

    Si je mets des subForm, quand je change d'onglet les données à l'intérieur du subform ne sont opas soumise et donc perdu.

    As tu une solution pour que ma donnée dans agence ne soit pas perdu quand je clique sur mon bouton?

  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
    Points : 5 059
    Points
    5 059
    Par défaut
    ajoute le immediate aux composants input et pas dans le commandButton.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 92
    Points : 80
    Points
    80
    Par défaut
    Oui mais dans ce cas la validation ne se fera jamais meme quand je chagerai d'onglet. Non?

  6. #6
    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
    Points : 5 059
    Points
    5 059
    Par défaut
    et dans l'onglet ya pas un attribut comme immediate?
    quelle version de tomahawk?

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 92
    Points : 80
    Points
    80
    Par défaut
    immediateTabChange="false" qui soumet les champs mais pas ceux qui ont un immediate="true".

  8. #8
    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
    Points : 5 059
    Points
    5 059
    Par défaut
    Citation Envoyé par demanghonj Voir le message
    immediateTabChange="false" qui soumet les champs mais pas ceux qui ont un immediate="true".
    oui dans ce cas tu ne mets pas les champs avec immediate = true.

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    pour rappel, immediate="true" ne veux pas dire qu'il n'y aura pas de validation avant d'envoyer le model, ca dit juste que ce composant fera son cycle de vie (apply request value, validation, update model, invoke application) durant la phase d'apply request value ou immédiatement après. (c-a-d avant que le autres composant passent dans la suite du cycle).

Discussions similaires

  1. [Débutant] Mettre à jour @Model
    Par rvzip64 dans le forum ASP.NET MVC
    Réponses: 2
    Dernier message: 16/02/2015, 09h46
  2. Réponses: 0
    Dernier message: 13/03/2014, 12h31
  3. mettre à jour un champ du model après actions jquery.
    Par ncheboi dans le forum ASP.NET MVC
    Réponses: 5
    Dernier message: 26/04/2011, 13h44
  4. Réponses: 3
    Dernier message: 09/07/2004, 10h23
  5. Réponses: 6
    Dernier message: 14/02/2003, 16h52

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