1

我是 Grails (2.2.0) 的新手,并试图弄清楚如何在视图中格式化双精度值。我有很多,因此如果可能的话,我更喜欢其中一个配置文件中的一些代码。

视图中的所有值都使用 g:field ... type="number" ... 格式化

在 resources.groovy 我有这个

beans = {
localeResolver(SessionLocaleResolver) {
defaultLocale= Locale.ENGLISH
Locale.setDefault (Locale.ENGLISH)
}
}

在我使用的 messages.properties 中

default.number.format=#'###'###.#

我不需要 i18n。我删除了那里的所有其他文件。

此问题仅存在于视图中。所有数据都正确保存。

这里有一些我想要的视图示例:

输入 10 输出 10

输入 0 输出 0

输入 0.775 输出 0.775

输入 0.7 输出 0.7

输入 1234567.12345 输出 1'234'567.12345

最后一个示例不是 ENGLISH 的标准格式。而不是千位分隔符,我想要'

我想如果我使用

default.number.format=#'###'###.#

我不需要用 g:formatNumber 格式化每个值。

我很感激任何帮助。提前致谢!

编辑

以下是我的问题:

为什么 default.number.format=#'###'###.# 在 messages.properties 中不起作用?

例如,我认为这是:

<g:field name="mydouble" size="8" maxlength="20" type="number" value="${fieldValue(bean: myInstance, field: 'mydouble')}"/>

如何在此字段上使用 g:formatNumber 标签。我已经阅读了 Grails 文档,但显然我在理解它时遇到了问题。

我写道我是一个初学者,因此我可能遗漏了一些对于了解 Grails 的人来说非常明显的东西。

4

3 回答 3

1

我不确定我是否理解这个问题,但是看看这是否适合你:

<g:field value="${g.formatNumber(number: fieldValue(bean: personInstance, field: 'minPrice'), format: g.message(code: 'default.number.format'))}" />
于 2013-02-20T01:07:09.727 回答
0

fieldValue在 GSP 中呈现您的数字时尝试使用。

<g:field value="${fieldValue(bean: personInstance, field: 'minPrice')}" />

不确定这是否是它不使用默认值的问题,因为您缺少问题中的一些细节。所以在这里在黑暗中拍摄。

于 2013-02-18T15:00:06.150 回答
0

那么,您需要使用 a'作为小数分隔符吗?试试这样的格式化方法:

class NumberUtilities {
    static String format(double d) {
        def format = new DecimalFormat()
        def symbols = format.decimalFormatSymbols
        symbols.groupingSeparator = '\''
        format.decimalFormatSymbols = symbols
        return format.format(d)
    }
}

然后在你看来写${NumberUtilities.format(1234567.12345)}

这只是一个想法,根据您需要的其他格式规则为方法添加更多格式。

于 2013-02-18T15:06:27.387 回答