无法将给定对象格式化为数字

时间:2014-03-21 13:50:11

标签: jsf-2 el

这段代码抛出了我:无法将给定的Object格式化为数字

  private BigDecimal notional;

 public String getNotional() {
    System.out.println("notional:" + notional);
    otherSymbols.setDecimalSeparator(',');
    otherSymbols.setGroupingSeparator('.'); 
    System.out.println("notional:" + notional);
    String format = df.format(notional);
    System.out.println("notional2:" + format);


    if(notional!=null)
    notional = new BigDecimal(df.format(notional));
    return notional.toString();
 }

为什么?

   javax.el.ELException: /pages/emir/acknowledgedTransactions.xhtml @484,160 value="#{ackTxContractBean.firstleg.notional}":
    java.lang.IllegalArgumentException: Cannot format given Object as a Number

名义:2279713.86 notional2:2.279.713,86

1 个答案:

答案 0 :(得分:2)

可能是因为你传递格式而不是字符串。

您要定位的

BigDecimal构造函数接受一个字符串(BigDecimal(String))DecimalFormat。格式方法似乎都不接受字符串。只需创建您的BigDeciamal,然后再格式化。无论如何,这是什么类型的名义。

找到这个thread似乎可以做你想要的。