从包含2个RTF字段的表单中获取附件名称

时间:2014-10-28 09:22:03

标签: xpages lotus-notes xpages-ssjs

我有一个包含2个富文本字段的表单。(例如exmaple rtf1和rtf2)

在每个字段中,用户将上传1个附件。

对于每个字段,我想将附件名称存储到另一个字段中(例如,名称1和名称2)。

当我在name1的表单中使用 @Subset(@AttachmentNames; 1)时,我得到了rtf1附件的名称。 当我对name2使用相同的名称时,我再次获得rtf1的名称,这不是我想要的。

最终,如果有一种方法可以使用ssjs而不是在表单中填充它,那也会很好。

2 个答案:

答案 0 :(得分:2)

似乎你不能在这里使用一个简单的公式。相反,您可以通过SSJS访问相应的RTF,获取所有嵌入对象(即使只有一个附加)并获取它的名称以存储在您的文本字段中。这样的事情应该有效:

您的文本字段的值,假设您的数据源名为document1:

try {
    var rtf:NotesRichTextItem = document1.getDocument().getFirstItem("rtf1");
    var eos:java.util.Vector = rtf.getEmbeddedObjects();
    for(x=0; x<eos.size(); x++){
        var eo:NotesEmbeddedObject = eos.elementAt(x);
        return eo.getName();
    }
} catch(e) {}

未经测试,YMMV

答案 1 :(得分:1)

您可以在xpage上使用以下代码来获取指定的richtext项目的附件名称

var db:NotesDatabase=session.getCurrentDatabase();
var doc:NotesDocument=db.getDocumentByUNID(....);
var valString:String = "";

if (doc.hasItem('rtf1')){
var nrt:NotesRichTextItem=doc.getFirstItem('rtf1');
if (nrt!=null){
    var eos:java.util.Vector = nrt.getEmbeddedObjects();
      if (eos.isEmpty()) {
        valString = 'Nothing found';
      } else {
          var v;
        for (v = 0;v < eos.size();v++){
        var eo:NotesEmbeddedObject = eos.get(v);
        valString = valString + eo.getName() + ' - ' ;
    }
}
}
return valString;
}

代码取自http://www.bleedyellow.com/blogs/DominoHerald/entry/august_20_2011_5_06_pm?lang=de

也许在代码段周围使用try / catch