Adobe CQ5文本字段的默认值正在更改
当我试图为textfield设置默认值时,我遇到了一个奇怪的问题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位时,似乎正
<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'。