[JAVA] Lors de l'affichage d'un message avec le validateur personnalisé de JSF, la classe d'erreur de h: message n'est pas appliquée à moins que SEVERITY_ERROR ne soit défini dans le message.

environnement OS : macOS Hight Sierra Version10.13.2 Eclipse : Version: Neon.3 Release (4.6.3) GlassFish : 4.1.2 JSF : 2.2 JDK : 1.8

Veuillez saisir le mot de passe sur cet écran. ] J'ai défini un validateur personnalisé dans la zone de texte.

Screen Shot 2017-12-26 at 23.03.17.png

inputPassword.xhtml


<réduction>
<h:head>
  <title>écran de saisie</title>
  <h:outputStylesheet library="css" name="base.css"/>
</h:head>
<body>
<h:form>
  <h:outputLabel>S'il vous plaît entrer le mot de passe.</h:outputLabel>
  <br />
  <h:inputSecret id="password" value="#{passwordBean.password}">
    <f:validateRequired />
    <f:validateLength minimum="3" maximum="10" />
    <f:validator validatorId="passwordValidator" />
  </h:inputSecret>
  <h:message for="password" errorClass="error" />
  <br />
  <h:outputLabel>Déjà pour confirmation&nbsp;&nbsp;Veuillez le saisir une fois.</h:outputLabel>
  <br />
  <h:inputSecret id="rePassword" value="#{passwordBean.kakuninPassword}">
    <f:validateRequired />
  </h:inputSecret>
  <h:message for="rePassword" errorClass="error" />
  <br />
  <h:commandButton value="Envoyer" action="#{passwordBean.onClickSend}" />
</h:form>
</body>
</html>

base.css


@CHARSET "UTF-8";
.error {
    color: red;
}

Si vous ne définissez pas SEVERITY_ERROR, le style errorClass ne sera pas appliqué au message.

Screen Shot 2017-12-26 at 23.11.58.png

PasswordValidator.java


<réduction>
/**Validateur personnalisé pour l'écran de saisie du mot de passe. */
@FacesValidator(value = "passwordValidator")
public class PasswordValidator implements Validator {
    private static final String KINSHI = "password";

    @Override
    public void validate(FacesContext context, UIComponent component, Object value)
            throws ValidatorException {
        String inputedValue = (String) value;
        if (inputedValue.equals(KINSHI)) {
            FacesMessage errorMessage = new FacesMessage(KINSHI + "Ne peut pas être utilisé.");
            throw new ValidatorException(errorMessage);
        }
    }
}

Comme on le voit avec l'outil de développement du navigateur


<label>S'il vous plaît entrer le mot de passe.</label>
<br>
<input id="j_idt6:password" type="password" name="j_idt6:password" value="">
"le mot de passe ne peut pas être utilisé.
  "
<br>
<label>Déjà pour confirmation&nbsp;&nbsp;Veuillez le saisir une fois.</label>
<br>
<input id="j_idt6:rePassword" type="password" name="j_idt6:rePassword" value="">
<span class="error">Erreur de validation:Nécessite une valeur.</span>

Le réglage SEVERITY_ERROR a appliqué le style errorClass.

Screen Shot 2017-12-26 at 23.19.55.png

PasswordValidator.java


<réduction:D'autres sont les mêmes que le code ci-dessus>
            FacesMessage errorMessage = new FacesMessage(KINSHI + "Ne peut pas être utilisé.");
            errorMessage.setSeverity(FacesMessage.SEVERITY_ERROR);
            throw new ValidatorException(errorMessage);
<réduction:D'autres sont les mêmes que le code ci-dessus>

Comme on le voit avec l'outil de développement du navigateur


<label>S'il vous plaît entrer le mot de passe.</label>
<br>
<input id="j_idt6:password" type="password" name="j_idt6:password" value="">
<span class="error">le mot de passe ne peut pas être utilisé.</span>
<br>
<label>Déjà pour confirmation&nbsp;&nbsp;Veuillez le saisir une fois.</label>
<br>
<input id="j_idt6:rePassword" type="password" name="j_idt6:rePassword" value="">
<span class="error">Erreur de validation:Nécessite une valeur.</span>

Ce qui m'a aidé ...

Attribut errorClass: spécifie la classe CSS pour les messages d'erreur image.png

Recommended Posts

Lors de l'affichage d'un message avec le validateur personnalisé de JSF, la classe d'erreur de h: message n'est pas appliquée à moins que SEVERITY_ERROR ne soit défini dans le message.
Comment définir quand "Le constructeur Empty () n'est pas visible" se produit dans junit
La cause n'est pas visible lors de l'appel de méthodes d'autres classes en java
Lorsque le projet n'est pas affiché dans eclipse
Résumé de l'utilisation du jeu de proxy dans IE lors de la connexion avec Java
[Rails] Que faire lorsque la vue se réduit lorsqu'un message est affiché avec la méthode des erreurs
L'idée de couper quand l'erreur n'est pas résolue
[Rails] Lorsque le changement de disposition du dispositif n'est pas reflété
Trouvez le nombre de jours dans un mois avec Kotlin
[Spring Data JPA] L'ID personnalisé est attribué dans une séquence unique au moment de l'enregistrement.
Séparez une ligne de csv par une virgule demi-largeur non placée entre guillemets
Que faire lorsque javax.el.ELException: Pas une expression de méthode valide: s'affiche lorsque l'écran JSF est affiché