我正在使用表单组件创建表单。我有电子邮件字段和用户名字段。我想点击提交按钮向给定的电子邮件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。
任何想法。 感谢
答案 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
}
}