Personnaliser le message d’erreur de validation dans JSF 2.0

Personnaliser le message d'erreur de validation dans JSF 2.0

Les messages d'erreur de conversion et de validation JSF standard sont trop détaillés, techniques ou parfois, pas vraiment lisibles par l'homme. Dans cet article, il vous montre comment personnaliser le message d'erreur de conversion ou de validation standard dans JSF 2.0.

Guide de synthèse

  1. Trouvez votre clé de message dans jsf-api-2.x.jar, fichier «Messages.properties».

  2. Créez votre propre fichier de propriétés, et mettez la même clé de message que celle trouvée dans le fichier «Messages.properties» ci-dessus, et remplacez-le par votre message d'erreur personnalisé.

  3. Enregistrez votre fichier de propriétés dans "faces-config.xml", mettez-le au niveau de l'application.

  4. Terminé.

1. Messages.properties

Tous les messages d'erreur de conversion et de validation standard JSF sont stockés dans le fichier «Messages.properties», qui peut être localisé à partir dejsf-api-2.x.jar, «javax aces\Messages.properties», voir figure ci-dessous:

jsf2-Custom-Validation-Error-Example-1

Voir une partie de ce fichier «Messages.properties»

...
# ===================================================================
# Converter Errors
# ===================================================================
javax.faces.converter.DateTimeConverter.DATE={2}: ''{0}'' could not be understood as a date.
javax.faces.converter.DateTimeConverter.DATE_detail={2}: ''{0}'' could not be understood as a date. Example: {1}
...
# ====================================================================
# Validator Errors
# ====================================================================
javax.faces.validator.LengthValidator.MAXIMUM={1}: Validation Error: Length is greater than allowable maximum of ''{0}''
javax.faces.validator.LengthValidator.MINIMUM={1}: Validation Error: Length is less than allowable minimum of ''{0}''
...

Par exemple,
1. <f:validateLength minimum=”5″ maximum=”10″ />
Si la validation de la longueur maximale échoue, JSF obtient «javax.faces.validator.LengthValidator.MAXIMUM».
Si la validation de la longueur minimale échoue, JSF obtient «javax.faces.validator.LengthValidator.MINIMUM».

2. <f:convertDateTime pattern=”d-M-yyyy” />
Si la validation de la date a échoué, JSF obtient «javax.faces.converter.DateTimeConverter.DATE_detail».

Note
Si vous ne savez pas quelle clé correspond à quelle balise de validation, affichez simplement le message d'erreur une fois et comparez-le avec «Messages.properties», alors vous saurez quelle clé vous voulez remplacer.

2. Message d'erreur personnalisé

Créez un fichier de propriétés nommé «MyMessage.properties» (peut être n'importe quel nom), mettez la clé de message et le message d'erreur personnalisé à l'intérieur. Plus tard, placez ce fichier de propriétés dans votre dossier de ressources de projet.

MyMessage.properties

javax.faces.converter.DateTimeConverter.DATE={2}: ''{0}'' could not be understood as a date.
javax.faces.converter.DateTimeConverter.DATE_detail=Invalid date format.

javax.faces.validator.LengthValidator.MINIMUM=Minimum length of ''{0}'' is required.

Maintenant, vous allez personnaliser le message d'erreur de validation pour «javax.faces.validator.LengthValidator.MINIMUM» et le message d'erreur de conversion pour «javax.faces.converter.DateTimeConverter.DATE_detail».

Note
Pour la clé de message XXX_detail, vous devez également remplacer sa clé parente (message récapitulatif), qui est XXX sans le «_detail» derrière; Sinon, JSF ignorera votre nouveau message d'erreur personnalisé et continuera à recevoir le message d'erreur standard de «Messages.properties». Peut-être s'agit-il d'un bogue dans JSF 2.0?

3. Enregistrer le groupe de messages

Enregistrez votre fichier de propriétés personnalisées dans «faces-config.xml», placez-le au niveau de l'application.

faces-config.xml



     
      
        com.example.MyMessage
      
     

4. Demo

Une page JSF, ajoutez à la fois la validation<f:validateLength /> et<f:convertDateTime />.




    

        

Customize validation error message in JSF 2.0

Enter your username : Enter your DOB :

Lorsque la validation a échoué, affichez votre message d'erreur personnalisé maintenant.

jsf2-Custom-Validation-Error-Example-2

Télécharger le code source