我有一个在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)
答案 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.
}