java - FMMT :formatNumber throws exception if number has length >= 20 digit?

标签 java jsp jstl

我有一个长度 > 20 位的货币字段

例如:99999999999999999999

当我使用时:

<fmt:formatNumber
     value="${crudShipmentForm.invoiceVat}"
     pattern="###,###,###,###,##0.000"  />

我收到了NumberFormatException? 如何使用 fmt:formatNumber 将此字段格式化为货币?

最佳答案

您已经超出了 long 的最大值,即 9223372036854775807

这表明您使用 String 来保存数字,而不是 BigDecimalBigInteger。它不仅在技术上是错误的类型,而且 EL 还会将其强制为 long。相应地修复它。

private BigDecimal invoiceVat; // And fix getter/setter as well.

或者,如果由于某些奇怪的原因您确实无法更改类型,请在 getter 中进行更改

public BigDecimal getInvoiceVat() {
    return new BigDecimal(invoiceVat);
}

关于java - FMMT :formatNumber throws exception if number has length >= 20 digit?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5486667/

相关文章:

java - JSP 中每个标记的逗号分隔值

java - 使用 Spring MVC 显示数据库数据时出错

java - 为什么我不能通过 "for"循环保存 EnumMap 条目,即使我使用 "final"?最佳解决方法?

java - 遍历大型 7*7 矩阵内的 3* 3 子矩阵时绑定(bind)异常错误的数组索引

java - 是否需要 <jnlp codebase ="..."> 参数?

java - 重定向时未找到带有 URI 的 HTTP 请求的映射

java - jsp中如何获取java类对象值

jsp - Tomcat 没有将 .jsp 转换为 servlet?

java - 如何为 Hibernate 编写返回两个实体的 jSTL 代码

java - 如何在自定义 View 中使最后的列和行大小相同