2010-11-28 25 views
4

J'ai plusieurs champs sur lesquels je dois valider la longueur. Ce n'est pas un problème avec l'étiquette <f:validateLength>. Je peux également ajouter un message personnalisé pour ce validateur.Ajouter un message d'erreur pour la balise <f: validateLength> personnalisée pour un champ

Le problème est que le message doit être personnalisé pour chaque champ. Par exemple. firstname champ doit avoir des messages "Prénom trop court" ou "Prénom trop long", surname devrait avoir "Nom trop court" ou "Nom de famille trop long" etc Comment faire pour cela dans JSF2.0?

Répondre

5

Utilisez l'attribut label.

<h:inputText label="First name"> 

Le {1} dans le modèle de message sera substitué par cela.

javax.faces.validator.LengthValidator.MAXIMUM: {1} too long.  
javax.faces.validator.LengthValidator.MINIMUM: {1} too short. 
+0

Et si j'ai besoin de plus de personnalisation? Par exemple. "Prénom trop court", mais "Veuillez fournir un mot de passe plus long" Est-ce possible avec JSF? Ou peut-être avec JSR303 Bean Validation. Là, je peux spécifier un message pour chaque champ, mais je ne peux pas spécifier un message séparé pour une valeur trop courte et une valeur trop longue. – amorfis

+2

Si vous voulez des messages différents, vous devez fournir votre propre 'LengthValidator 'personnalisé et passer les conditions nécessaires comme' '. Il est disponible par 'UIComponent # getAttributes()' dans la méthode 'validate()'. Le nom de base du paquet de messages que vous avez défini dans 'faces-config.xml' est d'ailleurs disponible par' Application # getMessageBundle() 'avec lequel vous pouvez obtenir le paquet de messages par' ResourceBundle # getBundle() 'dans le validateur . Voir aussi [cette réponse] (http://stackoverflow.com/questions/3138271/jsf-how-can-i-get-the-msg-from-message-property-as-a-string-in-java-code/3140182 # 3140182). – BalusC