如何在多字段中使用richtext(在CQ5对话框中)?(防止"this.el.dom未定义"错误)

tom*_*lec 3 aem

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

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

dialog.xml:

<myField
    jcr:primaryType="cq:Widget"
    name="./myField"
    xtype="multifield">
    <fieldConfig
        jcr:primaryType="cq:Widget"
        xtype="richtext">
    </fieldConfig>
</myField>
Run Code Online (Sandbox Code Playgroud)

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

  1. 使用textfield而不是a richtext或尝试不使用richtexta multifield.
  2. 如果richtextmultifield需要再下面跟随在你的开发envirnoment验证.

    覆盖/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;}
    
    Run Code Online (Sandbox Code Playgroud)

问题是我想在不改变Adobe代码的情况下使用make it.

tom*_*lec 8

我找到了一个解决方法,不需要更改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>
Run Code Online (Sandbox Code Playgroud)