cq:包含CQ形式的默认组件以及服务器验证

时间:2016-07-06 21:10:28

标签: adobe cq5 aem

我想自定义OOTB CQ5用户表单组件的开始/结束,以便在将“表单”组件拖放到页面上时预先填充某些自定义组件。

我目前有一个覆盖/应用/基础/组件/表单元素,其中定制了开始/结束/操作。但是我想找出方法将表单添加到页面时添加属于FORM组的组件到表单开始.......结束页面。

我已尝试将<cq:include path= "customComp" resourceType="/pathto/customComponent" />用于form-end组件的jsp,这会在显示时添加/显示自定义组件,但不会执行服务器验证,因为它不是单独的节点页面上的起始节点和结束节点之间,但动态添加的节点。

这基本上是在表单放在页面上时强制执行/强制使用我的自定义验证码组件。

提前致谢!

1 个答案:

答案 0 :(得分:1)

如果您希望将表单创建完全保留给作者(与OOTB组件一样),则没有简单的方法可以“潜入”强制验证码组件。即使如果你设法放入验证码组件,作者也可以删除它或将其移出段落系统。

使用form-end对captcha进行Mingling可能是可能的,但不是没有从头开始重新构建表单端组件。我不想那样做。

我看到三个可能对您有所帮助的选项:

  1. 实现一个jcr EventListener,只要创建或更改表单,它就会触发。检查jcr中的表单数据结构,当缺少必需的验证码组件时,添加它并提交。这种行为当然有点阴暗,可能会使作者感到惊讶 - 但它会起作用。
  2. 构建一个包装器表单组件,其中包含一个带有完全预配置表单的段落系统,包括form-start,captcha和form-end。这种方法甚至为作者节省了一些工作,没有人会轻易“忘记”关于chaptcha。然而,没有什么能阻止邪恶作者明确删除catpcha组件。
  3. 构建一个完全自定义的表单组件,该组件不使用任何OOTB组件。在这种情况下,您可以完全控制作者可以做什么和不可以做什么。最有可能的是,为了节省开发时间,你会放弃很多灵活性,并最终得到一个静态的形式,作者可以编辑一些重要的部分。