当我尝试为textfield设置默认值时,我遇到了这个奇怪的问题。
<field
jcr:primaryType="cq:Widget"
fieldLabel="label"
name="./name"
allowBlank="false"
value="5350215250750013444"
defaultValue="5350215250750013444"
xtype="textfield"/>
但是当我创建新组件时,插入该字段的值为:5350215250750013440
正如我在这里尝试过的一些组合是输出:
1) defaultValue=53502152507500134 Output: 535021525075001340 2) defaultValue=5350215250750013 Output: 5350215250750013 3) defaultValue=5350215250750013444 Output: 5350215250750013000 4) defaultValue=535021525075001349 Output: 535021525075001340 5) defaultValue=535021525075001399 Output: 5350215250750014
当超过16位时,值似乎会发生变化。这对我来说似乎很奇怪,因为它是一个文本域值。当我将字段更改为numberfield时,也会发生同样的事情。
答案 0 :(得分:2)
将defaultValue
导入CRX时,可能会将其解释为整数。引自section 11.5 of the JCR specification:
如果属性类型无法从分配给其节点的节点类型中确定,那么属性的确定由实现决定。例如,实现可以独占使用STRING属性,或尝试根据内容分析“猜测”类型。
当Ext JS创建对话框时,defaultValue
被转换为JavaScript的数字数据类型。 JavaScript中的数字始终是64位浮点值。您的某些给定值超出了此数据类型的精度,因此四舍五入到下一个可表示的数字。
但是,您可以强制CRX导入的数据类型,从而避免此问题:
<field
jcr:primaryType="cq:Widget"
fieldLabel="label"
name="./name"
allowBlank="false"
value="{String}5350215250750013444"
defaultValue="{String}5350215250750013444"
xtype="textfield"/>
编辑:结果表明该值对于JCR整数类型来说已经太大了,因此从来没有首先将其转换为整数。
答案 1 :(得分:2)