Introduction

This page describes how to integrate Apache XAP with Struts2. I use the Person Manager struts sample to illustrate how to upgrade an html application to use XAP. Overall the integration is quite simple. I was able to repurpose all of the Java code (Data Model, ActionHandlers) from the sample. All that needed to be done was to re-write the *.ftl files to output a combination of xModify and XAL instead of html.

I have uploaded a zip file of the converted Person Manager application to my people directory. Download the XAP Person Manager Code To run the code unzip the archive ontop of an exploded version of the struts2-showcase-2.0.6.war. You can then run the sample by going to http://<server-address>:<port>/struts2-showcase-2.0.6/xap/ajax-index.html

The reason why integration with web frameworks is so easy, is that the XAP client retrieves the markup used to describe the application from the server and then renders it entirely on the client. This is the opposite of other Ajax toolkits where:

*You either are responsible for moving data from the server to the client using XHR and updating the UI with JavaScript code or

*The markup is down convert into HTML and JavaScript on the server as in some JSF implementation.

By rendering the markup on the client, the developer can reuse alot of existing code they already have in their application. Most of the time the Model and Controller code is reused. This leave developers to only change the view layer of their application. This is exactly what I did in the conversion of the Person Manager Sample.

Another reason that integration is fairly seamless with web frameworks is that XAP communicates with the server in the same manner that a HTML application does, which is through the use of HTTP get and posts.

Sample Files

In the example there are the following files

The "strutsMco" object is defined in the ajax-index.xal file.
<mco xmlns="http://openxal.org/core/mco" id="strutsMco" class="DisplayUIDocument"/>
Managed Client Objects or "mcos" are XAP way of complete seperating the business logic from the UI definition. This is important when building enterprise applications because, if makes the application much easier to maintain.

** displayAlert - Show what is in XAP's UI Document. The UI document is what you make changes to in order to update the screen.

** newPersonAction - Called from the new person form.

Using the request service, ui information is sent to the struts action. Once sent, the struts action is executed in the same way a HTML for is handled.