Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Extjs xtype:numberfield值将自动更正(更改)超过16位的值_Extjs_Aem - Fatal编程技术网

Extjs xtype:numberfield值将自动更正(更改)超过16位的值

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

有人能解释一下,如果我提供的值超过16位,为什么xtype:numberfield的值会自动更正(更改)吗。 例如:

  • 22222222更改为2222224
  • 22222222更改为222200
  • 22222222更改为2222300
  • 222222222更改为2222220000
  • 222222222更改为22222230000
  • 22222222更改为2。2222222 E+21
  • 22222222更改为2。222222 3E+22
  • 当在我的组件jsp页面中获取值时,如下所示呈现后,将生成我的页面
    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本身。看见