2016-04-01 18 views
0

Ich benutze DateTextField für Bearbeitungsdatum Feld, wenn Benutzer ein ungültiges Datum eingeben (zB geben Sie ein beliebiges Zeichen Datum) dann in über das Formular senden DateTextField intern erstellen ungültige Datum Nachricht basierend auf ID.Wicket DateTextField benutzerdefinierte Fehlermeldung

Mein Code ist:

form.add(DateTextField.forDatePattern("orderStartDate", new DateModel(new PropertyModel<Date>(this, "defaultModelObject.startDate")), "dd/MM/yyyy")); 

Nun, wenn ein Benutzer ein ungültiges Datum dann in Form tritt einreichen, DateTextField die Nachricht erzeugt.

"Der Wert von 'orderStartDate' ist kein gültiges Datum."

In der Nachricht 'orderStartDate' ist ID, die ich auf DateTextField gesetzt habe;

Jetzt möchte ich benutzerdefinierte Nachricht für diesen Fehler der oben genannten Nachricht erstellt werden;

Antwort

3

Der Standardwert stammt aus IConverter Ressourcenbündel Schlüssel: https://github.com/apache/wicket/blob/77b4df63f44d00e9350068686e4b091f730f167f/wicket-core/src/main/java/org/apache/wicket/Application.properties#L16

Sie benötigen eine spezifischere ein in YourApplication.properties es außer Kraft setzen bieten, zum Beispiel:

orderStartDate.IConverter=Please provide a date with pattern dd/MM/yyyy. 
+0

make sence mir paaren. Gibt es eine Sache wie, wo ich dynamische Eigenschaft einstellen kann. –

+0

Ja! Weitere Informationen finden Sie im javadoc von StringResourceModel. –

0

Die Validierer berichten in der Regel ihre Klasse in das Fehler-Objekt. Wenn Wicket das FeedbackMessage generiert, wird es in dem StringResourceModel nachgeschlagen. Also, wenn Sie .properties oder .properties.xml Dateien für Formulierung verwenden, sollten Sie die FeedbackMessage mit dem Schlüssel von iConverter hinzuzufügen (die den Fehler gemeldet)

<entry key="IConverter.Date">Please use the format dd/MM/yyyy!</entry> 

Die gleiche Geschichte für erforderlich FormComponents

<entry key="Required">Please provide a value!</entry> 

Wenn Sie eines Tages Ihren eigenen Validator schreiben, geben Sie ihm einen Schlüssel und optionale Parameter.

private void error(IValidatable<String> validatable) { 
    ValidationError error = new ValidationError(); 
    error.addKey("id.exists"); 
    error.setVariable("id", valueThatIsNotValid); // variable held in class 
    ekpCmp.error(error); 
} 

und definieren die StringResource

<entry key="id.exists">The value ${id} already exists.</entry> 
Verwandte Themen