Here is information about an example application I created demonstrating a nice way to deal with validation in Struts. It uses XDoclet to generate the validation.xml file from tagged form bean setters. Below is from a post where I announced this application to the world. Please only contact me about this application using the e-mail address below, do not reply about it in this forum as I am not a frequent visitor here. I'm tuning in this week to check out the Q&A with Ted Husted!
----------
The application I used in my September TriJUG presentation, and thereafter at several symposiums, another JUG (NOVA JUG) and ApacheCon has now been bundled for mass release.
It is a trimmed down version of the application Steve and I developed for our Java Development with
Ant book.
Relevant to Struts folks are these tidbits:
- XDoclet is generating struts-config.xml, validation.xml, web.xml, and antbook.tld
- LabelTag (currently mysteriously busted for required tagging) is included. This tag styles field labels differently if its in error, and (when its not busted, it works on my production app actually) it shows an asterisk by required fields.
- strutsgen: a one-off starter generation for
JSP's and ApplicationResources.properties snippets for cutting and pasting into the main application. It uses XDoclet to process a specified form bean and uses the fields it finds for generation.
- Use of StrutsTestCase for Cactus
testing.
- Maybe some other Struts goodies lurking there that I've forgotten to mention.
For XDoclet folks, these are of interest:
- The strutsgen subproject uses custom templates and a custom tag handler demonstrating some powerful features of XDoclet.
- Use of Ant property substitution in XDoclet tags.
- Use of XDoclet template tags in merge points, showing how to do some conditional things out-of-the-box with XDoclet (turning Cactus servlet on and off, in this example).
The application itself is a document search engine, based on Lucene, and should run out of the box in
Tomcat or
JBoss. It even has the ability to (at build time) toggle between whether to use a session bean or not (functionality is the same either way). By default, you can simply deploy the WAR that you've built and it will work without EJB, but if you are interested in exploring the session bean piece it can be turned on.
I am in the process of creating much more detailed documentation, but I wanted to get this out sooner rather than later. If you find any problems or have any questions, please do not hesitate to let me know so I can refine it and post updates.
The one documentation I need to provide now is to note that you'll need j2ee.jar to build (from the J2EE 1.3+ SDK). I include all other API's. To build, unzip the file (link below) and it will expand into JavaDevWithAnt directory. In that directory, run Ant. If you have J2EE_HOME set you shouldn't need to do anything... just "ant". You'll also need to build a site index, so run "ant build-site-index". This is intentionally two separate steps. If you don't have J2EE_HOME set, then you need to provide j2ee.jar to the build. Do it this way:
ant -Dj2ee.jar=/path/to/my/j2ee.jar
Where "/path/to/my/j2ee.jar" is the actual path to your j2ee.jar
Post any questions/problems to me directly. E-mail me at
[email protected].
Download:
http://www.ehatchersolutions.com/downloads/ Latest version is 0.3, and its been proven to work on Windows and Mac OS X. You will need Ant 1.5(.1) and
JUnit 3.8(.1).