我遇到与货币格式有关的问题。在旧的源代码中,我们在UI上显示了很多fee value
,但它们从未格式化过。
现在我们要在显示之前基于Locale格式化它们。
当前代码如下所示:
private BigDecimal userFee;
public void setUserFee(BigDecimal userFee) {
this.userFee = userFee;
}
public BigDecimal getUserFee() {
return userFee;
}
在jsp页面上
<h:outputFormat value="#{beanName.userFee}" />
问题是许多页面上的fee value
次调度太多了。我能看到的唯一解决方案是逐个格式化它们,但看起来它不是一个好的选择。
我有两个问题:
在我的情况下格式化货币的最佳方式。
还有其他吗?
解决方案比逐个格式化所有fee value
更好。
谢谢。
答案 0 :(得分:-1)
我在最近的一个项目中所做的是创建一个包装BigDecimal的类,并覆盖它的tostring以根据需要对其进行格式化。根据您的抽象层,这个额外的层可能会给您带来问题。
public class Currency implements Serializable
{
private BigDecimal value;
public Currency(String val)
{
if(StringUtils.isNotEmpty(val))
this.value = new BigDecimal(val).setScale(2, BigDecimal.ROUND_HALF_UP);
}
public Currency(Double val)
{
if(val!=null)
this.value = new BigDecimal(val).setScale(2, BigDecimal.ROUND_HALF_UP);
}
public Currency(Float val)
{
if(val!=null)
this.value = new BigDecimal(val).setScale(2, BigDecimal.ROUND_HALF_UP);
}
public BigDecimal getValue()
{
return value;
}
@Override
public String toString()
{
if(value==null) return "";
return new DecimalFormat("0.00").format(value);
}
}