为什么JSTL parseNumber解析1000.0到10000?

时间:2018-02-19 13:52:25

标签: parsing types jstl

我有一个输入表单,我想插入一些数字并计算一些结果。所以我的输入字段看起来像

<fmt:parseNumber var = "a" type = "number" 
    value = "${object.someAttribute}" integerOnly = "true"/>

<input type="number" name="someAttribute" required pattern="[0-9]" value="${a}" />

我想关注:首次访问时,用户应插入一个数字(整数)。在计算中,所有值均为Double以防止铸造副作用。刷新站点/用户想要重复计算时,应使用最近使用的值预设输入字段。因此,我尝试fmt:parseNumber将对象的Double值解析为Integer

首先尝试省略integerOnly = "true",但收到错误(因为“1000.0”不是有效输入,这在我指定pattern="[0-9]"时是可以理解的。)

但设置integerOnly后,它会将值从1000.0更改为10000。我究竟做错了什么?我怎么解析它来实现我的目标呢?

1 个答案:

答案 0 :(得分:1)

如果您使用的是EL 2.2+,则可以通过在Double对象上调用非getter方法将double转换为整数:

${yourDouble.intValue()}

请参阅: