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

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

dialog.xml:

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

Sham HC在AEM FAQ's发布了2个解决方案:


  • 使用textfield代替richtext或尝试在richtext中不要使用multifield
  • 如果需要richtext中的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而不更改Adobe的代码。

    最佳答案

    我找到了一种解决方法,不需要更改CQ小部件的代码。
    您需要设置richtextdestroy事件处理程序,以创建虚拟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>
    

    10-04 22:47