java脚本和java动作文件中的字符串列表值不同
String List value is different in javascript and java action file
美好的一天,
在我的 java 动作文件中,我有一个列表:
protected ArrayList< String > deletedCorpRegisteredAccountRefNo = new ArrayList< String >( );
然后我在这个 ArrayList 中放入一些数据,并打印出来:
System.out.println( "deletedCorpRegisteredAccountRefNo : "+
deletedCorpRegisteredAccountRefNo );
结果正确显示:
deletedCorpRegisteredAccountRefNo : [0000000000000234324, 0000000000015422629]
然后我转到我的 jsp 和我的 java 脚本函数,我试图将这个 ArrayList 值分配给一个 var 调用 refNoList
,并打印出:
var refNoList = ${actionBean.deletedCorpRegisteredAccountRefNo};
console.log(refNoList);
我预计我会看到我的浏览器控制台打印出我在 Java System.out.println() 中看到的内容,但我得到另一个结果:
[80084, 15422629]
15422629
仍然可以接受,因为可能 JavaScript auto trim 0
。但是不明白为什么0000000000000234324
会变成80084
,这是完全不同的。
我试图google找出根本原因,但没有找到,我想我在Google中问错了问题。
请指教。
如果 JavaScript 数字以零开头,它可以解释为 八进制值 。并且
var x = 0234324;
console.log(x);
这写出 80084
,因为在十进制中,这是与八进制中的 234324
相同的值。
您需要 trim 字符串中的尾随零,它会按您希望的那样工作。
其他号码定义
在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
) 的问题在于它仅在可能时才被解释为八进制。例如。 09123
和 081
将被解释为十进制。这个故事的寓意,你不应该依赖这种行为,如果你需要一个八进制,明确地使用 0o
,如果你需要小数,trim 那些零。
解决问题
要将数字解析为小数,无论如何,您只需将 radix 值作为参数传递给 parseInt(number, radix)
:
var x = "000000123";
console.log(parseInt(x, 10)); // prints out 123
美好的一天,
在我的 java 动作文件中,我有一个列表:
protected ArrayList< String > deletedCorpRegisteredAccountRefNo = new ArrayList< String >( );
然后我在这个 ArrayList 中放入一些数据,并打印出来:
System.out.println( "deletedCorpRegisteredAccountRefNo : "+
deletedCorpRegisteredAccountRefNo );
结果正确显示:
deletedCorpRegisteredAccountRefNo : [0000000000000234324, 0000000000015422629]
然后我转到我的 jsp 和我的 java 脚本函数,我试图将这个 ArrayList 值分配给一个 var 调用 refNoList
,并打印出:
var refNoList = ${actionBean.deletedCorpRegisteredAccountRefNo};
console.log(refNoList);
我预计我会看到我的浏览器控制台打印出我在 Java System.out.println() 中看到的内容,但我得到另一个结果:
[80084, 15422629]
15422629
仍然可以接受,因为可能 JavaScript auto trim 0
。但是不明白为什么0000000000000234324
会变成80084
,这是完全不同的。
我试图google找出根本原因,但没有找到,我想我在Google中问错了问题。
请指教。
如果 JavaScript 数字以零开头,它可以解释为 八进制值 。并且
var x = 0234324;
console.log(x);
这写出 80084
,因为在十进制中,这是与八进制中的 234324
相同的值。
您需要 trim 字符串中的尾随零,它会按您希望的那样工作。
其他号码定义
在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
) 的问题在于它仅在可能时才被解释为八进制。例如。 09123
和 081
将被解释为十进制。这个故事的寓意,你不应该依赖这种行为,如果你需要一个八进制,明确地使用 0o
,如果你需要小数,trim 那些零。
解决问题
要将数字解析为小数,无论如何,您只需将 radix 值作为参数传递给 parseInt(number, radix)
:
var x = "000000123";
console.log(parseInt(x, 10)); // prints out 123