富文本字段 - 格式Mime部分 - 获取HTML内容

时间:2013-12-05 13:39:35

标签: html xpages

我有一个包含Rich Text Field的XPage。在此富文本字段中是一些使用HTML格式化的文本。只要我不做任何改动,就可以很容易地使用

来获取内容
docMail.getItemValue("dBody")[0].toString() 

该文件的内容如下:

enter image description here

一旦我更改了Text的任何内容,内容将保存为MIME,我的代码不再起作用,因为当我想获得dBody的值时,它是空的。内容如下所示:

enter image description here

所以它现在是MIME部分。但是我如何获得HTML代码?我只想要HTML代码并通过邮件发送。

3 个答案:

答案 0 :(得分:2)

在您的情况下:如果您发送整个文档(doc.send),它应该在您将字段从dBody重命名为Body时工作。如果要处理后端,请使用doc.getMimePart进入body字段。或者使用Per的包装器。

答案 1 :(得分:1)

谢谢大家,但我一直在研究一个似乎也能完成工作的解决方案(基于XSnippet emailBean by Tony McGuckin。这是代码:

有一个包含此代码的新Bean:

package de.esg.weiterbildung;
import lotus.domino.Database;
import lotus.domino.NotesException;
import lotus.domino.Session;
import com.ibm.xsp.model.domino.wrapped.DominoDocument;
import com.ibm.xsp.model.domino.wrapped.DominoRichTextItem;
import com.ibm.xsp.model.domino.wrapped.DominoDocument.AttachmentValueHolder;
import de.sit.xpagesutils.*;

public class HTMLHelper {
    private boolean debugMode = true;
    private String fieldName="dBody";
    private DominoDocument document;

    public String getFieldName(){
        return this.fieldName;
    }

    public void setFieldName(final String fieldName){
        this.fieldName = fieldName;
    }   

    public boolean isDebugMode(){
        return this.debugMode;
    }

    public void setDebugMode(final boolean debugMode){
        this.debugMode = debugMode;
    }
    public DominoDocument getDocument(){
        return this.document;
    }

    public void setDocument(final DominoDocument document){
        this.document = document;
    }

    public String getBodyHTML(String unid)throws NotesException{
        String back ="";

        if(null != document){
            if(this.isDebugMode()){
                System.out.println("Started getBodyHTML()");
            }
            final DominoRichTextItem drti = document.getRichTextItem(fieldName);
            if(null != drti){
                try {
                    String html = drti.getHTML();
                    if(this.isDebugMode()){
                        System.out.println("Completed getBodyHTML() : " + html);
                    }
                    return html;
                } catch (Exception e) {
                    if(this.isDebugMode()){
                        System.out.println("Failed getBodyHTML() : " + e.getMessage());
                    }
                }
            }
        }
        return back;
    }

}

现在我通过调用此代码来获取正文:

helper.setDocument(docMail);
helper.setFieldName("dBody");
var htmlBody:String = helper.getBodyHTML(unid);

到目前为止工作!

答案 2 :(得分:1)

这是我用来访问具有HTML内容的字段的方法,但可以存储为纯文本或富文本字段。我确实将富文本字段设置为将其内容存储为HTML和MIME。

String getRichTextField(Document document, String fieldName) {
  MIMEEntity me;
  try {
    me = document.getMIMEEntity(fieldName);
    String text;
    if (me != null) {
      text = me.getContentAsText();
    } else {
      @SuppressWarnings("unchecked")
      Vector<String> values = document.getItemValue(fieldName);
      text = join(values, "\n"); // join is a utility method that joins a vector of strings using the given delimiter
    }
    return text;
  } catch (NotesException e) {
    System.err.println("Error accessing field '" + fieldName + "'.");
    printStackTrace();
    return "error accessing field";
  }

}