sling - AEM 6.1 Sightly basic form submit and redirect to same page -


i trying following on aem 6.1:

  1. develop simple form (3 input fields)
  2. process submitted values,
  3. and redirect same page processed values/result

i able submit values servlet, , process them (business logic), , result requestparamter can retrieve them on ui. stuck @ these:

  1. redirecting same page
  2. and retrieving request parameters , display them using sightly.

code snippets: servlet

@slingservlet( methods = { "post","get" },  name="com.tti.tticommons.service.servlets.leadtimetrendsservlet", paths = { "/services/processformdata" } ) public class tticommonservlet extends slingallmethodsservlet{    ... @override protected void dopost(slinghttpservletrequest request,slinghttpservletresponse response) throws servletexception,ioexception {   string result;   try {         enumeration<string> parameternames = request.getparameternames();         map<string, string> formparametersmap = new hashmap<string, string>();         while (parameternames.hasmoreelements()) {             paramname = parameternames.nextelement();             paramvalue = request.getparameter(paramname);             .......             .......        }         request.setattribute("result",result);         response.sendredirect("/content/ttii/en/**posttest.html**");     } } 

can please on ho retireve above "result" in posttest.html using sightly.

after lot of research , several trials, had code working. had pick related info several answers in stackoverflow. authors. posting solution here beneficial others.

result form response webservice:

enter image description here

process flow

  1. submit form data servlet's post method
  2. in servlet, values entered user request
  3. make necessary webservice calls. response(json)
  4. i added response-json parameter request
  5. using wrapper, forward necessary page
  6. define wcmuse class use sightly.
  7. assign 'request' use-class , process there
  8. use assigned values use-class ui using sightly

code snippets - html

  <form name="userregistrationform" method="post" action="/services/processformdata">  <input type="hidden" name=":redirect" value="posttest.html" /> <input type="submit" title="submit" class="btn submit btn-success" value="submit" tabindex="25" name="bttnaction">  <div data-sly-use.model="${'com.abccommons.service.helpers.postservicehelper' @ slingreq=request }"> **${model.getrawjson}** </div> 

code snippets - servlet

@slingservlet( label = "abc - common servlet",  metatype = true,  methods = { "post" },  name="com.abccommons.service.servlets.abcpostservlet", paths = { "/services/processformdata" } ) public class abcpostservlet extends slingallmethodsservlet{   @override protected void dopost(slinghttpservletrequest request,slinghttpservletresponse response) throws servletexception,ioexception {       log.info("\n\n----- abcpostservlet post: ");              string paramname;     string paramvalue;     string osgiservice="";      try {         enumeration<string> parameternames = request.getparameternames();         map<string, string> formparametersmap = new hashmap<string, string>();         while (parameternames.hasmoreelements()) {             paramname = parameternames.nextelement();             paramvalue = request.getparameter(paramname);              if (paramname.equals("osgiservice")) {                 osgiservice = paramvalue;             } else if (paramname.equals(":cq_csrf_token")) {                 //todo: don't add map             } else if (paramname.equals("bttnaction")) {                 //todo: dont' add map             } else {                 //log.info("\n---paramname="+paramname+", value="+paramvalue);                 formparametersmap.put(paramname, paramvalue);                                         }         }                     string parametersinjson = jsonhelper.tojson(formparametersmap);         log.info("\n\n----------- post paramters in json="+parametersinjson);          string json = webservicehelper.getjson(osgiservice, parametersinjson, request, response);         log.info("\n\n----------- post json web service="+json);          request.setattribute("jsonresponse",json);          //string redirectpage =  request.getparameter(":redirect");         //requestdispatcher dispatcher = request.getrequestdispatcher("/content/en/"+redirectpage);         requestdispatcher dispatcher = request.getrequestdispatcher("/content/en/postformtest.html");         getrequest getrequest = new getrequest(request);         dispatcher.forward(getrequest, response);                 } catch (exception e) {         log.error("slingservlet failed while retrieving resources");     } {        //todo     }          }  /** wrapper class return aem process request/response get.  */ private static class getrequest extends slinghttpservletrequestwrapper {     public getrequest(slinghttpservletrequest wrappedrequest) {         super(wrappedrequest);     }      @override     public string getmethod() {         return "get";     } }     

code snippets - postservicehelper - wcmuse class

public class postservicehelper extends wcmuse { protected final logger log = loggerfactory.getlogger(postservicehelper.class);  private slinghttpservletrequest httprequest;  private string rawjson;  @override public void activate() throws exception {     log.info("\n\n========= postservicehelper.activate():"+get("slingreq", slinghttpservletrequest.class));     this.httprequest = get("slingreq", slinghttpservletrequest.class);     //this.resourceresolver = getresourceresolver();             //log.info("\n\n========= getrequest()="+getrequest());       slinghttpservletrequest trequest;      set<string> keys = new hashset<string>();     enumeration<?> attrnames = this.httprequest.getattributenames();     while (attrnames.hasmoreelements()) {         string attr = (string) attrnames.nextelement();                     //log.info("\n--- key="+attr);          if (attr.equals("jsonresponse")) {             this.setrawjson((string)this.httprequest.getattribute(attr));             //log.info("\n---rawjson set : "+this.rawjson);         }     } }   public void setrawjson(string json) {     this.rawjson = json; }     public string getrawjson() {     return this.rawjson; } } 

Comments