在将JSP整数数组传递给javascript时遇到问题。 JSP 数组已正确填充。 我可以在我的 JSP 代码中正确呈现 JSP 数组的元素。 但是,当我将 JSP 数组传递给我的 javascript 函数时,我的 JavaScript 代码中未定义值。
JSP 代码片段
....
<! This works correctly !>
<div class="col content-M">
<p>JSP Array Population Test</p>
${daynumbers[2]}
</div>
<! This does not work !>
<div class="col content-L">
<p>Pass a JSP Integer Array to setDayValues</p>
<script type="text/javascript">setDayValues(${daynumbers});</script>
<div id="columnchart_values"></div>
</div>
....
JavaScript 片段
var a = Array(6);
function setDayValues(values) {
a[0] = values[0];
a[1] = values[1];
a[2] = values[2];
a[3] = values[3];
a[4] = values[4];
a[5] = values[5];
}
function simpleColumnChart() {
var data = google.visualization.arrayToDataTable([
['Element', 'Density', { role: 'style' }],
['1', a[0], 'blue'],
['2', a[1], 'blue'],
['3', a[2], 'blue'],
['4', a[3], 'blue'],
['5', a[4], 'blue'],
['6', a[5], 'blue']
]);
....
}
就像我说的,a[x] 在 javascript 中是未定义的。
我认为问题在于你理解 ${daynumbers} 的方式是错误的。 ${daynumbers} 会返回什么? JavaScript 数组? 试试 console.log(${Daynumbers}(,你会注意到你的问题,因为你可以看到 ${daynumbers[0]} 的值,你可能会返回一个 javascript 无法理解的 java 数组对象,所以你可以尝试将 ${daynumbers} 转换为 JSON 字符串, 并解析它。
问题是${daynumbers}
导致无效的JavaScript被发送到客户端。
如果要输出整数数组,请使用Arrays.toString
:
<script type="text/javascript">setDayValues(${Arrays.toString(daynumbers)});</script>
客户端浏览器将看到
<script type="text/javascript">setDayValues([1, 2, 3, 4, 5, 6]);</script>
。(当然,使用您的实际值(,这是使用这些条目定义数组的有效 JavaScript。
那么在setDayNumbers
中,就不需要复制它们了,只需使用传递给setDayNumbers
的数组:
function setDayNumbers(values) {
a = values;
}