Validator Message in JSF

A

abcde

Gast
Hallo,

ich versuche die ValidatorMessage durch validatorMessage manuell zu ändern. Bei zwei von 3 Feldern funktioniert das auch. Beim 3. Leider nicht und ich seh nicht was ich anders mach.

meine JSF
[XML]<h:form>

ISBN: <h:inputText id="isbn" value="#{books.isbn}" required="true" validatorMessage="ISBN has to be a number"/><br/>
Title: <h:inputText id="title" value="#{books.title}" required="true" validatorMessage="Title has to be a word between 2 and 20 characters"/><br/>
Author: <h:inputText id="author" value="#{books.author}" required="true" validatorMessage="Author has to be a word between 2 and 20 characters"/><br/>
Quantity: <h:inputText id="quantity" value="#{books.quantity}" required="true"/><br/>
<h:commandButton id="insert" action="#{books.insertBook()}" value="insert" />
</h:form><br/>[/XML]

Die zugehörige MessageBean:

Java:
@Size(min = 10, max = 10)
    private int isbn;
    @Size(min = 2, max = 20)
    private String title;
    @Size(min = 2, max = 20)
    private String author;
    private int quantity;

Das Ergebnis:

Insert A New Book

ISBN: 0sfd
Title: s
Author: s
Quantity: 0

j_idt3:isbn: Bei '0sfd' muss es sich um eine Zahl mit einer oder mehreren Ziffern handeln.
Title has to be a word between 2 and 20 characters
Author has to be a word between 2 and 20 characters

Sieht jemand warum mir die Fehlermeldung nicht richtig angezeigt wird? Clear und Re-Build hab ich schon gemacht.
 
N

nillehammer

Gast
Das liegt am Datentyp int von isbn. Die anderen sind Strings. Dein Size-Constraint greift garnicht, weil JSF intern schon merkt, dass keine Zahl eingegeben wurde. Aber frag mich nicht, wie man die Message des JSF-internen Validators überschreibt....
 

mjustin

Aktives Mitglied
Das liegt am Datentyp int von isbn. Die anderen sind Strings. Dein Size-Constraint greift garnicht, weil JSF intern schon merkt, dass keine Zahl eingegeben wurde. Aber frag mich nicht, wie man die Message des JSF-internen Validators überschreibt....

Auf Stackoverflow habe ich dieses Beispiel gefunden (für JSF 2):

@NotNull(message = "{person.null.name}", groups = PersonNew.class)
private String name;

jsf 2.0 - JSF 2.0 + Bean Validation + more validation groups in one form - Stack Overflow
 
N

nillehammer

Gast
@NotNull(message = "{person.null.name}", groups = PersonNew.class)
private String name;
Das Beispiel passt in diesem Fall nur leider nicht. Hier soll nicht die Message einer Annotation geändert werden. Es soll die Message eines Fehlers geändert werden, der überhaupt nicht durch eine Annotation abgefangen wird (nämlich der Versuch der Zuweisung eines Strings zu einem int).
 
A

abcde

Gast
Hallo,

danke für eure Antworten.

Ich habe die @Size Annotation durch eine @Min() Annotation ersetzt, die für Typ int gedacht ist. Damit löse ich das zweite Problem, dass die @Size Annotation keine Auswirkung hatte. Die angepasste Fehlermeldung wird auch angezeigt, wenn ein Verstoß wegen der Annotation vorliegt.

Bisher habe ich Leider noch nicht gefunden, wie ich die interne Fehlermeldung überschreiben kann. Mein Problem ist die Sprache. Das komplette Program ist auf Englisch und ich kann mich nicht drauf verlassen, dass alle, die es anschauen deutsch verstehen. Lässt sich evtl. die Sprache umstellen? Meine IDE ist englisch nur mein System ist auf deutsch installiert.

Viele Grüße

abcde
 
N

nillehammer

Gast
Das Stichwort ist Locale. Diese bestimmt die Sprache der angezeigen Texte, das Format von Zahlen, Daten etc. Webanwendungen verwenden einen ausgeklügelten Mechanismus, um diese zu ermitteln. Dafür werten Sie i.d.R den Language Header des Requests aus. Ich selbst programmiere kein JSF, deswegen kann ich Dir hier keinen fertigen Weg zeigen. Aber als Einstieg in das Thema ist vielleicht folgender kurzer Artikel hilfreich: JSF Application : Locale
 

Ähnliche Java Themen

Neue Themen


Oben