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 :

Primefaces 7.0 - Impossble de valider un formulaire après un premier échec


Sujet :

JSF Java

  1. #1
    Membre averti
    Avatar de stc074
    Homme Profil pro
    Codeur du dimanche
    Inscrit en
    janvier 2009
    Messages
    997
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Codeur du dimanche

    Informations forums :
    Inscription : janvier 2009
    Messages : 997
    Points : 405
    Points
    405
    Billets dans le blog
    1
    Par défaut Primefaces 7.0 - Impossble de valider un formulaire après un premier échec
    Bonjour, j'ai un formulaire de connexion :
    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
      <p:tab id="login" title="#{login_bundle.login_tab}" titleStyle="color:#f50;font-weight:bold;">
                                        <p:outputLabel for="email_login" value="#{login_bundle.email_label}" class="sr-only"/>
                                        <p:inputText id="email_login" value="#{mainBean.user.email}" placeholder="#{login_bundle.email_label}"
                                                     required="true" requiredMessage="#{login_bundle.empty_field}" size="#{dataBean.EMAILMAXLEN}"
                                                     maxlength="#{dataBean.EMAILMAXLEN}" validator="emailLoginValidator" class="form-control">
                                            <p:ajax event="blur" global="false" process="email_login" update="email_login email_login_error"
                                                    partialSubmit="true"/>
                                        </p:inputText>
                                        <p:message id="email_login_error" severity="error" for="email_login"/>
                                        <p:outputLabel for="password_login" value="#{login_bundle.password_label}" class="sr-only"/>
                                        <p:password id="password_login" value="#{mainBean.user.password}" placeholder="#{login_bundle.password_label}"
                                                    required="true" requiredMessage="#{login_bundle.empty_field}" size="#{dataBean.PASSWORDMAXLEN}"
                                                    maxlength="#{dataBean.PASSWORDMAXLEN}"
                                                    class="form-control" lang="#{login_bundle.lang}">
                                            <f:validator validatorId="passwordLoginValidator"/>
                                            <f:attribute name="email" value="#{mainBean.user.email}"/>
                                        </p:password>
                                        <p:message id="password_login_error" severity="error" for="password_login"/>
                                        <p:outputLabel for="captcha_login" value="#{login_bundle.captcha_label}" class="sr-only"/>
                                        <p:captcha id="captcha_login" language="#{login_bundle.lang}" required="true"
                                                   requiredMessage="#{login_bundle.captcha_required}"/>
                                        <p:message for="captcha_login" severity="error"/>
                                        <p:commandButton value="#{login_bundle.login_button}" action="#{mainBean.actionLogin()}" class="submit-bt"
                                                         icon="fa fa-sign-in" partialSubmit="true" process="login"
                                                         update="login @widgetVar(growl)"/>
     
                                    </p:tab>
    Si je tente une première validation avec un mauvais mot de passe, ça échoue avec un message d'erreur (password_login_error), puis si je réessaie avec cette fois ci le bon mot de passe, il ne se passe rien, le message d'erreur du précédent échec reste comme si c'était bloqué, je ne peut valider mon formulaire.
    A votre avis à quoi est-ce du ?
    Merci

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    novembre 2006
    Messages
    7 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : novembre 2006
    Messages : 7 184
    Points : 9 307
    Points
    9 307
    Billets dans le blog
    1
    Par défaut
    Que font les validator ?
    On peut voir le code ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti
    Avatar de stc074
    Homme Profil pro
    Codeur du dimanche
    Inscrit en
    janvier 2009
    Messages
    997
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Codeur du dimanche

    Informations forums :
    Inscription : janvier 2009
    Messages : 997
    Points : 405
    Points
    405
    Billets dans le blog
    1
    Par défaut
    Bonjour, oui voila mes 2 validators :
    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
    @FacesValidator("emailLoginValidator")
    public class EmailLoginValidator extends SuperValidator implements Validator {
     
        public EmailLoginValidator() {
        }
     
        @Override
        public void validate(FacesContext fc, UIComponent uic, Object o) throws ValidatorException {
            this.fc = fc;
            this.uic = uic;
     
            String email = o.toString().toLowerCase();
     
            if (email == null) {
                errorSet(getBundle().getString("null_field"));
            } else if (email.isEmpty()) {
                errorSet(getBundle().getString("empty_field"));
            } else if (email.length() > Data.EMAILMAXLEN) {
                errorSet(getBundle().getString("too_long_field"));
            } else if (!Pattern.matches(Data.EMAILREGEX, email)) {
                errorSet(getBundle().getString("not_valid_field"));
            } else {
                User user = new User();
                try {
                    user.isEmailNotExists(email);
                } catch (MyException ex) {
                    errorSet(ex.getMessage());
                }
            }
        }
     
    }
    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
    @FacesValidator("passwordLoginValidator")
    public class PasswordLoginValidator extends SuperValidator implements Validator {
     
        @Override
        public void validate(FacesContext fc, UIComponent uic, Object o) throws ValidatorException {
            this.fc = fc;
            this.uic = uic;
            String password = o.toString();
            String email = (String) uic.getAttributes().get("email");
     
            if (password == null) {
                errorSet(getBundle().getString("null_field"));
            } else if (password.isEmpty()) {
                errorSet(getBundle().getString("empty_field"));
            } else if (password.length() < Data.PASSWORDMINLEN) {
                errorSet(getBundle().getString("too_short_field"));
            } else if (password.length() > Data.PASSWORDMAXLEN) {
                errorSet(getBundle().getString("too_long_field"));
            } else {
                User user = new User();
                try {
                    user.isLog(email, password);
                } catch (MyException ex) {
                    errorSet(ex.getMessage());
                }
            }
        }
     
    }
    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
    class SuperValidator extends SuperClass {
     
        /**
         * @return the bundle
         */
        public ResourceBundle getBundle() {
            return bundle;
        }
     
        protected FacesContext fc;
        protected UIComponent uic;
        private final transient ResourceBundle bundle = getValidatorsBundle();
     
        public SuperValidator() {
        }
     
        protected void errorSet(String message) {
            throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erreur : ", message));
        }
    Je les réutilise sur tous mes sites en général j'ai pas de problèmes mais là la configuration est différente vu que je soumet une seule partie du @form.
    Merci.

Discussions similaires

  1. Réponses: 3
    Dernier message: 07/05/2014, 21h20
  2. Réponses: 1
    Dernier message: 27/07/2013, 11h01
  3. valider un formulaire apres un choix dans une liste
    Par enzostar dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 07/12/2009, 09h52
  4. Valider un formulaire par une image
    Par Fleep dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 31/10/2004, 01h50
  5. [Struts]Validation de formulaire
    Par djoukit dans le forum Struts 1
    Réponses: 4
    Dernier message: 12/03/2004, 09h12

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