2016-05-04 20 views
2

In meinem Projekt habe ich einen Standard DateField Format als "dd MMM yyyy". Ich habe setDateFormat ("dd MMM yyyy") verwendet, um dieses Format zu sehen. Aber jetzt möchten Benutzer auch die Formate "MM/TT/JJJJ", "MM-TT-JJJJ" und "MM TT JJJJ" eingeben, wobei das anzeigbare Datum immer noch "TT MMM JJJJ" sein muss.Vaadin - PopupDateField akzeptiert keine Eingabeformate

Gerade jetzt, wenn ich "31/01/2016" im DateField mit setDateFormat("dd MMM yyyy") eintrage, erhalte ich das "Datumsformat nicht erkannt" -Fehler.

Meine Frage ist, wie kann ich ein Datefield akzeptieren mehrere Datumsformat Eingaben (nicht mit der Kalenderauswahl).

Jede Hilfe wird sehr geschätzt. Danke für das Lesen der Post !!!

Antwort

3

können Sie eine Methode überschreiben handleUnparsableDateString:

public class MyDateField extends DateField { 

    @Override 
    protected Date handleUnparsableDateString(String dateString) throws Converter.ConversionException { 
     return super.handleUnparsableDateString(dateString); 
    } 
} 

Diese Methode wird aufgerufen, wenn DateField nicht in der Lage ist, den Eingang zu analysieren. Sie können die Eingabe in der Methode analysieren und eine korrekte Date Instanz zurückgeben.

+0

Danke Henri !! Aber ich verwende PopupDateField, das mit dem Vaadin-Designer erstellt wird, so dass ich nicht weiß, wie ich die Initialisierung von PopupDateField überschreiben kann, die von Vaadin Designer Generated Java-Datei ausgeführt wird. Ich habe versucht, die Override-Version auf DateField neu zuzuweisen, aber es ist nutzlos. –