在Spring中为@NumberFormat使用不同的Locale

时间:2014-01-13 12:17:14

标签: spring locale number-formatting

我正在开发一个Spring 3项目,我需要格式化土耳其货币的Long字段。应用程序的默认Localeen_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注释。出于同样的原因,它给了我一个错误。

1 个答案:

答案 0 :(得分:1)

有许多方法,但您可以将AnnotationFormatterFactory<NumberFormat>的自定义实现注册为bean,以允许您手动处理格式。这是documentented in the Spring documentation section 6.6。文档中的示例甚至处理调整@NumberFormat行为的用例。