Frage

Meine message.properties enthält diese standardmäßig:

sein typeMismatch.java.lang.Double = Die Eigenschaft {0} muss eine gültige Zahl sein

Platzhalter {0} wird durch die Attributnamen ersetzt. Ich möchte das Label verwenden, die für das Frontend wie diese genutzt werden:

sein typeMismatch.java.lang.Double = Die Eigenschaft {wunderbares Etikett hier} muss eine gültige Zahl sein.

Mein erster Versuch:

seine typeMismatch.java.lang.Double = Property $ {Nachricht (Code: '0')}. Muss eine gültige Zahl sein

arbeitet Ursache nicht gibt es keine ‚0‘ Nachricht. Die Dokumentation ist in diesem Punkt nicht klar. Jeder bekam eine Idee für diese?

Edit:

Nun, ich kann eine Fehlermeldung für jedes Attribut wie folgt schreiben:

typeMismatch.Book.booknumber = Objekt Booknumber muss eine gültige Zahl sein.

Aber das scheint wie eine Menge zusätzlicher Arbeit ...

War es hilfreich?

Lösung

gemacht Also habe ich einen kleinen Fehler gemacht .. es ist damm einfach jetzt ... Ich kann es hier beantworten werde. Vielleicht in dieser jemand läuft:

Mein Fehler war:

typeMismatch.java.lang.Double=Property {0} must be a valid number

{0} ersetzt wurde durch die Attribute Name.

Der Grund dahinter war, dass Grails API rendererror für die korrekten Klassennamen sucht und Eigenschaften.

Beispiel:

meine Klasse namens Buch und Objektnummer ist.

In meinen Nachrichteneigenschaften:

book.number = Booknumber

Für i18n alles hat gut funktioniert, aber wenn die Fehlermeldung auftritt, hat es zeigt die folgende:

"Property number must be a valid number."

Correct Version in Nachrichteneigenschaften:

Book.number = Booknumber

Werke für mich jetzt. : -)

Andere Tipps

Awesome! Vielen Dank für Ihren Beitrag! Wenn es auf dem ersten nicht Arbeit für mich getan hat, dauerte es einige Zeit, zu erkennen, dass ich vor dem Eigenschaftsnamen die vollständig qualifizierten Klassennamen verwenden benötigt. So lautet die Syntax:

package.ClassName.propertyName=Label

Sehr hilfreich! Danke noch einmal! Al

Spring Datenbindung Fehler Validatoren wollen ( „{0}“ muss eine gültige Zahl sein) fullClassName.fieldName Kurzklassennamen und / oder .label nicht erkannt werden, finden Sie org.springframework.validation.DefaultBindingErrorProcessor#getArgumentsForBindError

Grails Validatoren ( "{0} muss eine gültige E-Mail-Adresse sein") wollen FQClassName.fieldName.label oder classPropertyName.fieldName.label Hinzufügen .label ist ein Muss, wie aus org.codehaus.groovy.grails.validation.AbstractConstraint#rejectValueWithDefaultMessage

Daher müssen Sie sowohl FQN/shortClassName.attributeName.label und FQN.attributeName die gleichen übersetzbar menschenfreundlichen Namen in beiden Validierungen zu erhalten.

http://jira.grails.org/browse/GRAILS-8369

Ein weiterer Hinweis, falls es die nächste Person hilft, wenn Sie eine unfreundliche Fehlermeldung bekommen wie „Property producer.employeeCount muss eine gültige Zahl sein“ versuchen, eine Eigenschaft Hinzufügen einfach producer.employeeCount zu Ihrer messages.properties Datei mit dem Namen , wie zum Beispiel:

producer.employeeCount = Anzahl der Mitarbeiter

Mindestens in Grails 2.0.0, dies in einer freundlicheren Meldung resultieren: „Luxusgut Mitarbeiter muss eine gültige Zahl sein“

Mit den vollständig qualifizierten Klassennamen (zum Beispiel com.example.domain.Client.employeeCount), mit oder ohne „.label“ am Ende nicht für mich arbeiten.

Hope, das hilft jemand.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top