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 :

La valeur d'un champ devient null lorsque je fait un submit


Sujet :

JSF Java

  1. #1
    Membre éclairé
    Inscrit en
    Mars 2005
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 226
    Par défaut La valeur d'un champ devient null lorsque je fait un submit
    bonjour,

    Je posséde un formulaire avec plusieurs champs. Le dernier champ de mon formulaire depand du type d'authentification choisi. Le type d'authentification se choisit avec un radio bouton (regular ou ssl). Si le type est REGULAR alors le champ certificat est inactif (disabled=true) sinon il est actif.
    Lorsque que je suis dans mon formulaire et que je m'amuse à choisir les types alors mon champ passe bien de inactif a actif et invercement.

    Le problème est lorsque j'essaie de valider mon formulaire avec le type SSL où le champ certificat doit donc être rempli. A ce moment la valeur de mon champ est toujours null peut importe se que j'écris dedans. Le problème c'est qu'il ne passe pas par le setteur.

    code jsp:
    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
     
    <h:form id="formUpdateGateway">
        <h:messages layout="table" styleClass="errorMsg"/>
           <h:panelGrid columns="2">
                <h:outputText value="#{bundle.createGateway_typeAuthentification}"/>
                <h:selectOneRadio valueChangeListener="#{UpdateGateway.AuthentificationValueChanged}" value="#{UpdateGateway.authSelected}" onchange="submit();">
                      <f:selectItems value="#{UpdateGateway.authOptions}"/>
                 </h:selectOneRadio>
     
                  <h:panelGroup>
                      <h:outputText value="#{bundle.createGateway_certificat}" styleClass="#{UpdateGateway.isValidCertif ? '' : 'errorMsg'}"/>
                       <span class="errorMsg">*</span> 
                    </h:panelGroup>
                    <h:inputText disabled="#{not UpdateGateway.isMendatoryCertif}" value="#{UpdateGateway.certif}"/>
                 </h:panelGrid>
     
                 <h:commandButton type="submit" action="#{UpdateGateway.submitUpdateGatewayAction}" id="submitUpdateGateway" 
                                                 value="#{bundle.submit}" styleClass="default_button"/>
    </h:form>
    voici mon code java:
    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
     
    public class UpdateGateway {
        private String authSelected;
        private String certif;
        private boolean isMendatoryCertif = true;
     
        public UpdateGateway() throws NamingException {
            if (getGateway().getSecurityType() == null) {
                authSelected = SecurityType.REGULAR.toString();
            } else {
                authSelected = getGateway().getSecurityType().toString();
            }
     
            if(authSelected.equals(SecurityType.REGULAR.toString())) {
                isMendatoryCertif = false;
            }
            certif = getGateway().getCertificateAlias();
            System.out.println("constructeur: " + certif);
        }
     
        public void AuthentificationValueChanged(ValueChangeEvent event){
            final String value = event.getNewValue().toString();
            if(value.equals(SecurityType.SSL.toString())) {
                isMendatoryCertif = true;
            } else {
                certif = null;
                isMendatoryCertif = false;
            }
            System.out.println("listener: " + certif);
        }
     
        public String getCertif() {
            return this.certif;
        }
     
        public void setCertif(final String certif) {
            this.certif = certif;
            System.out.println("setteur: " + certif);
        }
    }

  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
    Par défaut
    il est desabled le champs input quad tu envoies le formulaire?

  3. #3
    Membre éclairé
    Inscrit en
    Mars 2005
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 226
    Par défaut
    Dans le constructeur j'ai ajouté l'affichage de la valeur de la variable "isMandatoryCertif" à la fin du constructeur elle est encore à false. Donc mon champ est disabled il deviendra actif au moment où le listener est excécuté.

    Je ne vois pas comment contourner la chose car à l'initialisation mon champ doit être disabled (la premiere fois où l'on arrive sur la page)

  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
    Par défaut
    Citation Envoyé par Edta Voir le message
    Dans le constructeur j'ai ajouté l'affichage de la valeur de la variable "isMandatoryCertif" à la fin du constructeur elle est encore à false. Donc mon champ est disabled il deviendra actif au moment où le listener est excécuté.

    Je ne vois pas comment contourner la chose car à l'initialisation mon champ doit être disabled (la premiere fois où l'on arrive sur la page)
    tu dois réactualiser la page avant d'envoyer le formulaire. si tu utilises richfaces c'est facile à faire..

  5. #5
    Membre éclairé
    Inscrit en
    Mars 2005
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 226
    Par défaut
    non, je ne dois utiliser que les librairies de base. Comment puis je reactualiser la page ? et a quel moment dois je le faire?

  6. #6
    Membre expérimenté
    Inscrit en
    Mai 2004
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 335
    Par défaut
    disable ton composant en utilisant du javascript

  7. #7
    Membre éclairé
    Inscrit en
    Mars 2005
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 226
    Par défaut
    Je prefere ne pas utiliser le javascript

  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
    Par défaut
    utilise readOnly au lieu de desabled.

  9. #9
    Membre éclairé
    Inscrit en
    Mars 2005
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 226
    Par défaut
    J'essayer d'utiliser l'attribut readonly à la place de disabled mais le résultat est identique. Je ne rentre pas dans le setteur au moment des phases JSF

  10. #10
    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
    Citation Envoyé par Edta Voir le message
    J'essayer d'utiliser l'attribut readonly à la place de disabled mais le résultat est identique. Je ne rentre pas dans le setteur au moment des phases JSF
    sinon ajoute un inputHidden qui prend la même valeur

  11. #11
    Membre éclairé
    Inscrit en
    Mars 2005
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 226
    Par défaut
    Je ne comprend pas vraiment se que tu veux dire.

    Si je fais ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <h:panelGroup>
                                            <h:inputText readonly="#{not UpdateGateway.isMendatoryCertif}" value="#{UpdateGateway.certif}"/>
                                            <h:inputHidden value="#{UpdateGateway.certif}"/>
                                        </h:panelGroup>
    Cette fois je vois qu'il rentre dans le setteur mais la valeur mise est vide et pas celle saisie.
    Mon log:
    constructeur: null
    Mandatory: false
    listener: null
    name
    setteur:

  12. #12
    Membre expérimenté
    Inscrit en
    Mai 2004
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 335
    Par défaut
    ya pas autre moyen que du javascript ou css.
    sinon tu doit ecrire ton propre composant

  13. #13
    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
    je ne pense pas qu'il y'a besoin de javascript ici,
    faut que tu explique ce que tu fais, mais je ne vois pas là un problème,
    quand la page s'affiche, si l'utilisateur peut saisir la valeur, ce n'est pas normal que la valeur est nulle.
    voilà un bout de code tu peux tester, ça fonctionne bien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <h:inputText value="#{bean.login}" id="input_text" readonly="#{!bean.connected}" /> 
     <a4j:commandButton value="Change Connected" reRender="input_text">
    <a4j:actionparam name="change"
    value="#{!bean.connected}"
    assignTo="#{bean.connected}"></a4j:actionparam>
    <a4j:actionparam name="set_input" value="test"
    assignTo="#{bean.login}"></a4j:actionparam>
    </a4j:commandButton>
     
    <a4j:commandButton action="#{bean.send}" value="Send" type="submit" />
    le button change Connected change la valeur de true à false et inversement.

  14. #14
    Membre éclairé
    Inscrit en
    Mars 2005
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 226
    Par défaut
    a4j se n'est pas une librairie richface?

    Je n'ai le droit qu'aux libraries de base.

  15. #15
    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
    Citation Envoyé par Edta Voir le message
    a4j se n'est pas une librairie richface?

    Je n'ai le droit qu'aux libraries de base.
    ouii c'est richfaces ..

    mais, j'utilise a4j juste pour modifier la valeur du booléen en ajax, si la valeur change coté java ou avec un envoie de formulaire, ça reste la meme chose et tu devrais récupérer la valeur coté bean.

  16. #16
    Membre éclairé
    Inscrit en
    Mars 2005
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 226
    Par défaut
    Oui mais même si l'utilisation est pour javax cela ne change pas le fait que je doive intégrer la librairie au projet. Pour l'instant je vais tout le temps laisser le champ actif et si la valeur doit etre et qu'elle ne l'est pas alors j'afiche un message d'erreur.

    Je verrai plus tard pour faire ca avec javascript (quand j'aurai un moment pour me documenter dessus)

    Merci pour ton aide.

Discussions similaires

  1. [AC-2010] Ne pas afficher un séparateur lorsque la valeur du champ est nulle
    Par Stéphane Abras dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 11/06/2013, 10h50
  2. Valeur d'un champ Numerique à nulle
    Par FtF Nemesis dans le forum VBA Access
    Réponses: 2
    Dernier message: 07/07/2011, 11h59
  3. Réponses: 5
    Dernier message: 09/12/2007, 16h20
  4. [SQL] Mettre la valeur d'un champ à "null"
    Par lodan dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 22/11/2006, 19h08
  5. message d'erreur lorsque j'essaie de changer la valeur d'un champ.
    Par cladsam dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 08/06/2006, 14h00

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