我正在开发一个Spring 3项目,我需要格式化土耳其货币的Long
字段。应用程序的默认Locale
为en_US
。我使用@NumberFormat
注释如下:
@NumberFormat(style=NumberFormat.Style.CURRENCY)
public Long getBudgetLimit() {
return budgetLimit;
}
注释用于处理英语区域设置中的表单字段。但是,我需要在此字段中使用土耳其语区域设置。有没有办法设置单个字段或不同于应用程序区域设置的页面的区域设置?
编辑:我自己就找到了答案。使用控制器中的自定义编辑器,如下所示:
NumberFormat numberFormat = NumberFormat.getNumberInstance(new Locale("tr","TR"));
dataBinder.registerCustomEditor(Long.class, new CustomNumberEditor(Long.class,numberFormat, true));
并且不要使用@NumberFormat
注释。出于同样的原因,它给了我一个错误。
答案 0 :(得分:1)
有许多方法,但您可以将AnnotationFormatterFactory<NumberFormat>
的自定义实现注册为bean,以允许您手动处理格式。这是documentented in the Spring documentation section 6.6。文档中的示例甚至处理调整@NumberFormat
行为的用例。