如何在Notes文档中设置RichTextItem字段的内容?

时间:2014-09-11 21:21:11

标签: java lotus-notes

这个看起来应该很简单。我正在用Java编写Notes代理;它计算了我想要存储在现有文档中的相当大量的数值数据(6400条目的双精度数组),更新了一个字段。由于Notes的字段限制,我认为我需要使用RichText字段来执行此操作。 (我最初尝试写入多值Number字段导致它无法在大小为4000到5000的数组之间进行保存。)但我不清楚如何在RichTextItem中存储该值。我所有的尝试都失败了。在一种情况下,使用doc.replaceItemValue(),它似乎将项目转换为文本列表。获取项目,将其转换为RichTextItem,并调用setValues()或setValueString()似乎没有做任何事情。这应该不是这么难!有什么指针吗?

(或者:关于如何将我的数组存储在数据库中的文档中的任何更好的建议?)

谢谢, 里德

3 个答案:

答案 0 :(得分:3)

您需要创建一个RichTextItem并使用该对象上的方法填充它:

import lotus.domino.*;
import java.util.Vector;
public class JavaAgent extends AgentBase {
 public void NotesMain() {
   try {
     Session session = getSession();
     AgentContext agentContext = 
     session.getAgentContext();
     // (Your code goes here) 
     Database db = agentContext.getCurrentDatabase();
     Document doc = db.createDocument();
     Item subject = doc.replaceItemValue("Subject", 
     "Project description");
     RichTextItem body = doc.createRichTextItem("Body");
     body.appendText("Cartoon book for children 
      ages 9-12");
     // Print text of subject and body
     System.out.println(subject.getText());
     System.out.println(body.getText());

   // Save the document
     doc.save(true, true);
   } catch(Exception e) {
     e.printStackTrace();
   }
 }
}

更新:

如果您需要编辑现有文档,而不是创建新的富文本项,则可以获得现有文档。

RichTextItem body = doc.GetFirstItem("Body");  // instead of createRichTextItem

答案 1 :(得分:1)

您可以绕过Notes的字段限制。您可以使用NotesItem.IsSummary属性将项目标记为“包含非摘要数据”。您需要将此属性设置为false。但请记住,您无法在视图和文件夹中使用此项目 这是一个例子:

Vector vector = new Vector();

for (int index = 0; index<6400;index++)
    vector.addElement(new Double(Math.random()*100));

Item item = document.replaceItemValue("YourFieldName", vector);
item.setSummary(false);

document.save(true,true);

答案 2 :(得分:1)

关于&#34;更好&#34;的问题解。我最近编写了一些代码,我将Java对象序列化/反序列化为JSON字符串。这样它们具有良好的可读性和易于恢复性。我想对于普通阵列来说这有点问题。特别是如果你不想恢复它并且没有兴趣去看它(好吧,但可能它应该是一个或另一个: - )

是的,无论如何,你必须将它存储在富文本中。您可以选择编写文本文档并将其附加到RT字段(再次RT :-)。很平常的场景,很容易做到。

最后,您可以将数据存储为数据库对象,但我想从Java中您实际上无法访问它。它似乎没有任何好转。