【问题标题】:get the attachmentnames out of a form with 2 RTF fields从具有 2 个 RTF 字段的表单中获取附件名称
【发布时间】:2014-10-28 18:24:43
【问题描述】:

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

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

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

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

最终,如果有办法使用 ssjs 而不是在表单中执行它,那也很好。

【问题讨论】:

    标签: xpages lotus-notes xpages-ssjs


    【解决方案1】:

    您似乎不能在这里使用一个简单的公式。相反,您可以通过 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

    【讨论】:

      【解决方案2】:

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

      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

      也许在代码 sn-p 周围使用 try/catch

      【讨论】:

        猜你喜欢
        • 2014-11-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-11
        相关资源
        最近更新 更多