javascript和java动作文件中的String List值不同

String List value is different in javascript and java action file

本文关键字:List String java 文件 javascript      更新时间:2023-09-26

大家好,

在我的java操作文件中,我有一个列表:
 protected ArrayList< String > deletedCorpRegisteredAccountRefNo = new ArrayList< String >( );

然后我在这个数组列表中放入一些数据,并打印出来:

   System.out.println( "deletedCorpRegisteredAccountRefNo : "+
                deletedCorpRegisteredAccountRefNo );

结果显示正确:

deletedCorpRegisteredAccountRefNo : [0000000000000234324, 0000000000015422629]

然后我去我的jsp和我的javaScript函数,我试图将这个ArrayList值分配给一个变量调用refNoList,并打印出来:

var refNoList = ${actionBean.deletedCorpRegisteredAccountRefNo};
console.log(refNoList);

我期望看到我的浏览器控制台将打印出类似于我在Java System.out.println()中看到的内容,但我得到了另一个结果:

[80084, 15422629]

15422629仍然是可以接受的,因为可能JavaScript会自动修剪0。但不明白为什么0000000000000234324会变成80084,这是完全不同的。

我试着在谷歌上找到什么是根本原因,但没有得到它,我想我在谷歌上问错了问题。

请建议。

如果一个JavaScript数字以0开头,它可以被解释为八进制值。和

var x = 0234324;
console.log(x);

这将写出80084,因为在十进制中,它与八进制中的234324是相同的值。

您需要从字符串中删除末尾的零,它将按照您的要求工作。


其他数字定义

在JavaScript中,数字可以被解释为二进制、八进制、十进制或十六进制。这里有一个不同文字的小列表:

123         - normal decimal
0123        - octal: decimal value is 83
0x123       - hexadecimal: decimal value is 291
0o123       - octal: decimal value is 123
0b101       - binary: decimal value is 5

第二个例子(0123)的问题是,它只在可能的情况下被解释为八进制。例如,09123081将被解释为十进制。这个故事的寓意是,你不应该依赖于这个行为,如果你需要一个八进制,使用0o显式,如果你需要小数,修剪那些零。


修复问题

要将数字解析为十进制,无论如何,您可以简单地将基数值作为parseInt(number, radix)的参数:

var x = "000000123";
console.log(parseInt(x, 10)); // prints out 123