【问题标题】:Cannot format given Object as a Number无法将给定对象格式化为数字
【发布时间】:2014-03-21 13:50:11
【问题描述】:

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

  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 名义2:2.279.713,86

【问题讨论】:

  • 吸气剂绝对不应该是这样的。您应该直接返回 national 未修改。
  • 如果我必须显示不同的数字格式,我必须做什么?同时我需要一个 Bigdecimal 来插入数据库?
  • 只需在正确的语言环境中使用<f:convertNumber>

标签: jsf-2 el


【解决方案1】:

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

BigDecimal 您的目标构造函数采用字符串 (BigDecimal(String)) DecimalFormat.format 方法似乎都没有采用字符串。只需创建您的 BigDeciamal,然后再格式化。无论如何,什么类型是概念性的。

找到了这个thread,它似乎可以满足你的需求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-22
    相关资源
    最近更新 更多