Xpages - 在 java class 'java.util.AbstractList$SimpleListIterator' 上调用方法 'next()' 时出错

Xpages - Error calling method 'next()' on java class 'java.util.AbstractList$SimpleListIterator'

我试图在发送包含附件的电子邮件之前使用迭代器方法遍历文档中的附件。在循环中尝试提取附件时,获取文件名似乎没问题,但获取附件路径会引发上述错误。

这是在 ssjs 中编写的,但是调用 java class 通过 SMTP 发送电子邮件。

 var bodyAttach = new java.util.Vector();
    var alist = nDoc.getAttachmentList("gDocs");
    if (!alist.isEmpty()) {
        var alisti = alist.iterator();
        //  Each element is of type NotesEmbeddedObject
        while (alisti.hasNext()) {
            attachname = alisti.next().getName();

            attachpath = java.lang.System.getProperty('java.io.tmpdir') + java.io.File.separator + attachname.replace(/ /g, '_');
            alisti.next().extractFile(attachpath);

            extattachname = @LowerCase(@RightBack(attachname, "."));

            if (extattachname == "gif" || extattachname == "jpg" || extattachname == "jpeg" || extattachname == "png") {
                res_attachpath = resizeImage(attachname,attachpath,1024,1024);
                if (res_attachpath != "") {
                    bodyAttach.add(res_attachpath);
                } else {
                    bodyAttach.add(attachpath);
                }
            } else {
                bodyAttach.add(attachpath);
            }
        }
    }
    vMail.setBodyAttach(bodyAttach);

    vMail.getBodyAttach();

在电子邮件变量上设置附件之前,本应遍历附件、调整图像大小,但出现以下错误:

Error calling method 'next()' on java class 'java.util.AbstractList$SimpleListIterator'

这指向此代码的第 10 行:

alisti.next().extractFile(attachpath); // error points to this line

你在体内呼唤 .next() 两次。 .next() 从 List 的当前位置获取下一个元素并重新定位。在循环中只调用一次 .next() 。将其设置为变量。或者你得到下一个,然后是下一个,然后是下一个,中间没有检查你是否已经到达列表的末尾。这是导致错误的原因。