我有一个包含2个富文本字段的表单。(例如exmaple rtf1和rtf2)
在每个字段中,用户将上传1个附件。
对于每个字段,我想将附件名称存储到另一个字段中(例如,名称1和名称2)。
当我在name1的表单中使用 @Subset(@AttachmentNames; 1)时,我得到了rtf1附件的名称。 当我对name2使用相同的名称时,我再次获得rtf1的名称,这不是我想要的。
最终,如果有一种方法可以使用ssjs而不是在表单中填充它,那也会很好。
答案 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