Expand my Community achievements bar.

SOLVED

Issue getting forward.jp to work

Avatar

Level 1

I have created a custom form action which contains the following:  dialog, addfields.jsp, forward.jsp.

I am using the add fields.jsp to construct a simple form and a submit button. 

My intention is that when the user submits, to form data is sent to another component where i invoke a service and then change the display with the result of the service. 

I have tried using post.POST.jsp  to handle the form data, and this works as expected, but forward.jsp gives me a blank screen. I am suing the example in

/libs/foundation/components/form/actions/mail

as suggested by this document [http://docs.adobe.com/docs/en/cq/current/developing/developing-forms.html]

Could you please explain how i should use the forward.jp functionality correctly.

Many Thanks

1 Accepted Solution

Avatar

Correct answer by
Level 10

Ok - this use case would require that functionality. You followed these docs:

http://helpx.adobe.com/marketing-cloud/experience-manager.html

and got an error. That should not have happened. Please file an AEM ticket here:

http://helpx.adobe.com/marketing-cloud/experience-manager.html

View solution in original post

3 Replies

Avatar

Level 10

You can use AJAX to submit data from a form to a custom Sling Servlet. Once you get the request to the servlet - you have more control over what happens. You can invoke other AEM services, you can encode the data (ie - into JSON), you can invoke an AEM workflow, you can write data  to the JCR. You have more more control over the logic than using forward.jsp. 

See:  http://helpx.adobe.com/experience-manager/using/custom-sling-servlets.html

Avatar

Level 1

I have tried writing the tutorial you suggested, and the ajax method works well, But its not what I'm trying to achieve. 

​This is an order form which redirects to a confirmation page on submit. The confirmation page calls an email service which builds templates and emails the appropriate people. The page also displays a summary of the total order and collection times. 

To me this seems the a perfect scenario for forward.jsp, since all i want to do is make my form data accessible on the confirmation.jp where I call my service and print the confirmation.

My understanding was that the forward.jsp makes the form data available to the specified document.

(Simplified version of my code)

form:

<form name="orderForm" id="orderForm" action="#" method="post" class="form__parent validate-form"> <label class="form__label"> <span>Name</span> <input type="text" name="name" placeholder="Name*" class="form__input" tabindex="1" required> </label> <form>

 

forward.jsp:

<%@page session="false" %><% %><%@page import="com.day.cq.wcm.foundation.forms.FormsHelper"%><% %><%@taglib prefix="sling" uri="http://sling.apache.org/taglibs/sling/1.0" %><% %> <%@page import="com.day.cq.wcm.foundation.forms.FormsConstants"%> <sling:defineObjects/> <% FormsHelper.setForwardPath(slingRequest, "/my/path/to/page/with/confirmation/component"); FormsHelper.setRedirectToReferrer(request, true); %>

 

confirmation component:

<%@include file="/libs/foundation/global.jsp"%> <%@page session="false" %> <cq:includeClientLib categories="granite.utils" /> <cq:defineObjects/> <sling:defineObjects/> <% String name = request.getParameter("name"); %>

This is producing the following error

Error while processing /content/en/online-orders/order-confirmation

                             
Status
500
Message
javax.jcr.nodetype.ConstraintViolationException: No matching property definition: name = dane
Location/content/en/online-orders/order-confirmation
Parent Location/content/en/online-orders
Path
/content/en/online-orders/order-confirmation
Refererhttp://localhost:4502/content/en/tester.html?cq_ck=1417598847156&status=500&status=500
ChangeLog
<pre></pre>

Go Back

Modified Resource

Parent of Modified Resource

Avatar

Correct answer by
Level 10

Ok - this use case would require that functionality. You followed these docs:

http://helpx.adobe.com/marketing-cloud/experience-manager.html

and got an error. That should not have happened. Please file an AEM ticket here:

http://helpx.adobe.com/marketing-cloud/experience-manager.html