来自组件的 AEM 中的 CustomAction 类型

CustomAction Types in AEM From Component

我正在使用表单组件创建表单。我有电子邮件字段和用户名字段。我想在单击提交按钮时向给定的电子邮件 ID 发送一封电子邮件。在表单中,我 select 我的自定义操作类型调用负责发送电子邮件的 servlet。我的自定义操作类型只有 forward.jsp 作为脚本文件:

<%@page import="com.day.cq.wcm.foundation.forms.FormsConstants"%><sling:defineObjects/><%
      System.out.println(":::::::::::::::"+resource.getPath());  
    FormsHelper.setForwardPath(slingRequest, resource.getPath() + ".custommail.html");
    FormsHelper.setRedirectToReferrer(request, true);
%>

当我点击提交按钮时,我可以看到我的 forward.jsp 被调用,因为我可以在 stdout.log 中看到 resourcePath(content/geometrixx/en/toolbar/newsletter/jcr:content/par/start)。但是 servlet 没有得到调用,以防我点击 localhost:4502/content/geometrixx/en/toolbar/newsletter/jcr:content/par/start.custommail.html servlet 被调用,不知道为什么它不使用 FormsHelper 调用。

以及我们如何将参数(即电子邮件字段)传递给 servlet。

任何想法。 谢谢

查看此博客http://labs.sixdimensions.com/blog/2012-08-20/sending-email-adobe-cq-api/ 了解 AEM 中的电子邮件功能。

您需要将一个 servlet 注册到您的表单启动组件和正确的选择器。如果您使用的是基础表格,这将是这样的:

@SlingServlet(resoruceTypes = "foundation/components/form/start", methods = "POST", selectors = "custommail", extenstions = "html", generateComponent = false)
public class CustomMailServlet extends SlingAllMethodsServlet {

    @Override
    protected void doPost(final SlingHttpServletRequest request, final SlingHttpServletResponse response) throws ServletException, IOException {
        //your code here
    }
}