Aem cq5,基于复选框的值执行验证

Aem cq5,基于复选框的值执行验证,aem,Aem,我有一个复选框和一个下拉列表,我希望在勾选复选框时,下拉列表成为必填字段(因为不能为空) 我在选项卡面板中有这些小部件,在选项卡中我有这些设置。我知道有很多听众,但我不知道如何让他们为我服务。在提交之前,我也尝试过使用一个侦听器,但这对我来说不起作用 在CQ5中有没有一种简单易行的方法来实现这一点?简短的回答:其实没有一种简单易行的方法来实现这一点 长长的回答: 我建议创建一个新的xtype来添加这些额外的ui。在对话框XMLs中有很多垃圾代码片段,但是我不建议在您的XMLs中使用JavaScr

我有一个复选框和一个下拉列表,我希望在勾选复选框时,下拉列表成为必填字段(因为不能为空)

我在选项卡面板中有这些小部件,在选项卡中我有这些设置。我知道有很多听众,但我不知道如何让他们为我服务。在提交之前,我也尝试过使用一个侦听器,但这对我来说不起作用


在CQ5中有没有一种简单易行的方法来实现这一点?

简短的回答:其实没有一种简单易行的方法来实现这一点

长长的回答:

我建议创建一个新的xtype来添加这些额外的ui。在对话框XMLs中有很多垃圾代码片段,但是我不建议在您的XMLs中使用JavaScript。我不会为您编写代码,但我将提供一种技术方法,希望能为CQ领域中的动态组件提供更好的实践这需要一些中级JavaScript技能和熟悉CQ的ExtJS 3.4变体。

  • 在包含复选框和下拉列表的新JavaScript文件中编写新的xtype。它将有类似以下的线条:

    
    var MyCustomXtypeObject=CQ.Ext.extend(CQ.Ext.Panel,{。。。
    

    
    CQ.Ext.reg('XTYPE_NAME',MyCustomXtypeObject);
    

  • CQ.Ext.form.Checkbox
    CQ.Ext.form.ComboBox
    添加到
    MyCustomXtypeObject
    中。将配置添加到这些项时,可以通过设置
    id
    并使用
    CQ.Ext.getCmp()使两个小部件相互对话
    method。第一个参数需要一个ID并返回小部件的实例。将事件侦听器设置为两个小部件,以便您可以编程您的业务逻辑需求。ExtJS 3.4文档将在整个过程中成为您的朋友。还可以查看CQ现有的自定义xtypes以获取示例和设置。(使用CRX DE查找示例或打包
    /libs
    ,在文件系统上下载/解压缩,并使用IDE的搜索机制)

  • 创建一个包含JS文件的客户端库。将类别设置为
    cq.widgets
    。这是在cq JavaScript端获得它的最简单实现,但为了组织起见,有更好的实践

  • 在该对话框中,将带有
    primaryType
    的xtype添加为
    cq:Panel
    (因为它是一个Ext.Panel),例如:
    
    

  • 测试

  • 我建议您使用CRXDE和增量原型,因为故障排除的愤怒将使您放弃持续的构建/部署过程

    CQ还遵循Ext的表单3.4指南,因此如果需要数据持久化,只需在标记上使用通用的
    name
    属性即可。传入的JSON应该为其提供数据(如果没有,您可以从包装器组件实例中提取
    Ext.data.Store
    ,并手动预填充表单元素)


    肯定有很多领域知识需要以这种方式实现,但从长远来看,当您的需求发生变化但XML配置有限时,这将省去很多麻烦。这种方法是可单元测试的,比在有限的方法上通过配置进行流式处理更具性能。我有很多使用自定义dia的经验日志,这是实现定制CQ组件的最佳方式(也是CQ核心开发人员实现管理/基础小部件的方式)

    这是一个很好的答案,但我们的需求发生了变化,我不需要实现此功能。。。