Extjs xtype:numberfield值将自动更正(更改)超过16位的值
有人能解释一下,如果我提供的值超过16位,为什么xtype:numberfield的值会自动更正(更改)吗。 例如:Extjs xtype:numberfield值将自动更正(更改)超过16位的值,extjs,aem,Extjs,Aem,有人能解释一下,如果我提供的值超过16位,为什么xtype:numberfield的值会自动更正(更改)吗。 例如: 22222222更改为2222224 22222222更改为222200 22222222更改为2222300 222222222更改为2222220000 222222222更改为22222230000 22222222更改为2。2222222 E+21 22222222更改为2。222222 3E+22 当在我的组件jsp页面中获取值时,如下所示呈现后,将生成我的页面 Num
NumberFieldTestValue:
结果如下
NumberFieldTestValue: 2.2222222222222223e+22
问题
这种行为是由于对话框行为是用JavaScript实现的。您遇到问题的数字无法在其中表示
该语言符合ECMASCRIPT 5.1规范
引用
大小不大于的所有正整数和负整数
大于2^53的数字可在数字类型中表示
22222
的以2为底的对数约为70,这意味着该数字超过了最大值。这就是你的问题
总之,如果您在浏览器中的普通JS控制台中检查示例,将显示相同的行为,因此这实际上不是CQ问题
解决方案1-使用不同的类型
为了避免这种情况,您可以使用xtype=“textfield”
并根据正则表达式验证它,以查看它是否只包含数字。然后,您必须确保在后端使用能够保存此类数字的类型(如biginger
)
该字段可能如下所示:
<numberOfSandGrains
jcr:primaryType="cq:Widget"
fieldLabel="Number of grains of sand at the beach"
name="./grainsCount"
regex="/\d+/"
regexText="Please enter a numeric value."
xtype="textfield"/>
解决方案2-改变比例
另一种选择是更改配置背后的逻辑,并使用一些不同的单元(如果适用)。例如,如果值22222是一个克数(物体/物质的重量),那么最好以公吨为单位读取(至少在许多情况下是如此)。作者可能不需要输入如此庞大的数字
如果你走这条路,你需要格外小心 问题
这种行为是由于对话框行为是用JavaScript实现的。您遇到问题的数字无法在其中表示
该语言符合ECMASCRIPT 5.1规范
引用
大小不大于的所有正整数和负整数
大于2^53的数字可在数字类型中表示
22222
的以2为底的对数约为70,这意味着该数字超过了最大值。这就是你的问题
总之,如果您在浏览器中的普通JS控制台中检查示例,将显示相同的行为,因此这实际上不是CQ问题
解决方案1-使用不同的类型
为了避免这种情况,您可以使用xtype=“textfield”
并根据正则表达式验证它,以查看它是否只包含数字。然后,您必须确保在后端使用能够保存此类数字的类型(如biginger
)
该字段可能如下所示:
<numberOfSandGrains
jcr:primaryType="cq:Widget"
fieldLabel="Number of grains of sand at the beach"
name="./grainsCount"
regex="/\d+/"
regexText="Please enter a numeric value."
xtype="textfield"/>
解决方案2-改变比例
另一种选择是更改配置背后的逻辑,并使用一些不同的单元(如果适用)。例如,如果值22222是一个克数(物体/物质的重量),那么最好以公吨为单位读取(至少在许多情况下是如此)。作者可能不需要输入如此庞大的数字
如果你走这条路,你需要格外小心 这不是数字字段,而是javascript本身。看,这不是数字字段,而是javascript本身。看见