CQ5 textfield defaulValue发生了变化

时间:2014-11-27 15:19:23

标签: adobe cq5 aem

当我尝试为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时,也会发生同样的事情。

2 个答案:

答案 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)

我们在defaultValue中提供的值显示为对话框的占位符,以便作者了解必须提供的值。

语法为defaultValue="Placeholder"。显示此值直到没有用您自己的值更新它。

enter image description here

一旦您提供了自己的价值,就不会显示defaultValue。此外,如果最初没有看到它,请再次放下组件以查看它。