JSF-Validierung Nachricht
Ich bin mit JSF 1.2 und Richfaces 3.3.ENDGÜLTIG. Ich habe eine inputText
was muss eine Zahl zwischen 1 und 999999999999.
<h:inputText id="prodId" required="true" value="#{product.productId}" maxlength="12" >
<f:validator validatorId="anotherValidatorValidator" />
<f:validateLongRange minimum="1" maximum="999999999999"/>
</h:inputText>
Möchte ich meine prüfungsmeldung zu sagen im Grunde, muss der Benutzer geben Sie eine Zahl zwischen 1 und 99...9. Im Fall, dass ich geben Sie die Zahl -1 ein und senden das Formular, dies ist die Nachricht, die angezeigt wird, die ist, was ich will.
Wenn ich aber Briefe schreiben, in dem Bereich, sagen wir 'abcd' ich :
prodId: 'abcd' muss eine Zahl zwischen -9223372036854775808 bis 9223372036854775807 Beispiel: 98765432
Diese Nachricht ist verwirrend für den Benutzer, weil, wenn die vorgeschlagene negative zahlen vorgelegt werden, die anderen validateLongRange
validator werfen einer Nachricht, jetzt die Frage, für die zahlen zwischen den richtigen Bereich.
Die zweite Meldung tritt auf, weil ein ConverterException
wird ausgelöst, wenn die submittes String ist gegossen, um eine Lange (das ist der Typ der backing-bean-Eigenschaft), und die Nachricht javax.faces.component.UIInput.CONVERSION_MESSAGE_ID
erscheint.
Kann ich das irgendwie überschreiben (nicht für alle ConverterException Fällen, nur die speziellen), oder die Botschaft von der anderen validateLongRange
erscheinen?
- JSF-1.x oder 2.x? Sie haben
<message-bundle>
imfaces-config
? - JSF 1.2 und richfaces 3.3.3.FINAL
- Ich habe nicht ein <message-bundle> nur <resource-bundle>. Allerdings würde ich nicht wollen, überschreiben Sie die CONVERSION_MESSAGE_ID für alle Fälle, wenn dies ist, was Sie vorschlagen. Macht es Sinn für andere Fälle.
- Nein, nur zur Erleichterung der Nachrichtenübermittlung 🙂 Ohne Sie haben zu fest es sich selbst, oder importieren JSF-Implementierung bestimmter Klassen zu packen, die gewünschte Nachricht.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dass die Nachricht tatsächlich aus
javax.faces.converter.LongConverter.LONG_detail
und würde nur angezeigt, wenn Sie konfiguriert habenh:message(s)
mitshowSummary="false"
undshowDetail="true"
. Die Standard - (Inhaltsangabe) - Nachricht ist ansonstenjavax.faces.converter.LongConverter.LONG
die{2}: ''{0}'' must be a number consisting of one or more digits.
was wiederum mehr Sinn macht.Wenn Sie das message-detail-Anzeige ist auch nicht das, was Sie wollen und Sie wirklich wollen, um die converter-display-genau die selbe Botschaft wie die
LongRangeValidator
, dann Ihre beste Wette ist, um einen benutzerdefinierten Konverter zeigt die gewünschte Nachricht. Sie haben jedoch zu fest die Nachricht selbst schon seit JSF unterstützt nicht alle API-Einrichtungen, greifen die Standard-Nachricht Vorlage.