2014-01-13 8 views
5

ich auf einem Frühlings-3-Projekt arbeite und ich brauche ein Long Feld für türkische Währung zu formatieren. Der Standard Locale der Anwendung ist en_US. Ich benutzte die @NumberFormat Anmerkung wie folgt:Verwenden Verschiedene Locale für @NumberFormat im Frühjahr

@NumberFormat(style=NumberFormat.Style.CURRENCY) 
public Long getBudgetLimit() { 
    return budgetLimit; 
} 

Die Anmerkung Werke und formatiert das Formularfeld in Englisch locale. Allerdings muss ich das türkische Gebietsschema für dieses Feld verwenden. Gibt es eine Möglichkeit das Gebietsschema eines einzelnen Feld oder eine Seite anders als die Anwendung des Locale zu setzen?

Bearbeiten: Ich habe gerade die Antwort selbst gefunden. Verwenden Sie einen benutzerdefinierten Editor in der Steuerung wie folgt:

NumberFormat numberFormat = NumberFormat.getNumberInstance(new Locale("tr","TR")); 
dataBinder.registerCustomEditor(Long.class, new CustomNumberEditor(Long.class,numberFormat, true)); 

und verwenden Sie nicht die @NumberFormat Anmerkung. Aus dem gleichen Grund gab es einen Fehler für mich.

Antwort

1

Es gibt viele Möglichkeiten, aber man könnte zum Beispiel eine benutzerdefinierte Implementierung von AnnotationFormatterFactory<NumberFormat> als Bean registrieren, die Sie die Formatierung manuell zu handhaben würde ermöglichen. Dies ist documentented in the Spring documentation section 6.6. Das Beispiel in der Dokumentation behandelt auch den Anwendungsfall von @NumberFormat ‚s Verhalten anpassen.

+0

Vielen Dank, dies ist eine umfassendere und zentralisierte Lösung (Ändern @ NumberFormat Verhalten in der gesamten Anwendung). –