You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:14:47