我有一个范围变量,用于存储文件:

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方法。

10-02 16:59