如何在多字段中使用富文本(在 CQ5 对话框中)? (防止“this.el.dom未定义”错误)

2024-05-12

我创建了一个自定义组件,并尝试使用 RTE (xtype="richtext")在我的对话框中的多文件中。

现在,当我尝试删除项目时,或者在关闭并重新打开对话框后添加另一个项目时,该对话框既不会关闭,也不会使用“确定”按钮保存数据。

对话框.xml:

<myField
    jcr:primaryType="cq:Widget"
    name="./myField"
    xtype="multifield">
    <fieldConfig
        jcr:primaryType="cq:Widget"
        xtype="richtext">
    </fieldConfig>
</myField>

Sham HC 发布了 2 个解决方案AEM 常见问题解答 http://aemfaq.blogspot.in/2013/04/richtext-in-multifield-widget.html:

  1. Use textfield代替richtext或者尝试不使用richtext in a multifield.
  2. If richtext in a multifield是必需的,然后按照以下步骤并在您的开发环境中进行验证。

    覆盖/libs/cq/ui/widgets/source/widgets/form/RichText.js 在方法syncValue(第910行)的覆盖文件中,将[1]替换为[2]。

    [1] this.el.dom.value = html;
    [2] if(this.el.dom){this.el.dom.value = html;}
    

问题是我想使用 make 它而不改变 Adob​​e 的代码。


我找到了一种解决方法,不需要更改 CQ 小部件的代码。 你需要设置richtext's destroy事件处理程序,创建虚拟对象this.el.dom:

<myField
    jcr:primaryType="cq:Widget"
    name="./myField"
    xtype="multifield">
    <fieldConfig
        jcr:primaryType="cq:Widget"
        xtype="richtext">
        <listeners
            jcr:primaryType="nt:unstructured"
            destroy="function() {this.el.dom={};}"/>
    </fieldConfig>
</myField>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在多字段中使用富文本(在 CQ5 对话框中)? (防止“this.el.dom未定义”错误) 的相关文章