How to dinamically create URLs

by Laura Cigardi
12,026 views Published on Oct 24, 2011
Applies to: 6.1.1 or higher
Table of contents

In WebRatio it's possible to create URLs dinamically using the Script Component. In the script we create a URL to a particular action of the WebRatio Application.

NOTE: The script code described in this article is valid up to WebRatio 6.x.

 

An URL is composed of the following parts:

  • Url: the url where the application is deployed.
  • Action: the particular action we want to activate with the url.
  • Query string: all the parameters needed by the action in order to be executed.
  • Crc: the crc code to protect the URL.

Suppose that we want to implement this user registration process:

  • The user inserts his data, registrating in the application as an unconfirmed user.
  • The application sends a confirmation mail to the user with a link.
  • The user follows the link in the email and becomes a registered user.

In this example we need to send a mail containing a link to a particular action of the application. Refer to the following model:

 

Here the user data are inserted in the User table with the "unregistered user" Default Group and a mail is sent for the confirmation. The link contained in the mail activates the Selector Component "User confirmation" (with Custom URL Name = "registration"), then the Default Group of the user is changed in "registered user".

The Script Component that creates the URL, contains the following script:


#input String userOID



import com.webratio.rtx.RTXConstants

import com.webratio.struts.WRGlobals;

import com.webratio.struts.HttpRequestHelper

import com.webratio.rtx.core.BeanHelper



/*gets the request from the localContext*/

def request = localContext.get(RTXConstants.HTTP_SERVLET_REQUEST_KEY)



/*gets the session from the request*/

def session = request.getSession().getServletContext();

def requestHelper = (HttpRequestHelper) session.getAttribute(WRGlobals.HTTP_REQUEST_HELPER_KEY);



/*gets the URL of the application*/

def url = requestHelper.getAbsoluteURLContext(false, request)



/*defines the action to be activated*/

def action = "/registration.do"



/*defines the query string with all the parameters requested for the action execution*/

def queryString = "kcond1.userOID=" + userOID + "&rcond1.groupOID=1"



/*creates the URL for the confirmation, here the CRC is created by the requestHelper with the query string and the request as inputs*/

def confirmationURL = url + action + "?" + queryString + "&CRC=" + requestHelper.getCRC(queryString, request)



return confirmationURL