我有一个范围变量,用于存储文件:
viewScope.MY_SCOPE = new Array();
viewScope.MY_SCOPE.push(["id0", 0, true]);
viewScope.MY_SCOPE.push(["id1", 1, false]);
viewScope.MY_SCOPE.push(["id2", 3, true]);
现在我要更新一项。
viewScope.MY_SCOPE[1][2] = "true";
这失败并显示以下错误:
如何更新阵列中的特定项目?
最佳答案
将SSJS数组对象添加到合并范围时,它将转换为java.util.Vector。因此,如果要设置该值,则应使用
viewScope.MY_SCOPE[1].set(2,"true");
而不是
viewScope.MY_SCOPE[1][2] = "true";
。我认为问题在于使用
...[2] = "true"
尝试执行给定对象的put
方法。虽然put
在HashMaps或范围图等 map 中可用,但Vector使用set
而不是put
来更改值。因此,您将收到“不支持操作表达式put(...)”错误。与此相反,使用viewScope.MY_SCOPE[1][2]
来获取变量是没有问题的,因为HashMaps和Vectors中都可以使用get
方法。