RTF域在b/s下的一些使用技巧

根据网络上的一些资料以及个人使用的经验,总结一些rtf域的特性供各位参考:
1、 使用rtf域在b/s上存储内容突破域大小限制的问题。
很多时候,存储超过64k的限制,在这个时候:
错误的代码:

String s = “html 内容” ;   
s +=    “….”;   
s+= “……”;   
doc.replaceItemValue(“ItemName”,s); 
 
正确的代码:

RichTextItem rtf = (RichTextItem) doc.getFirstItem(“ItemName”);   
rtf.appendText(“html 内容”);   
rtf.apendText(“………..”); 
在domino中,如果内容超过限制,domino 会自动在文档中生成多个同名域来存储相关内容。
 
2、 使用rtf域显示随机生成的html代码:
首先:要确定,超过64k的时候一定要使用第一点所表述的方法。
其次:如果在页面上没有正确的显示html代码所描述的界面,而是将html代码显示出来,解决方法如下:
A、 如果存在循环

for(int i=0;i<n;i++)
{   
     rtf.apendText(“[”);   
     …………….   
     循环主体   
     …………….   
     rtf.apendText(“]”);   
} B、 如果还未解决问题,可以使用如下代码(未经实际验证,后果自负)
Dim richStyle   
As NotesRichTextStyle   
Set richStyle = session.CreateRichTextStyle   
Call cdoc.RemoveItem( "Body" )   
Dim myrichText As New NotesRichTextItem(cdoc, "Body")   
richStyle.PassThruHTML = True   
Call myrichText.AppendStyle(richStyle)   
Call myrichText.AppendText(getHtml)
说明:上面所讲的内容包括使用lotusscript或者java。请自行根据所用语言进行相应转换。

第二点的a方法要注意在取rtf域时的方法

if(doc.hasitem("ItemName"))
{
        doc.removeItem("ItemName");   
}
RichTextItem rtf = (RichTextItem) doc.getFirstItem("ItemName");

 

Domino附件分开存取实例
import java.util.Vector;

import lotus.domino.AgentBase;
import lotus.domino.AgentContext;
import lotus.domino.Database;
import lotus.domino.Document;
import lotus.domino.Session;

/**
* @类名:SaveToPic
* @功能:将本文档中的附件保存到图片库
* @author wnight88
* @时间: 2009-4-10
*/
public class SaveToPic extends AgentBase
{

  public void NotesMain()
  {

    try
    {
      Session session = getSession();
      AgentContext agentContext = session.getAgentContext();
       
      //当前文档
      Document currentDoc = agentContext.getDocumentContext();
      //图片库文档的ID号,若没有则为空
      String picDocUnid = currentDoc.getItemValueString("picDocUnid");
       

      //当前数据库及视图、视图中对应的文档
      Database thisDB = agentContext.getCurrentDatabase();
      Document thisDoc = thisDB.getDocumentByUNID(currentDoc.getUniversalID());
       
      //图片库的文档,创建及追加
      Database goalDB = session.getDatabase(thisDB.getServer(), "whcg//wjkhPic.nsf");
      Document goalDoc = null;
      if(picDocUnid.equals(""))
      {
        goalDoc = goalDB.createDocument();
        thisDoc.copyAllItems(goalDoc,true);
        goalDoc.replaceItemValue("form", "newPic");
        goalDoc.replaceItemValue("unid", thisDoc.getUniversalID());   
        goalDoc.save(true,true);   
      }
      else
      {
        goalDoc = goalDB.getDocumentByUNID(picDocUnid);
        thisDoc.copyAllItems(goalDoc,false);
        goalDoc.save(true,true);
      }
       
      //读取附件列表,写入到连接域中
      Vector fileNames = session.evaluate("@AttachmentNames", goalDoc);
      String url = "";

      for (int i = 0; i < fileNames.size(); i++)
      {
        url = url + "<br>" + "<img src='/whcg/wjkh.nsf/doclist.gif'><a href='/whcg/wjkhPic.nsf/0/"
            + goalDoc.getUniversalID() + "/$FILE/"
            + fileNames.get(i) + "'>" + fileNames.get(i)
            + "</a>";
      }

      String htmlString = "";
      htmlString = htmlString
          + "<table class=tbbg align=center border=0 cellpadding=2 cellspacing=1>";
      htmlString = htmlString + "<tr class=toptrbg>";
      htmlString = htmlString + "<td>附件列表:</td>";
      htmlString = htmlString + "</tr>";
      htmlString = htmlString + "<tr>";
      htmlString = htmlString
          + "<td bgcolor=f8f8f8>";
      htmlString = htmlString + url;
      htmlString = htmlString + "</td>";
      htmlString = htmlString + "</tr>";
      htmlString = htmlString + "</table>";

      thisDoc.replaceItemValue("attachmentList", htmlString);
      //删除原文档中的附件
      if(thisDoc.getFirstItem("$File") != null)
      {
        thisDoc.getFirstItem("$File").remove();
      }
      thisDoc.replaceItemValue("picDocUnid", goalDoc.getUniversalID());
      thisDoc.save(true,true);

    }
    catch (Exception e)
    {
      e.printStackTrace();
    }
  }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值