是否可以在DocumentContext中的富文本项上显示文本?

时间:2014-11-14 22:01:09

标签: java lotus-notes

我有一个在WebQueryOpen事件上运行java代理的表单。此代理从DB2数据库中提取数据,然后将它们放入我在表单上放置的计算文本字段中,并在我在浏览器中打开表单时显示。这对我有用。但是,当我尝试使用RichTextFields时,我收到ClassCastException错误。实际上没有文档被保存,我只是使用这个多米诺网址在浏览器中打开表单 - https://company.com/database.nsf/sampleform?OpenForm

简单文本字段的示例代码 - 显示无问题

Document sampledoc = agentContext.getDocumentContext();
String samplestr = "sample data from db2";
sampledoc.replaceItemValue("sampletextfield", samplestr);

当我尝试使用富文本字段时

Document sampledoc = agentContext.getDocumentContext();
String samplestr = "sample data from db2";
RichTextItem rtsample = (RichTextItem)sampledoc.getFirstItem('samplerichtextfield');
rtsample.appendText(samplestr); // ClassCastException error

基本上,我想使用富文本字段,以便在我提取非常长的字符串数据时可以容纳更多字符。

字段的屏幕截图(如您所见,它是RichText)

Screenshot of the field (As you can see it's a RichText)

1 个答案:

答案 0 :(得分:1)

问题在于您尝试将常规项作为RichTextItem进行访问。

RichTextItem是使用自己的方法创建的特殊字段,如下所示:

RichTextItem rtsample = (RichTextItem)sampledoc.createRichTextItem('samplerichtextfield');      

与使用简单sampledoc.replaceItemValue(etc)创建的常规项目不同。

因此,如果你想知道一个项目是否是RichTextItem并且它是否不存在,那么创建它,你可以这样做:

RichTextItem rti = null;
Item item = doc.getFirstItem("somefield");
if (item != null) {
    if (item instanceof RichTextItem) {
        //Yay!
        rti = (RichTextItem) item;
    } else {
        //:-(
    }
} else {
        rti = doc.createRichTextItem("somefield");
        //etc.
}