2010-11-12 10 views
2

J'utilise JSF 1.2 et Richfaces 3.3.FINAL. J'ai un inputText qui doit être un nombre compris entre 1 et 999999999999.JSF Validation message

<h:inputText id="prodId" required="true" value="#{product.productId}" maxlength="12" > 
    <f:validator validatorId="anotherValidatorValidator" /> 
    <f:validateLongRange minimum="1" maximum="999999999999"/> 
</h:inputText> 

Je veux que mon message de validation à dire essentiellement que l'utilisateur doit saisir un nombre compris entre 1 et 99 ... 9. Dans le cas où j'entre le numéro -1 et soumettre le formulaire, c'est le message qui apparaît, ce que je veux.

Si j'écris des lettres cependant dans le domaine, par exemple 'abcd' je reçois:

PRODID: 'ABCD' doit être compris entre -9223372036854775808 à 9223372036854775807 Exemple: 98765432

Cette message est déroutant pour les utilisateurs car, si les nombres négatifs suggérés sont soumis, l'autre valideur validateLongRange lancera un message, demandant maintenant des nombres entre la plage correcte.

Le deuxième message se produit car un ConverterException est levé lorsque la chaîne Submittes est convertie en Long (qui est le type de la propriété du bean de sauvegarde) et le message javax.faces.component.UIInput.CONVERSION_MESSAGE_ID s'affiche. Puis-je en quelque sorte surcharger (pas pour tous les cas de ConverterException, juste le spécifique), ou faire apparaître le message de l'autre validateLongRange?

+0

JSF 1.x ou 2.x? Avez-vous '' dans 'faces-config'? – BalusC

+0

JSF 1.2 et richfaces 3.3.3.FINAL –

+0

Je n'ai pas de , seulement un . Cependant, je ne voudrais pas remplacer le CONVERSION_MESSAGE_ID pour tous les cas, si c'est ce que vous suggérez. Cela a du sens pour d'autres cas. –

Répondre

2

Ce message est en fait venir de javax.faces.converter.LongConverter.LONG_detail et apparaîtrait que lorsque vous avez configuré h:message(s) avec showSummary="false" et showDetail="true". Le message par défaut (résumé) aurait sinon été javax.faces.converter.LongConverter.LONG qui est {2}: ''{0}'' must be a number consisting of one or more digits., ce qui à son tour a plus de sens.

Si le changement de l'affichage des détails du message n'est pas ce que vous recherchez et que vous voulez vraiment que le convertisseur affiche exactement le même message que le LongRangeValidator, alors votre meilleur pari est de fournir un convertisseur personnalisé qui affiche le message. Vous devez toutefois coder le message vous-même car JSF ne prend pas en charge les fonctionnalités de l'API pour récupérer le modèle de message par défaut.