1

在 XPage 上,我使用以下代码从文档的 MIME 实体中加载一些文本:

var dcl:NotesDocumentCollection=database.getView("myView").getAllDocumentsByKey("key",true);
var doc:NotesDocument=dcl.getFirstDocument();
var entity:NotesMIMEEntity=doc.getMIMEEntity("data");
var text=entity.getContentAsText();

这工作没有错误。当用 sessionAsSigner.getCurrentDatabase() 替换数据库时,引发错误,指出MIME 实体为空(测试环境 = 服务器:Notes 8.5.3 | 客户端:Firefox 15)。以下是我从手动调试代码中获得的一些附加信息:

  • sessionAsSigner 是一个有效的 NotesSession 对象
  • doc 是对我来说可读的有效 NotesDocument,即使用 getItemValue 方法可以正常工作
  • doc.hasItem("data") 为真,即MIME实体字段存在

但是,使用 doc.getMIMEEntity("data") 会返回 null,即使它不为空。甚至没有作者和读者字段的文档也会出现此问题。为什么使用sessionAsSigner允许打开文档并获取项目值,但不允许读取 MIME 实体?

4

1 回答 1

1

要解决此问题,请致电

sessionAsSigner.setConvertMime(false);

在使用 sessionAsSigner 对象之前。这可以防止在打开文档时将 MIME 项目转换为富文本。否则 NotesDocument.getMIMEEntity 返回 null。

于 2013-05-01T13:10:13.483 回答