Aem 当向页面添加CQ5表单时,CQ5如何也向页面添加附带的表单?

Aem 当向页面添加CQ5表单时,CQ5如何也向页面添加附带的表单?,aem,sling,Aem,Sling,在CQ5中,当表单(sling:resourceType=foundation/components/form/start)添加到页面时,CQ5会自动在该组件之后添加一个form\U end\U xyz(sling:resourceType=foundation/components/form/end)组件: 这是如何实现的?>P>有一个 com .No.Cq.WCM.Frime.Fr.IfL.FracePrimePuthPrase< /COD> OSGi服务实现。每当有一个POST HTTP

在CQ5中,当表单(
sling:resourceType=foundation/components/form/start
)添加到页面时,CQ5会自动在该组件之后添加一个
form\U end\U xyz
sling:resourceType=foundation/components/form/end
)组件:


这是如何实现的?

>P>有一个<代码> com .No.Cq.WCM.Frime.Fr.IfL.FracePrimePuthPrase< /COD> OSGi服务实现。每当有一个POST HTTP请求修改Sling资源时,就会调用这样的处理器。它是在提交之前调用的,因此可以更改所需的修改、取消修改(引发异常)等等

在这种情况下,处理器将添加缺少的
form\u end…
节点


描述了Selp POST的处理。<>代码> COM.NET.CQ.WCM.Fun.Fr.IMPL。FrimeSturthPuthPrase< /Cord>OSGi服务实现。每当有一个POST HTTP请求修改Sling资源时,就会调用这样的处理器。它是在提交之前调用的,因此可以更改所需的修改、取消修改(引发异常)等等

在这种情况下,处理器将添加缺少的
form\u end…
节点


非常好地描述了Sling POST处理。

FormParagraphPostProcessor类(
/libs/foundation/src/impl/src/main/java/com/day/cq/wcm/foundation/forms/impl/FormParagraphPostProcessor.java
)的
fixStructure()
方法添加/删除了表单端。此后处理器侦听CQ页面的修改。在修改页面的段落系统中找到表单资源后,它将相应地创建/删除表单结束段落

以下是
FormParagraphPostProcessor.java
中的代码片段

if ( ResourceUtil.isA(res, FormsConstants.RT_FORM_BEGIN)
    || ResourceUtil.isA(res, FormsConstants.RT_FORM_END)) {
    if ( FormsHelper.checkFormStructure(res) != null ) {
        logger.debug("Fixed forms structure at {}", contentResource.getPath());
    }
}else {
    fixStructure(res);
}
您可以参考以下链接,这些链接将引出如何添加form_end,以及扩展form start组件的问题


FormParagraphPostProcessor类(
/libs/foundation/src/impl/src/main/java/com/day/cq/wcm/foundation/forms/impl/FormParagraphPostProcessor.java
)的
fixStructure()
方法添加/删除表单结尾。此后处理器侦听CQ页面的修改。在修改页面的段落系统中找到表单资源后,它将相应地创建/删除表单结束段落

以下是
FormParagraphPostProcessor.java
中的代码片段

if ( ResourceUtil.isA(res, FormsConstants.RT_FORM_BEGIN)
    || ResourceUtil.isA(res, FormsConstants.RT_FORM_END)) {
    if ( FormsHelper.checkFormStructure(res) != null ) {
        logger.debug("Fixed forms structure at {}", contentResource.getPath());
    }
}else {
    fixStructure(res);
}
您可以参考以下链接,这些链接将引出如何添加form_end,以及扩展form start组件的问题