在 Spring 中对 @NumberFormat 使用不同的区域设置

2023-11-30

我正在开发一个 Spring 3 项目,我需要格式化Long土耳其货币字段。默认Locale该应用程序是en_US。我用的是@NumberFormat注释如下:

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

该注释在英语语言环境中工作并格式化表单字段。但是我需要在该字段中使用土耳其语语言环境。有没有办法将单个字段或页面的区域设置设置为不同于应用程序的区域设置?

Edit: 我自己找到了答案。在控制器中使用自定义编辑器,如下所示:

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

并且不要使用@NumberFormat注解。出于同样的原因,它给了我一个错误。


有很多方法,但您可以例如注册一个自定义实现AnnotationFormatterFactory<NumberFormat>作为一个 bean,它允许您手动处理格式。这是Spring 文档第 6.6 节中有记录。文档中的示例甚至处理调整的用例@NumberFormat的行为。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Spring 中对 @NumberFormat 使用不同的区域设置 的相关文章

随机推荐