为什么JSTL parseNumber会把1000.0解析成10000?
Why does JSTL parseNumber parse 1000.0 to 10000?
我有一个输入表单,我想在其中插入一些数字并计算一些结果。所以我的输入字段看起来像
<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
。我究竟做错了什么?我怎样才能解析它来实现我的目标?
如果您使用的是 EL 2.2+,您可以通过在 Double
对象上调用 non-getter 方法简单地将双精度转换为整数:
${yourDouble.intValue()}
参见:
我有一个输入表单,我想在其中插入一些数字并计算一些结果。所以我的输入字段看起来像
<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
。我究竟做错了什么?我怎样才能解析它来实现我的目标?
如果您使用的是 EL 2.2+,您可以通过在 Double
对象上调用 non-getter 方法简单地将双精度转换为整数:
${yourDouble.intValue()}
参见: