Adobe CQ5文本字段的默认值正在更改

Adobe CQ5文本字段的默认值正在更改,adobe,aem,Adobe,Aem,当我试图为textfield设置默认值时,我遇到了一个奇怪的问题 <field jcr:primaryType="cq:Widget" fieldLabel="label" name="./name" allowBlank="false" value="5350215250750013444" defaultValue="5350215250750013444" xtype="textfield"/> 当值超过16位时,似乎正

当我试图为textfield设置默认值时,我遇到了一个奇怪的问题

<field
    jcr:primaryType="cq:Widget"
    fieldLabel="label"
    name="./name"
    allowBlank="false"
    value="5350215250750013444"
    defaultValue="5350215250750013444"
    xtype="textfield"/>
当值超过16位时,似乎正在更改。这对我来说似乎很奇怪,因为它是一个textfield值。当我将字段更改为numberfield时,也会发生同样的情况。

您的默认值在导入CRX时可能会被解释为整数。引自:

如果属性类型不能从分配给其节点的节点类型中确定,则属性的确定由实现决定。例如,一个实现可能只使用字符串属性,或者根据对内容的分析尝试“猜测”类型

当该对话框随后由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 integer类型来说已经太大了,因此从一开始就不会转换为整数。

您的defaultValue在导入到CRX时可能会被解释为整数。引自:

如果属性类型不能从分配给其节点的节点类型中确定,则属性的确定由实现决定。例如,一个实现可能只使用字符串属性,或者根据对内容的分析尝试“猜测”类型

当该对话框随后由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 integer类型来说已经太大,因此从一开始就不会转换为整数。

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

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

一旦您给出自己的值,将不会出现默认值。另外,如果一开始没有看到它,请再次放下组件以查看它。

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

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


一旦您给出自己的值,将不会出现默认值。另外,如果一开始看不到,请再次放下组件查看。

您好,谢谢您的详细回答。不幸的是,这也不起作用,并且仍然使用defaultValue={String}5350215250750013444输出:535021525075001340。你还有别的想法吗?我想避免在该字段上设置侦听器,但这似乎是目前为止唯一的解决方案。我的错!我昨天无法测试,没有注意到您的值对于CRX中的整数类型来说已经太大了,所以它从一开始就没有被转换。想想我的回答无关紧要。在加载字符串时,它似乎被转换为JS number类型。例如,尝试预先添加空格。不幸的是,我不知道如何防止这种转换发生。@Krzysztof Krawiec当我们提供property=value这样的属性时,默认的数据类型是String。我认为我们必须在{}中指定除字符串之外的数据类型,并且它不会转换为数字或十进制。如果有,请给我解释一下。嗨,谢谢你详细的回答。不幸的是,这也不起作用,并且仍然使用defaultValue={String}5350215250750013444输出:535021525075001340。你还有别的想法吗?我想避免在该字段上设置侦听器,但这似乎是目前为止唯一的解决方案。我的错!我昨天无法测试,没有注意到您的值对于CRX中的整数类型来说已经太大了,所以它从一开始就没有被转换。想想我的回答无关紧要。在加载字符串时,它似乎被转换为JS number类型。例如,尝试预先添加空格。不幸的是,我不知道如何防止这种转换发生。@Krzysztof Krawiec当我们提供property=value这样的属性时,默认的数据类型是String。我认为我们必须在{}中指定除字符串之外的数据类型,并且它不会转换为数字或十进制。如果是的话,请向我解释一下。你好,Krzysztof,你找到解决问题的方法了吗?不是解决方法,但解决方法是在那台机器上设置一个侦听器
ld和首次加载时,如果字段值为,则只需设置panelItem.setValue'535021525075001344'。您好Krzysztof,您遇到问题的解决方案了吗?不是解决方案,但解决方法是在该字段和首次加载时设置侦听器。因此,如果字段值为,则只需设置panelItem.setValue'535021505001344'。