如何仅使用基本文本区域编辑Xpages中RichText字段的内容

如何仅使用基本文本区域编辑Xpages中RichText字段的内容,xpages,Xpages,如何禁用富文本字段的CkEditor,以便只呈现基本标记而不使用任何编辑器 我确信我肯定遗漏了一些明显的东西,但我认为如果不使用CkEditor,就无法使用XPage创建一个字段存储为RT的文档。我希望能够提示用户输入“很多”文本,但只能通过简单的多行输入,并将其存储为RT 如果我有 带有RT字段的窗体 绑定到所述字段的xp:InputExtArea控件的XPage 保存按钮 链接到该表单的documentdatasource 保存时,使用字段值创建文档,但它存储为文本而不是RT。将comp

如何禁用富文本字段的CkEditor,以便只呈现基本标记而不使用任何编辑器

我确信我肯定遗漏了一些明显的东西,但我认为如果不使用CkEditor,就无法使用XPage创建一个字段存储为RT的文档。我希望能够提示用户输入“很多”文本,但只能通过简单的多行输入,并将其存储为RT

如果我有

  • 带有RT字段的窗体
  • 绑定到所述字段的xp:InputExtArea控件的XPage
  • 保存按钮
  • 链接到该表单的documentdatasource
保存时,使用字段值创建文档,但它存储为文本而不是RT。将computeWithForm添加到dds属性中没有帮助

使用querysave或自定义转换器手动将其转换为RT是唯一的方法吗

如果我使用xp:inputRichText控件,它会很好地保存为RT,但我不希望在UI中使用CkEditor,而只是一个基本控件。有没有办法对xp:inputRichText控件执行编辑器=普通的操作

我一直在考虑尝试在没有运气的情况下重写dojoType或renderType


谢谢

我不确定如何操作字段类型。我假设Domino知道控件发生了什么,其方式与自定义控件格式化以匹配内容类型的方式大致相同。您可以强制使用内容类型

我可以将此作为备选方案。您可以在ckeditor中执行自定义工具栏操作,以删除工具栏并使其显示为普通文本字段。不过,这样做可能会导致UI复杂化。您还需要处理一个状态栏,使其显示为纯白色框。应该有另一个dojo属性类型

这段代码将为您提供一个没有工具栏的富文本框

<xp:inputRichText id="inputRichText1"
    value="#{document1.content}">
    <xp:this.dojoAttributes>
    <xp:dojoAttribute name="toolbar">
    <xp:this.value><![CDATA[#{javascript:var myToolbar = "[['']]";
                      return myToolbar}]]>
            </xp:this.value>
    </xp:dojoAttribute>
    </xp:this.dojoAttributes>
</xp:inputRichText>

我不知道如何操作字段类型。我假设Domino知道控件发生了什么,其方式与自定义控件格式化以匹配内容类型的方式大致相同。您可以强制使用内容类型

我可以将此作为备选方案。您可以在ckeditor中执行自定义工具栏操作,以删除工具栏并使其显示为普通文本字段。不过,这样做可能会导致UI复杂化。您还需要处理一个状态栏,使其显示为纯白色框。应该有另一个dojo属性类型

这段代码将为您提供一个没有工具栏的富文本框

<xp:inputRichText id="inputRichText1"
    value="#{document1.content}">
    <xp:this.dojoAttributes>
    <xp:dojoAttribute name="toolbar">
    <xp:this.value><![CDATA[#{javascript:var myToolbar = "[['']]";
                      return myToolbar}]]>
            </xp:this.value>
    </xp:dojoAttribute>
    </xp:this.dojoAttributes>
</xp:inputRichText>

您可以使用中将文本转换为富文本项

对于
getAsObject
您将编写以下代码(
document1
是您的数据源):

对于
getAsString
,只需获取富文本字段的内容和文本值

value.getContentAsText()
因此,您为
编写的代码如下所示:

<xp:inputTextarea id="inputTextarea1" value="#{document1.rtfield}">
    <xp:this.converter>
        <xp:customConverter getAsString="#{javascript:value.getContentAsText()}">
            <xp:this.getAsObject><![CDATA[#{javascript:var rtitem:NotesRichTextItem = document1.getDocument().createRichTextItem("rtfield");
rtitem.appendText(value);
return null;}]]></xp:this.getAsObject>
        </xp:customConverter>
    </xp:this.converter>
</xp:inputTextarea>

注意:如果希望使用文本区域更新富文本字段,则需要在
getaObject

中编写附加代码,以便将文本转换为富文本项

对于
getAsObject
您将编写以下代码(
document1
是您的数据源):

对于
getAsString
,只需获取富文本字段的内容和文本值

value.getContentAsText()
因此,您为
编写的代码如下所示:

<xp:inputTextarea id="inputTextarea1" value="#{document1.rtfield}">
    <xp:this.converter>
        <xp:customConverter getAsString="#{javascript:value.getContentAsText()}">
            <xp:this.getAsObject><![CDATA[#{javascript:var rtitem:NotesRichTextItem = document1.getDocument().createRichTextItem("rtfield");
rtitem.appendText(value);
return null;}]]></xp:this.getAsObject>
        </xp:customConverter>
    </xp:this.converter>
</xp:inputTextarea>


注意:如果希望使用文本区域更新富格文本字段,则需要在
getaObject

中编写附加代码。将值存储为富格文本的目的是为了避免纯文本项的大小限制吗?或者,您打算将未格式化文本存储为格式化数据类型,还有其他原因吗?这是由于大小限制的需要,据我所知,我只能通过mime类型来实现。我用它来标记内联图像中的文本,其中图像是嵌入数据的,这里需要一些澄清。是否能够使用querysave或custom converter实现这一点?将值存储为富文本的目的仅仅是为了避免纯文本项的大小限制?或者,您打算将未格式化文本存储为格式化数据类型,还有其他原因吗?这是由于大小限制的需要,据我所知,我只能通过mime类型来实现。我用它来标记内联图像中的文本,其中图像是嵌入数据的,这里需要一些澄清。使用querysave或自定义转换器可以实现这一点吗?谢谢Naveen。我曾希望可以通过更改渲染器或DojoType来完成,因为我知道您可以切换到dojo编辑器。必须是要切换到无的设置。在没有弄清楚如何做到这一点的情况下,我将采用你的方法。干杯,我最终没有像你那样为我工作。在首次保存之前无法获取后端文档。是在正确的方向,因为它解决了使用转换器的想法,连同一个帖子从每。如果您将getaObject更改为#{javascript:com.ibm.xsp.http.MimeMultipart.fromHTML(value)},那么它对于新文档和现有文档来说就像一个魅力一样,谢谢Naveen。我曾希望可以通过更改渲染器或DojoType来完成,因为我知道您可以切换到dojo编辑器。必须是要切换到无的设置。在没有弄清楚如何做到这一点的情况下,我将采用你的方法。干杯,我最终没有像你那样为我工作。在首次保存之前无法获取后端文档。是在正确的方向,因为它解决了使用转换器的想法,连同一个帖子从每。如果您将getaObject更改为#{javascript:com.ibm.xsp.http.MimeMultipart.fromHTML(value)},那么它对于新文档和现有文档来说就像一个魅力