AEM中的CustomAction类型来自组件

时间:2015-03-03 18:26:14

标签: cq5 aem

我正在使用表单组件创建表单。我有电子邮件字段和用户名字段。我想点击提交按钮向给定的电子邮件ID发送电子邮件。在表单中,我选择我的自定义操作类型,该类型调用负责发送电子邮件的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调用。

还有我们如何将参数即email-field传递给servlet。

任何想法。 感谢

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

您需要在表单启动组件和正确的选择器中注册一个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
    }
}