如何通过xp:inputTextarea在只读模式下显示纯文本富文本字段完整内容?
解决XPages中xp:inputTextarea显示富文本纯文本内容时的格式问题
这个问题我之前也碰到过——Notes里的富文本字段哪怕只存纯文本,底层依然会保留RTF格式的元数据(比如段落结构标记、隐藏的格式控制符),直接把它绑定到String字段的话,这些额外的标记就会被当成文本显示出来,导致内容混乱。
给你几个靠谱的解决办法:
在Java对象里提取纯文本
不要直接把富文本字段转成String,而是调用NotesRichTextItem的getUnformattedText()方法来获取干净的纯文本内容。示例代码如下:// 假设你已经拿到了对应的NotesDocument对象doc,fieldName是你的富文本字段名 NotesRichTextItem rtfItem = (NotesRichTextItem) doc.getFirstItem(fieldName); if (rtfItem != null) { // 提取无格式纯文本 String cleanText = rtfItem.getUnformattedText(); // 把这个cleanText赋值给Java对象的String字段 yourStringField = cleanText; }这个方法会自动过滤掉所有RTF相关的格式标记,只保留纯文本内容。
通过Bean的Getter方法处理
如果是用EL绑定到Bean属性,可以在Getter里完成纯文本提取逻辑,这样XPage端的代码更简洁:
首先在Bean里定义一个Getter:public String getPlainRichTextContent() throws NotesException { NotesDocument doc = ...; // 获取对应的文档对象 NotesRichTextItem rtfItem = (NotesRichTextItem) doc.getFirstItem("yourRTFField"); return rtfItem != null ? rtfItem.getUnformattedText() : ""; }然后在XPage里直接绑定这个属性:
<xp:inputTextarea value="#{yourBean.plainRichTextContent}" rows="10" cols="50"></xp:inputTextarea>避免使用getItemValueString()
别尝试用doc.getItemValueString("yourRTFField")来获取内容,这个方法对于富文本字段来说,依然会带出部分RTF格式的字符串片段,没法得到真正干净的纯文本。
这样处理之后,xp:inputTextarea就能正确显示纯文本内容,不会再出现那些无关的格式元素了。
内容的提问来源于stack exchange,提问作者Malin
相关产品推荐
相关产品推荐

