
One of the key extension point in Struts is the 
request processing implementation
class, which by default is RequestProcessor. 
If Tiles is being used, then the default implementation
class will be TilesRequestProcessor.
Your first action in configuring Strecks is to add a controller element to 
the struts-config.xml, changing the request processor implementation class
to org.strecks.controller.ControllerRequestProcessor. If using Tiles, you
can use the request processor implementation class 
org.strecks.controller.TilesControllerRequestProcessor.
An example controller entry is shown below:
If you want to convert an existing application or module which is already
using an extension of RequestProcessor or TilesRequestProcessor, you will need to
modify this class to work with Strecks. Otherwise, no modifications to existing source
code should be necessary. Existing Action and ActionForms will still work with Strecks.
<controller processorClass="org.strecks.controller.ControllerRequestProcessor" contentType="text/html;charset=utf-8" inputForward="true" nocache="true" />
Adding interceptors in Strecks is straightforward. Simply add entries into strecks.properties, as shown in the example below:
before.interceptor.1=org.strecks.interceptor.ActionLoggingInterceptor before.interceptor.2=org.strecks.interceptor.RedirectBeforeInterceptor after.interceptor.1=org.strecks.interceptor.HistoryRecorder after.interceptor.2=org.strecks.interceptor.ActionLoggingInterceptor
Note that the interceptors will be called in the order determined by the number part of the
property name. For example, HistoryRecorder.afterExecute() will be called before
ActionLoggingInterceptor.afterExecute().
The one gotcha is to make sure that the numbering is correct in following an 
unbroken sequence. For example, if 
the line after.interceptor.1=org.strecks.interceptor.HistoryRecorder
is removed, then ActionLoggingInterceptor.afterExecute() will not be called.
To make this configuration work, the line 
after.interceptor.2=org.strecks.interceptor.ActionLoggingInterceptor
will need to be changed to 
after.interceptor.1=org.strecks.interceptor.ActionLoggingInterceptor.