2010-11-28 3 views
4

Ich habe viele Felder, auf denen ich Länge validieren muss. Es ist kein Problem mit <f:validateLength> Tag. Ich kann auch eine benutzerdefinierte Nachricht für diesen Validator hinzufügen.Hinzufügen Fehlermeldung für <f: validateLength> Tag für ein Feld

Das Problem ist die Nachricht sollte für jedes Feld angepasst werden. Z.B. firstname Feld sollte Nachrichten haben "Vorname zu kurz" oder "Vorname zu lang", surname sollte "Nachname zu kurz" oder "Nachname zu lang" usw. Wie man das in JSF2.0 erreichen?

Antwort

5

Verwenden Sie das Attribut label.

<h:inputText label="First name"> 

Die {1} in der Nachrichtenschablone wird mit diesem ausgewechselt werden.

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

Was ist, wenn ich mehr Anpassung benötige? Z.B. "Vorname zu kurz", aber "Bitte längeres Passwort angeben" Ist das mit JSF möglich? Oder vielleicht mit JSR303 Bean Validation. Dort kann ich für jedes Feld eine Nachricht angeben, aber ich kann keine separate Nachricht für den Wert zu kurz und den Wert zu lang angeben. – amorfis

+2

Wenn Sie verschiedene Nachrichten wünschen, müssen Sie Ihren eigenen benutzerdefinierten 'LengthValidator' angeben und die notwendigen Bedingungen als '' übergeben. Es ist verfügbar durch 'UIComponent # getAttributes()' innerhalb 'validate()' Methode. Der Name der Nachrichtenpaket-Basis, wie Sie ihn in 'faces-config.xml 'definiert haben, ist übrigens über' Application # getMessageBundle() 'verfügbar, mit dem Sie das Nachrichtenpaket von' ResourceBundle # getBundle() 'innerhalb des Validators erhalten können . Siehe auch [diese Antwort] (http://stackoverflow.com/questions/3138271/jsf-how-can-i-get-the-msg-from-message-property-as-a-string-in-java-code/3140182 # 3140182). – BalusC

Verwandte Themen