0

我有一个主文档,其中包含一组链接的更新文档,其中包含一些字段和一个富文本正文字段。我可以在重复控件中显示更新中的任何视图列,但我也想在重复控件中显示富文本字段。

我尝试了几种方法,到目前为止没有任何效果。

我试过这个解决方案:

rowData.getDocument().getFirstItem("Body").getMIMEEntityAsText()

和这个:

rowData.getDocument().getFirstItem("Body").getMIMEEntity().getContentAsText(); 

和这个:

http://iqjam.net/iqjam/iqjam.nsf/questions/20100914_How_to_Display_a_RichText_fiel.htm

<xp:repeat id="repeat1" rows="30" value="#{view1}" var="row">
    <xp:panel>
        <xp:this.data>
            <xp:dominoDocument var="doc" action="openDocument"
                documentId="#{javascript:row.getNoteID()}">
            </xp:dominoDocument>
        </xp:this.data>
        <xp:inputRichText id="inputRichText1" value="#{doc.ArticleContent}"
            readonly="true">
        </xp:inputRichText>
    </xp:panel>
</xp:repeat>

和这个:

http://www.ibmpressbooks.com/articles/article.asp?p=1681058&seqNum=4

var nd:NotesDocument = rowData.getDocument();
var mime = nd.getMIMEEntity("body");
// if it is MIME then you can passthrough as HTML
if (mime != null) {
      return mime.getContentAsText();
}
// Otherwise just return the plain text
else {
      return nd.getItemValueString("body");
}

它们都只显示那些仅包含文本的文档。如果有嵌入的图像或图像和文本的混合,则不会显示任何内容。

我将不胜感激任何建议...

4

4 回答 4

4

所以随着蒂姆的ignoreRequestParams="true"加入,这有效:

<xp:repeat id="repeat1" rows="30" value="#{view1}" var="row">
    <xp:panel>
        <xp:this.data>
            <xp:dominoDocument var="doc" action="openDocument"
                documentId="#{javascript:row.getNoteID()}" 
                ignoreRequestParams="true">
            </xp:dominoDocument>
        </xp:this.data>
        <xp:inputRichText id="inputRichText1" value="#{doc.ArticleContent}"
            readonly="true">
        </xp:inputRichText>
    </xp:panel>
</xp:repeat>
于 2013-04-30T19:52:27.763 回答
1

好的,正如 Fredrik 所写,您有一个多部分 mime 字段,因此您需要浏览所有条目(文本和图像)。

<xp:text escape="false" id="subContent">
                                        <xp:this.value><![CDATA[#{javascript:
session.setConvertMIME(false);
if(level3List != null){
var nd:NotesDocument = level3List.getDocument();
if(nd != null){
 try{   
  requestScope.status = "";
  var cItem:NotesRichTextItem = nd.getFirstItem("content");
  var mime:NotesMIMEEntity = cItem.getMIMEEntity();
  if (mime != null) {
   // If multipart MIME entity
   if (mime.getContentType().equals("multipart")) {
    // Print content of each child entity
    var child1:NotesMIMEEntity = mime.getFirstChildEntity();
    while (child1 != null) {
     if(child1.getEncoding()==1727){
      //gif             
        requestScope.status +=
        "<img src=\"data:image/png;base64," + 
        child1.getContentAsText() +
        "\"/>"              
      }else{
       //plain
       requestScope.status += 
       child1.getContentAsText() //+ "\n"
     }          
      var child2:NotesMIMEEntity = child1.getFirstChildEntity();
       if (child2 == null) {
        child2 = child1.getNextSibling();
        if (child2 == null) {
         child2 = child1.getParentEntity();
        if (child2 != null) {
         child2 = child2.getNextSibling();
        }
       }
      }
      child1 = child2;
     }
      } else {
     // plain mime no multi
     requestScope.status = mime.getContentAsText();
    }
    } else {
    // No mime > plain text
    requestScope.status = nd.getFirstItem("content").getText();
    }
    // return to display
    return requestScope.status;
  }catch(e){
    return nd.getFirstItem("content").getText();
   }    
  }
}
// Restore conversion
session.setConvertMIME(true);}]]></xp:this.value>
</xp:text> 

我目前面临的唯一问题是,我失去了图像的位置。它们都将显示在底部。

此代码也可以在 IBM 文档中找到类似的

IBM

于 2013-04-30T15:38:10.070 回答
0

如果您只有文本,则文档中只有一个 mime 实体。但是,如果您有图像和文本,则内容将存储为多部分 mime。内容类型将是多部分的。

然后,您必须获取 mime 实体并从该 mimeentity getfirstsibling 中获取,如果内容类型是文本,则获取并呈现它。

于 2013-04-26T20:26:33.417 回答
0

我不知道这是否是你要找的,但是嘿。这是我前段时间做的一个重复控件,它显示来自 RichText 字段的图像。这是我可以显示图像的唯一方法,我花了无数小时寻找更好的解决方案。

<xp:repeat id="repeat1" rows="30" var="imagename" indexVar="index">
      <xp:panel></xp:panel>
      <xp:this.value><![CDATA[#{javascript:doc.getItemValueArray("imagenames")}]]></xp:this.value>
      <xp:text escape="false" id="computedField1">
        <xp:this.value><![CDATA[#{javascript:var url = "/" + @ReplaceSubstring(database.getFilePath(), "\\", "/") + "/0/" +
document1.getDocument().getUniversalID()
url += "/$FILE/" + escape(imagename);
return "<a dojoType=\"dojox.image.Lightbox\" group=\"group1\" title=\"" +
imagename + "\" href=\"" + url + "\">" + imagename + "</a><br />"}]]></xp:this.value>
      </xp:text>
    </xp:repeat>
于 2013-04-26T22:34:12.803 回答