Parsing 为什么JSTL parseNumber解析1000.0到10000?

Parsing 为什么JSTL parseNumber解析1000.0到10000?,parsing,types,jstl,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}" /> 我想做以下

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

<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
值从对象解析为
整数

第一次尝试时,我省略了
integerOnly=“true”
,但得到了一个错误(因为“
1000.0
”不是有效的输入,这是可以理解的,因为我指定了
pattern=“[0-9]”


但是如果设置了
integerOnly
,它会将值从
1000.0
更改为
10000
。我做错了什么?如何解析它以实现我的目标?

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

${yourDouble.intValue()}
见:


如果您使用的是EL2.2+,只需使用
${yourdoull.intValue()}
。见@JasperdeVries谢谢。我使用的是JSTL1.2,它工作得非常好。你能给我一个答复,让我接受吗?