在Grails中表示货币(价值和货币)的最佳实践

在Grails中表示货币(价值和货币)的最佳实践,grails,currency,Grails,Currency,我对Java货币类型及其在Grails中的使用不太熟悉。虽然我还没有使用它,但是我看到了一个标签,可以在视图中使用。那么,我如何在域类中表示它呢 class Money { BigDecimal value Currency currency .... } 或者是否有更好的sol,它比较不同的货币对象,根据区域设置(“,”在EU中表示分隔符等)进行格式比较 提前谢谢。 爸爸。你可能想看一看。它提供了一个货币类别,用于持有不同货币的货币金额。它们可以嵌入到域类中,如下所示: class Cust

我对Java货币类型及其在Grails中的使用不太熟悉。虽然我还没有使用它,但是我看到了一个标签
,可以在视图中使用。那么,我如何在域类中表示它呢

class Money {
BigDecimal value
Currency currency
....
}
或者是否有更好的sol,它比较不同的货币对象,根据区域设置(“,”在EU中表示分隔符等)进行格式比较

提前谢谢。
爸爸。

你可能想看一看。它提供了一个货币类别,用于持有不同货币的货币金额。它们可以嵌入到域类中,如下所示:

class CustomerTransaction {
    Date date = new Date()
    Money amount

    static embedded = ['money']
}

使用JScience库。遗憾的是,它还没有出现在Maven回购协议中,也没有Groovy包装器使其更具Groovier(TM)。

您应该使用BigDecimal。Groovy和Grails对它作为GORM域类上的数据类型也有极好的本机支持。有关使用它背后的原因,请参见此处


如果您还想获得实时汇率更新,那么下面的插件可以帮助您从雅虎财务中获取所有汇率。

由于原始答案似乎过时,您可能需要查看最新的、当前维护的汇率

看起来很有趣。使用Money的域类会是什么样子?基础列类型是什么?感谢您的评论。。货币插件给了我一个如何实现自己的想法。不要使用货币插件。在Grails域类中自己处理货币没有什么大不了的,Hibernate会自动将货币代码(3个字母)保存为varchar。您只需通过使用字符串值定义getter和setter来帮助Grails UI,因为不存在具有字符串参数的构造函数:类MyDomainObj{BigDecimal amount Currency static transient['currencyCode']def setCurrencyCode(String currencyCode){Currency=Currency.getInstance(currencyCode)}字符串getCurrencyCode(){return currency.getCurrencyCode()}}在GSP中使用“currencyCode”。