Anonymous avatar Anonymous committed 54e8651

WebWork 2.2.2 release
o removing old wiki docs
o adding latest taglib docs
Issue number:
Obtained from:
Submitted by:
Reviewed by:

git-svn-id: http://svn.opensymphony.com/svn/webwork/trunk@2550 573baa09-0c28-0410-bef9-dab3c582ae83

Comments (0)

Files changed (418)

docs/tags/Date.html

 </p>
 
 <p>
-<!-- START SNIPPET: javadoc --> Format Date object in different ways. <p> The date tag will allow you to format a Date in a quick and easy way. You can specify a <b>custom format</b> (eg. "dd/MM/yyyy hh:mm"), you can generate <b>easy readable notations</b> (like "in 2 hours, 14 minutes"), or you can just fall back on a <b>predefined format</b> with key 'webwork.date.format' in your properties file. If that key is not defined, it will finally fall back to the default Locale.MEDIUM formatting. <b>Note</b>: If the requested Date object isn't found on the stack, a blank will be returned. </p> <!-- END SNIPPET: javadoc --> <p/> <b>Examples</b> <pre> <!-- START SNIPPET: example --> &lt;ww:date name="person.birthday" format="dd/MM/yyyy" /&gt; &lt;ww:date name="person.birthday" nice="true" /&gt; &lt;ww:date name="person.birthday" /&gt; <!-- END SNIPPET: example --> </pre> <code>Date</code>
+<!-- START SNIPPET: javadoc --> Format Date object in different ways. <p> The date tag will allow you to format a Date in a quick and easy way. You can specify a <b>custom format</b> (eg. "dd/MM/yyyy hh:mm"), you can generate <b>easy readable notations</b> (like "in 2 hours, 14 minutes"), or you can just fall back on a <b>predefined format</b> with key 'webwork.date.format' in your properties file. If that key is not defined, it will finally fall back to the default DateFormat.MEDIUM formatting. <b>Note</b>: If the requested Date object isn't found on the stack, a blank will be returned. </p> Configurable attributes are :- <ul> <li>name</li> <li>nice</li> <li>format</li> </ul> <p/> Following how the date component will work, depending on the value of nice attribute (which by default is false) and the format attribute. <p/> <b><u>Condition 1: With nice attribute as true</u></b> <table border="1"> <tr> <td>i18n key</td> <td>default</td> </tr> <tr> <td>webwork.date.format.past</td> <td>{0} ago</td> </tr> <tr> <td>webwork.date.format.future</td> <td>in {0}</td> </tr> <tr> <td>webwork.date.format.seconds</td> <td>an instant</td> </tr> <tr> <td>webwork.date.format.minutes</td> <td>{0,choice,1#one minute|1<{0} minutes}</td> </tr> <tr> <td>webwork.date.format.hours</td> <td>{0,choice,1#one hour|1<{0} hours}{1,choice,0#|1#, one minute|1<, {1} minutes}</td> </tr> <tr> <td>webwork.date.format.days</td> <td>{0,choice,1#one day|1<{0} days}{1,choice,0#|1#, one hour|1<, {1} hours}</td> </tr> <tr> <td>webwork.date.format.years</td> <td>{0,choice,1#one year|1<{0} years}{1,choice,0#|1#, one day|1<, {1} days}</td> </tr> </table> <p/> <b><u>Condition 2: With nice attribute as false and format attribute is specified eg. dd/MM/yyyyy </u></b> <p>In this case the format attribute will be used.</p> <p/> <b><u>Condition 3: With nice attribute as false and no format attribute is specified </u></b> <table border="1"> <tr> <td>i18n key</td> <td>default</td> </tr> <tr> <td>webwork.date.format</td> <td>if one is not found DateFormat.MEDIUM format will be used</td> </tr> </table> <!-- END SNIPPET: javadoc --> <p/> <b>Examples</b> <pre> <!-- START SNIPPET: example --> &lt;ww:date name="person.birthday" format="dd/MM/yyyy" /&gt; &lt;ww:date name="person.birthday" format="%{getText('some.i18n.key')}" /&gt; &lt;ww:date name="person.birthday" nice="true" /&gt; &lt;ww:date name="person.birthday" /&gt; <!-- END SNIPPET: example --> </pre> <code>Date</code>
 </p>
 
 <h2>Attributes</h2>

docs/tags/Reset.html

 </p>
 
 <p>
-<!-- START SNIPPET: javadoc --> Render a reset button. The reset tag is used together with the form tag to provide form resetting. The reset can have two different types of rendering: <ul> <li>input: renders as html &lt;input type="reset"...&gt;</li> <li>button: renders as html &lt;button type="reset"...&gt;</li> </ul> Please note that the button type has advantages by adding the possibility to seperate the submitted value from the text shown on the button face, but has issues with Microsoft Internet Explorer at least up to 6.0 <!-- END SNIPPET: javadoc --> <p/> <b>Examples</b> <pre> <!-- START SNIPPET: example --> &lt;ww:reset value="%{'Reset'}" /&gt; <!-- END SNIPPET: example --> </pre> <pre> <!-- START SNIPPET: example2 --> Render an button reset: &lt;ww:reset type="button" value="%{'Reset'}" label="Rest the form"/&gt; <!-- END SNIPPET: example2 --> </pre>
+<!-- START SNIPPET: javadoc --> Render a reset button. The reset tag is used together with the form tag to provide form resetting. The reset can have two different types of rendering: <ul> <li>input: renders as html &lt;input type="reset"...&gt;</li> <li>button: renders as html &lt;button type="reset"...&gt;</li> </ul> Please note that the button type has advantages by adding the possibility to seperate the submitted value from the text shown on the button face, but has issues with Microsoft Internet Explorer at least up to 6.0 <!-- END SNIPPET: javadoc --> <p/> <b>Examples</b> <pre> <!-- START SNIPPET: example --> &lt;ww:reset value="%{'Reset'}" /&gt; <!-- END SNIPPET: example --> </pre> <pre> <!-- START SNIPPET: example2 --> Render an button reset: &lt;ww:reset type="button" value="%{'Reset'}" label="Reset the form"/&gt; <!-- END SNIPPET: example2 --> </pre>
 </p>
 
 <h2>Attributes</h2>

docs/wikidocs/06-15-2005 TOC Homework.html

-<html>
-    <head>
-        <title>WebWork - 
-        06-15-2005 TOC Homework
-         </title>
-	    <link rel="stylesheet" href="styles/site.css" type="text/css" />
-        <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
-    </head>
-
-    <body>
-	    <table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#ffffff">
-		    <tr>
-			    <td valign="top" class="pagebody">
-				    <h1><a name="06-15-2005TOCHomework-DocTeamSuggestions"></a>Doc Team Suggestions</h1>
-
-<h2><a name="06-15-2005TOCHomework-DocumentationStyle"></a>Documentation Style</h2>
-
-<p><a href="Style Guide.html" title="Style Guide">Click here</a> for the suggestions on documentation style.</p>
-
-
-<h2><a name="06-15-2005TOCHomework-Documentation%3A"></a>Documentation:</h2>
-
-<p>One-paragraph description of what is WebWork. And then, an explanation of how the documentation is divided:</p>
-
-<p><cite>If you're new to WebWork, please read the <b>Overview</b> and proceed to the <b>Tutorial</b> to get started. Experienced users can refer to the <b>Cookbook</b> for advanced topics. Use the <b>Reference</b> on an as-needed basis for more specific details. For detailed information about WebWork project, read the section <b>Project Information</b>. Information about many projects related to WebWork can be found in <b>Related Projects</b></cite></p>
-
-<p><cite>If you have any questions, you can ask them at the user forum/mailing list. Please be sure to read the <b>FAQ</b> before asking any questions.</cite></p>
-
-<ol>
-	<li>Overview</li>
-	<li>Project Information</li>
-	<li>FAQ</li>
-	<li>Tutorial</li>
-	<li>Cookbook</li>
-	<li>Reference</li>
-	<li>Related Projects</li>
-</ol>
-
-
-<p><em>(details on each of the above follows)</em></p>
-
-<h3><a name="06-15-2005TOCHomework-Overview"></a>Overview</h3>
-<ol>
-	<li>What is WebWork</li>
-	<li>Comparison to Struts (Tapestry, JSF, etc.?) &#8211; <em>current material and links to existing articles</em></li>
-	<li>Articles and press about WebWork</li>
-	<li>Projects using WebWork / Testimonials</li>
-</ol>
-
-
-<h3><a name="06-15-2005TOCHomework-ProjectInformation"></a>Project Information</h3>
-<ol>
-	<li>License</li>
-	<li>Deployment notes</li>
-	<li>WebWork versions
-	<ul>
-		<li>Current release</li>
-		<li>Previous releases</li>
-		<li>Migrating from WebWork 1.x;</li>
-	</ul>
-	</li>
-	<li>Dependencies</li>
-	<li>WebWork Team</li>
-	<li>WebWork community
-	<ul>
-		<li>Mailing lists / Forum</li>
-		<li>Bug tracker</li>
-		<li>Wiki</li>
-		<li>How to contribute?</li>
-	</ul>
-	</li>
-</ol>
-
-
-<h3><a name="06-15-2005TOCHomework-FAQ"></a>FAQ</h3>
-<ol>
-	<li>Category 1</li>
-	<li>Category 2</li>
-	<li>Etc.</li>
-</ol>
-
-
-<p><em>The questions included in the FAQ should be extracted from the User Forum/Mailing List. Someone could review recent messages and find out which questions are asked the most. After that, separate the questions into categories to form the subsections.</em></p>
-
-<h3><a name="06-15-2005TOCHomework-Tutorial"></a>Tutorial</h3>
-<ol>
-	<li>Downloading and installing WebWork</li>
-	<li>Setting up the test environment (to test tutorial source code)</li>
-	<li>Basic configuration and your first action (Hello WebWorld)</li>
-	<li>Understanding actions</li>
-	<li>Understanding results</li>
-	<li>Meet WebWork tag library <em>(would also explain a little bit of OGNL)</em></li>
-	<li>Evaluating other view options: Velocity</li>
-	<li>Evaluating other view options: FreeMarker</li>
-	<li>Understanding interceptors</li>
-	<li>Performing validation</li>
-	<li>Performing dependency injection (IoC) through components</li>
-	<li>Going i18n (internationalization)</li>
-	<li>Retrieving data without a full request using XHR/Ajax</li>
-</ol>
-
-
-<p><em>This should be in conformance to Patrick's example app. Vitor will talk to Patrick to get his opinions on the sequence of lessons suggested above and how to make the tutorial conformant to the example app.</em></p>
-
-<h3><a name="06-15-2005TOCHomework-Cookbook"></a>Cookbook</h3>
-<ul>
-	<li>Tips and tricks on Application Servers <em>(this was in "Overview")</em></li>
-	<li>Stuff from the current <a href="Cookbook.html" title="Cookbook">Cookbook</a>...</li>
-</ul>
-
-
-<p><em>All the tips in the <a href="Cookbook.html" title="Cookbook">Cookbook</a> should be revised. Some of them could belong to the tutorial instead (basic stuff). 3rd party integration tips could be separated from the rest. Also, it would be good if all of them also followed the same structure, kind of like a tutorial lesson, but on advanced topics. The differences between the Tutorial and the Cookbook would be:</em></p>
-
-<table class='confluenceTable'><tbody>
-<tr>
-<th class='confluenceTh'>&nbsp;</th>
-<th class='confluenceTh'> Tutorial </th>
-<th class='confluenceTh'> Cookbook </th>
-</tr>
-<tr>
-<td class='confluenceTd'> User level required: </td>
-<td class='confluenceTd'> Begginner </td>
-<td class='confluenceTd'> Intermediate </td>
-</tr>
-<tr>
-<td class='confluenceTd'> Availability of Source code: </td>
-<td class='confluenceTd'> In the documentation and in the <tt>src</tt> folder of the distribution (ready for deploy and test). </td>
-<td class='confluenceTd'> Only in the documentation, and may not be <em>complete</em>. </td>
-</tr>
-<tr>
-<td class='confluenceTd'> Should be read in sequence? </td>
-<td class='confluenceTd'> Yes. </td>
-<td class='confluenceTd'> No. </td>
-</tr>
-</tbody></table>
-
-<p><em>A question that arised in the TOC discussion was: what's the difference between the Cookbook and the FAQ? Well, some of the items in the Cookbook are also FAQs (people ask about them a lot), so they would also be included in the FAQ, with links to the Cookbook. The FAQ should have quick answers or link to longer answers, such as the Cookbook. The Cookbook is tutorial-style, a collection of mini HOW-TOs.</em></p>
-
-<h3><a name="06-15-2005TOCHomework-Reference"></a>Reference</h3>
-<ol>
-	<li>Introduction &#8211; <em>This will have parts of Overview in it, rather than forwarding them to Overview altogether.</em></li>
-	<li>Architecture</li>
-	<li>Configuration</li>
-	<li>Interceptors</li>
-	<li>Action Chaining</li>
-	<li>IOC / Dependency Injection</li>
-	<li>UI Components - JSP, Velocity, Freemarker, JavaScript validation and DWR support</li>
-	<li>Result Types</li>
-	<li>Type Conversion</li>
-	<li>Validation</li>
-	<li>OGNL / Object Graph Navigation Language</li>
-	<li>Internationalization</li>
-	<li>3rd Party Integration - Sitemesh, Spring, Pico, Hibernate, JUnit, Quartz, etc.</li>
-</ol>
-
-
-<p><em>An important thing about the reference is that it should be written in book-style (or hibernate-reference-style) so a PDF version would be generated and people could print it, pass it around the office or read it while working out or relaxing in bed. <img class="emoticon" src="./icons/emoticons/smile.gif" height="20" width="20" align="absmiddle" alt="" border="0"/> Therefore, Confluence's PDF features play a big part in this. Some questions that came up during the discussions:</em></p>
-
-<ul>
-	<li><em>The reference could link to other pages in some situations. Links in confluence do not reference URLs, but the page's names. Does Confluence convert them to the URL before writing the PDF? If not, should the Reference not link to any pages outside it?</em></li>
-</ul>
-
-
-<ul>
-	<li><em>Can we select which pages are converted into PDF? If we want to convert only the Reference to PDF, can we do that? How does that work?</em></li>
-</ul>
-
-
-<h3><a name="06-15-2005TOCHomework-RelatedProjects"></a>Related Projects</h3>
-<ol>
-	<li>WebFlow (graphical chart tool)</li>
-	<li>EclipseWork (Eclipse Plugin)</li>
-	<li>IDEA Plugin</li>
-	<li>WebWork Optional</li>
-	<li>Etc. ?</li>
-</ol>
-
-
-                    			    </td>
-		    </tr>
-	    </table>
-    </body>
-</html>

docs/wikidocs/3rd Party Integration.html

-<html>
-    <head>
-        <title>WebWork - 
-         Party Integration
-        </title>
-	    <link rel="stylesheet" href="styles/site.css" type="text/css" />
-        <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
-    </head>
-
-    <body>
-	    <table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#ffffff">
-		    <tr>
-			    <td valign="top" class="pagebody">
-				    <ol>
-	<li><a href="Sitemesh.html" title="SiteMesh">Sitemesh</a></li>
-	<li><a href="Spring.html" title="Spring">Spring</a></li>
-	<li><a href="Pico.html" title="Pico">Pico</a></li>
-	<li><a href="Hibernate.html" title="Hibernate">Hibernate</a></li>
-	<li><a href="JSTL.html" title="JSTL">JSTL</a></li>
-	<li><a href="JUnit.html" title="JUnit">JUnit</a></li>
-	<li><a href="Quartz.html" title="Quartz">Quartz</a></li>
-	<li><a href="JasperReports.html" title="JasperReports">JasperReports</a></li>
-	<li><a href="Tiles.html" title="Tiles">Tiles</a></li>
-</ol>
-
-
-                    			    </td>
-		    </tr>
-	    </table>
-    </body>
-</html>

docs/wikidocs/AJAX Client Side Validation.html

-<html>
-    <head>
-        <title>WebWork - 
-         Client Side Validation
-        </title>
-	    <link rel="stylesheet" href="styles/site.css" type="text/css" />
-        <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
-    </head>
-
-    <body>
-	    <table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#ffffff">
-		    <tr>
-			    <td valign="top" class="pagebody">
-				    <p>AJAX-based client side validation improves upon <a href="Pure JavaScript Client Side Validation.html" title="Pure JavaScript Client Side Validation">Pure JavaScript Client Side Validation</a> by using a combination of JavaScript, DOM manipulation, and remote server communication via <a href="http://getahead.ltd.uk/dwr" title="Visit page outside Confluence">DWR</a>. Unlike the pure client side implementation, AJAX-based validation communicates with the server. This means all your validation rules that worked when submitting a form will still work within the browser.</p>
-
-<table cellpadding='5' width='85%' cellspacing='8px' class='noteMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td>This validation mode only works with the <a href="ajax theme.html" title="ajax theme">ajax theme</a></td></tr></table>
-
-<p>The validation occurs on each <b>onblur</b> event for each form element. As each user types in some values and moves to the next form element, the value (and all other values previously entered) will be sent to the server for validation. The entire validation stack is run, including visitor validators and your action's validate() method.</p>
-
-<p>If there is an error, like the pure implementation, the HTML and DOM will be updated immediately.</p>
-
-<p>For an example of this, see <a href="AJAX Validation.html" title="AJAX Validation">AJAX Validation</a>.</p>
-
-                    			    </td>
-		    </tr>
-	    </table>
-    </body>
-</html>

docs/wikidocs/AJAX Validation.html

-<html>
-    <head>
-        <title>WebWork - 
-         Validation
-        </title>
-	    <link rel="stylesheet" href="styles/site.css" type="text/css" />
-        <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
-    </head>
-
-    <body>
-	    <table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#ffffff">
-		    <tr>
-			    <td valign="top" class="pagebody">
-				    <h1><a name="AJAXValidation-Description"></a>Description</h1>
-<p>The following is describes how to do simple ajax validation in webwork.</p>
-
-<table cellpadding='5' width='85%' cellspacing='8px' class='noteMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td>This requires DWR servlet being setup, dojo and the ajax theme being used.</td></tr></table>
-
-<table cellpadding='5' width='85%' cellspacing='8px' class='noteMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td>In the Ajax theme, dwr is used for normal validation while dojo everything else (widgets, XHR, browser JS events etc.)</td></tr></table>
-
-<table cellpadding='5' width='85%' cellspacing='8px' class='noteMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td>In order for validation to function properly it is advised to used standard WebWork Tags.</td></tr></table>
-
-<h1><a name="AJAXValidation-SetupDWR"></a>Setup DWR</h1>
-<p>DWR could be setup by having the following dwr configuration (dwr.xml) at /WEB-INF/ directory. If it needs to be in other places, refer to <a href="http://getahead.ltd.uk/dwr/" title="Visit page outside Confluence">&#104;ttp://getahead.ltd.uk/dwr/</a> for more information.</p>
-<table bgcolor='#ffffe0' cellpadding='0' cellspacing='0' width='100%' border='0'><tr><td><div stlye='font-size:8px; text-align:center;'><center>Content pulled from external source. Click <a href='/plugins/snippet/clearCache.action?id=dwr&amp;url=https%3A%2F%2Fopensymphony.dev.java.net%2Fsource%2Fbrowse%2F*checkout*%2Fwebwork%2Fwebapps%2Fshowcase%2Fsrc%2Fwebapp%2FWEB-INF%2Fdwr.xml'>here</a> to refresh.</center></div></td></tr><tr><td><div class="code"><div class="codeContent">
-<pre class="code-xml">&lt;!DOCTYPE dwr PUBLIC 
-	<span class="code-quote">"-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN"</span> 
-	<span class="code-quote">"http://www.getahead.ltd.uk/dwr/dwr10.dtd"</span>&gt;
-
-<span class="code-tag">&lt;dwr&gt;</span>
-    <span class="code-tag">&lt;allow&gt;</span>
-        <span class="code-tag">&lt;create creator=<span class="code-quote">"new"</span> javascript=<span class="code-quote">"validator"</span>&gt;</span>
-            <span class="code-tag">&lt;param name=<span class="code-quote">"class"</span> value=<span class="code-quote">"com.opensymphony.webwork.validators.DWRValidator"</span>/&gt;</span>
-        <span class="code-tag">&lt;/create&gt;</span>
-        <span class="code-tag">&lt;convert converter=<span class="code-quote">"bean"</span> match=<span class="code-quote">"com.opensymphony.xwork.ValidationAwareSupport"</span>/&gt;</span>
-    <span class="code-tag">&lt;/allow&gt;</span>
-
-    <span class="code-tag">&lt;signatures&gt;</span>
-        &lt;![CDATA[
-        import java.util.Map;
-        import com.opensymphony.webwork.validators.DWRValidator;
-
-        DWRValidator.doPost(String, String, Map<span class="code-tag">&lt;String, String&gt;</span>);
-        ]]&gt;
-    <span class="code-tag">&lt;/signatures&gt;</span>
-<span class="code-tag">&lt;/dwr&gt;</span></pre>
-</div></div></td></tr></table>
-
-<p>A DWRServlet need to be registered with the web application as well. The following shows a typical web.xml with DWRSerlvet.</p>
-<table bgcolor='#ffffe0' cellpadding='0' cellspacing='0' width='100%' border='0'><tr><td><div stlye='font-size:8px; text-align:center;'><center>Content pulled from external source. Click <a href='/plugins/snippet/clearCache.action?id=dwr&amp;url=https%3A%2F%2Fopensymphony.dev.java.net%2Fsource%2Fbrowse%2F*checkout*%2Fwebwork%2Fwebapps%2Fshowcase%2Fsrc%2Fwebapp%2FWEB-INF%2Fweb.xml'>here</a> to refresh.</center></div></td></tr><tr><td><div class="code"><div class="codeContent">
-<pre class="code-xml"><span class="code-tag">&lt;servlet&gt;</span>
-    <span class="code-tag">&lt;servlet-name&gt;</span>dwr<span class="code-tag">&lt;/servlet-name&gt;</span>
-    <span class="code-tag">&lt;servlet-class&gt;</span>uk.ltd.getahead.dwr.DWRServlet<span class="code-tag">&lt;/servlet-class&gt;</span>
-<span class="code-tag">&lt;/servlet&gt;</span>
-
-<span class="code-tag">&lt;servlet-mapping&gt;</span>
-    <span class="code-tag">&lt;servlet-name&gt;</span>dwr<span class="code-tag">&lt;/servlet-name&gt;</span>
-    <span class="code-tag">&lt;url-pattern&gt;</span>/dwr/*<span class="code-tag">&lt;/url-pattern&gt;</span>
-<span class="code-tag">&lt;/servlet-mapping&gt;</span></pre>
-</div></div></td></tr></table>
-
-
-<h1><a name="AJAXValidation-Step1"></a>Step 1</h1>
-<p>Create the jsp page. Note the &lt;ww:head ...&gt; tag is used to set the theme which will put in necesary dojo sripts etc. See ajax's theme head.ftl for more information.</p>
-<table bgcolor='#ffffe0' cellpadding='0' cellspacing='0' width='100%' border='0'><tr><td><div stlye='font-size:8px; text-align:center;'><center>Content pulled from external source. Click <a href='/plugins/snippet/clearCache.action?id=ajaxValidation&amp;url=https%3A%2F%2Fopensymphony.dev.java.net%2Fsource%2Fbrowse%2F*checkout*%2Fwebwork%2Fwebapps%2Fshowcase%2Fsrc%2Fwebapp%2Fvalidation%2Fquiz-ajax.jsp'>here</a> to refresh.</center></div></td></tr><tr><td><div class="code"><div class="codeContent">
-<pre class="code-xml"><span class="code-tag">&lt;html&gt;</span>
-<span class="code-tag">&lt;head&gt;</span>
-    <span class="code-tag">&lt;title&gt;</span>Validation - Basic<span class="code-tag">&lt;/title&gt;</span>
-    <span class="code-tag">&lt;ww:head theme=<span class="code-quote">"ajax"</span>/&gt;</span>
-<span class="code-tag">&lt;/head&gt;</span>
-
-<span class="code-tag">&lt;body&gt;</span>
-
-<span class="code-tag">&lt;ww:form method=<span class="code-quote">"post"</span> validate=<span class="code-quote">"true"</span> theme=<span class="code-quote">"ajax"</span>&gt;</span>
-    <span class="code-tag">&lt;ww:textfield label=<span class="code-quote">"Name"</span> name=<span class="code-quote">"name"</span>/&gt;</span>
-    <span class="code-tag">&lt;ww:textfield label=<span class="code-quote">"Age"</span> name=<span class="code-quote">"age"</span>/&gt;</span>
-    <span class="code-tag">&lt;ww:textfield label=<span class="code-quote">"Favorite color"</span> name=<span class="code-quote">"answer"</span>/&gt;</span>
-    <span class="code-tag">&lt;ww:submit/&gt;</span>
-<span class="code-tag">&lt;/ww:form&gt;</span>
-
-<span class="code-tag">&lt;/body&gt;</span>
-<span class="code-tag">&lt;/html&gt;</span></pre>
-</div></div></td></tr></table>
-
-
-<h1><a name="AJAXValidation-Step2"></a>Step 2</h1>
-<p>Create the action class</p>
-<table bgcolor='#ffffe0' cellpadding='0' cellspacing='0' width='100%' border='0'><tr><td><div stlye='font-size:8px; text-align:center;'><center>Content pulled from external source. Click <a href='/plugins/snippet/clearCache.action?id=quizAction&amp;url=https%3A%2F%2Fopensymphony.dev.java.net%2Fsource%2Fbrowse%2F*checkout*%2Fwebwork%2Fwebapps%2Fshowcase%2Fsrc%2Fjava%2Fcom%2Fopensymphony%2Fwebwork%2Fshowcase%2Fvalidation%2FQuizAction.java'>here</a> to refresh.</center></div></td></tr><tr><td><div class="code"><div class="codeContent">
-<pre class="code-java"><span class="code-keyword">public</span> class QuizAction <span class="code-keyword">extends</span> ActionSupport {
-    <span class="code-object">String</span> name;
-    <span class="code-object">int</span> age;
-    <span class="code-object">String</span> answer;
-
-    <span class="code-keyword">public</span> <span class="code-object">String</span> getName() {
-        <span class="code-keyword">return</span> name;
-    }
-
-    <span class="code-keyword">public</span> void setName(<span class="code-object">String</span> name) {
-        <span class="code-keyword">this</span>.name = name;
-    }
-
-    <span class="code-keyword">public</span> <span class="code-object">int</span> getAge() {
-        <span class="code-keyword">return</span> age;
-    }
-
-    <span class="code-keyword">public</span> void setAge(<span class="code-object">int</span> age) {
-        <span class="code-keyword">this</span>.age = age;
-    }
-
-    <span class="code-keyword">public</span> <span class="code-object">String</span> getAnswer() {
-        <span class="code-keyword">return</span> answer;
-    }
-
-    <span class="code-keyword">public</span> void setAnswer(<span class="code-object">String</span> answer) {
-        <span class="code-keyword">this</span>.answer = answer;
-    }
-}</pre>
-</div></div></td></tr></table>
-
-
-<h1><a name="AJAXValidation-Step3"></a>Step 3</h1>
-<p>Create the validation.xml</p>
-<table bgcolor='#ffffe0' cellpadding='0' cellspacing='0' width='100%' border='0'><tr><td><div stlye='font-size:8px; text-align:center;'><center>Content pulled from external source. Click <a href='/plugins/snippet/clearCache.action?id=quizValidators&amp;url=https%3A%2F%2Fopensymphony.dev.java.net%2Fsource%2Fbrowse%2F*checkout*%2Fwebwork%2Fwebapps%2Fshowcase%2Fsrc%2Fjava%2Fcom%2Fopensymphony%2Fwebwork%2Fshowcase%2Fvalidation%2FQuizAction-validation.xml'>here</a> to refresh.</center></div></td></tr><tr><td><div class="code"><div class="codeContent">
-<pre class="code-xml">&lt;!--
-    Add the following DOCTYPE declaration as first line of your XXX-validation.xml file:
-    <span class="code-tag">&lt;!DOCTYPE validators PUBLIC <span class="code-quote">"-//OpenSymphony Group//XWork Validator 1.0.2//EN"</span> <span class="code-quote">"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"</span>&gt;</span>
---&gt;
-<span class="code-tag">&lt;validators&gt;</span>
-    <span class="code-tag">&lt;field name=<span class="code-quote">"name"</span>&gt;</span>
-        <span class="code-tag">&lt;field-validator type=<span class="code-quote">"requiredstring"</span>&gt;</span>
-            <span class="code-tag">&lt;message&gt;</span>You must enter a name<span class="code-tag">&lt;/message&gt;</span>
-        <span class="code-tag">&lt;/field-validator&gt;</span>
-    <span class="code-tag">&lt;/field&gt;</span>
-    <span class="code-tag">&lt;field name=<span class="code-quote">"age"</span>&gt;</span>
-        <span class="code-tag">&lt;field-validator type=<span class="code-quote">"int"</span>&gt;</span>
-            <span class="code-tag">&lt;param name=<span class="code-quote">"min"</span>&gt;</span>13<span class="code-tag">&lt;/param&gt;</span>
-            <span class="code-tag">&lt;param name=<span class="code-quote">"max"</span>&gt;</span>19<span class="code-tag">&lt;/param&gt;</span>
-            <span class="code-tag">&lt;message&gt;</span>Only people ages 13 to 19 may take this quiz<span class="code-tag">&lt;/message&gt;</span>
-        <span class="code-tag">&lt;/field-validator&gt;</span>
-    <span class="code-tag">&lt;/field&gt;</span>
-<span class="code-tag">&lt;/validators&gt;</span></pre>
-</div></div></td></tr></table>
-
-                    			    </td>
-		    </tr>
-	    </table>
-    </body>
-</html>

docs/wikidocs/Access to Webwork objects from JSP 2.0 EL.html

-<html>
-    <head>
-        <title>WebWork - 
-        Access to Webwork objects from JSP 2.0 EL
-         </title>
-	    <link rel="stylesheet" href="styles/site.css" type="text/css" />
-        <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
-    </head>
-
-    <body>
-	    <table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#ffffff">
-		    <tr>
-			    <td valign="top" class="pagebody">
-				    <p>To access Webwork ValueStack from third party JSP taglibs you have to expose property values to JSP.</p>
-
-<p>You can use Webwork2 tag &lt;ww:set/&gt; to set named parameter in a JSP page, request, session or application scope. Following  example, sets a request scoped parameter 'a' to list of integers:</p>
-
-<div class="code"><div class="codeContent">
-<pre class="code-xml"><span class="code-tag">&lt;ww:set name=<span class="code-quote">"'a'"</span> value=<span class="code-quote">"{ 1, 2, 3, 4 }"</span> scope=<span class="code-quote">"request"</span>/&gt;</span></pre>
-</div></div>
-
-<p>After setting parameter, third party JSP taglibs can access variables, or you can use JSP 2.0 EL (Expression Language). This is convenient as short hand EL expression syntax <br/>
-<tt>$<div class="error"><span class="error">Unknown macro: {expression}</span> </div></tt> can be used in a text or inside of tag attributes: </p>
-
-<div class="code"><div class="codeContent">
-<pre class="code-xml">a[0] = ${a[0]}
-
-<span class="code-tag">&lt;sample:tag value=<span class="code-quote">"${a[1]}"</span>/&gt;</span></pre>
-</div></div>
-
-<p>In practice, you've got to expose a lot of different variables to make effective use of third party taglibs like displaytag or wurfl. This leads to a lot of <tt>&lt;ww:set/&gt;</tt> tags what made me investigate how to make access to ValueStack and OGNL more transparent.</p>
-
-<table cellpadding='5' width='85%' cellspacing='8px' class='noteMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Why can't we just replace EL with OGNL?</b><br />
-<p>Unfortunately, it isn't that simple. I've tinkered with <tt>JSPFactory.setDefault()</tt> to wrap around <tt>getPageContext()</tt> and create <tt>ExpressionEvaluator</tt> that would use OGNL. </p>
-
-<p>This works in practice, but code generated by Jasper2 doesn't call <tt>JSPFactory.getPageContext().getExpressionEvaluator()</tt> but goes directly to static method that is hardwired to jakarta commons-el implementation.</p>
-
-<p>Even if it would work it wouldn't be <em>clean</em> as <tt>JSPFactory.setDefault()</tt> should only be called by JSP implementation.</p></td></tr></table>
-
-<p>There is a simple, if not elegant, solution available in JSP 2.0 EL, for exposing ValueStack to OGNL. It is possible to create custom functions that can be called from EL expressions. Functions have to be 'public static' and specified in a TLD file. <br/>
-Just import TLD in a JSP file where you've want to use a function. </p>
-
-<p>For example, you could access action properties by evaluating OGNL expression by a function 'vs' (for valuestack) in EL:</p>
-
-<div class="code"><div class="codeContent">
-<pre class="code-xml"><span class="code-tag">&lt;%@ taglib uri=<span class="code-quote">"/WEB-INF/tld/wwel.tld"</span> prefix=<span class="code-quote">"x"</span> %&gt;</span>
-
-a[0] = ${x:vs('a[0]')}
-a[0] * 4 = ${x:vs('a[0] * 4')}
-
-Current action name: ${x:name()}
-Top of ValueStack: ${x:top()}</pre>
-</div></div>
-
-<p>To use this code you've got to add <tt>wwel.tld</tt> and <tt>Functions.java</tt> to your webapp project.</p>
-
-<p>I would urge webworkers to define a set of functions that would be usable to wide community and include this in some future Webwork release.</p>
-
-<div class="code"><div class="codeHeader"><b>wwel.tld</b></div><div class="codeContent">
-<pre class="code-xml"><span class="code-tag">&lt;?xml version=<span class="code-quote">"1.0"</span>?&gt;</span>
-&lt;taglib xmlns=<span class="code-quote">"http://java.sun.com/xml/ns/j2ee"</span>
-	<span class="code-keyword">xmlns:xsi</span>=<span class="code-quote">"http://www.w3.org/2001/XMLSchema-instance"</span>
-	xsi:schemaLocation=<span class="code-quote">"http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"</span>
-	version=<span class="code-quote">"2.0"</span>&gt;
-
-<span class="code-tag">&lt;description&gt;</span>
-This taglib enables access to WebWork2 ValueStack 
-from JSP 2.0 Expression Language
-<span class="code-tag">&lt;/description&gt;</span>
-
-<span class="code-tag">&lt;tlib-version&gt;</span>1.0<span class="code-tag">&lt;/tlib-version&gt;</span>
-
-<span class="code-tag">&lt;short-name&gt;</span>wwel<span class="code-tag">&lt;/short-name&gt;</span>
-
-<span class="code-tag">&lt;function&gt;</span>
-	<span class="code-tag">&lt;name&gt;</span>vs<span class="code-tag">&lt;/name&gt;</span>
-	<span class="code-tag">&lt;function-class&gt;</span>com.nmote.wwel.Functions<span class="code-tag">&lt;/function-class&gt;</span>
-	<span class="code-tag">&lt;function-signature&gt;</span>
-		java.lang.Object findOnValueStack(java.lang.String)
-	<span class="code-tag">&lt;/function-signature&gt;</span>
-<span class="code-tag">&lt;/function&gt;</span>
-
-<span class="code-tag">&lt;function&gt;</span>
-	<span class="code-tag">&lt;name&gt;</span>name<span class="code-tag">&lt;/name&gt;</span>
-	<span class="code-tag">&lt;function-class&gt;</span>com.nmote.wwel.Functions<span class="code-tag">&lt;/function-class&gt;</span>
-	<span class="code-tag">&lt;function-signature&gt;</span>
-		java.lang.Object getActionName()
-	<span class="code-tag">&lt;/function-signature&gt;</span>
-<span class="code-tag">&lt;/function&gt;</span>
-
-<span class="code-tag">&lt;function&gt;</span>
-	<span class="code-tag">&lt;name&gt;</span>top<span class="code-tag">&lt;/name&gt;</span>
-	<span class="code-tag">&lt;function-class&gt;</span>com.nmote.wwel.Functions<span class="code-tag">&lt;/function-class&gt;</span>
-	<span class="code-tag">&lt;function-signature&gt;</span>
-		java.lang.Object getTopOfValueStack()
-	<span class="code-tag">&lt;/function-signature&gt;</span>
-<span class="code-tag">&lt;/function&gt;</span>
-
-<span class="code-tag">&lt;/taglib&gt;</span></pre>
-</div></div>
-
-<div class="code"><div class="codeHeader"><b>Functions.java</b></div><div class="codeContent">
-<pre class="code-java"><span class="code-keyword">package</span> com.nmote.wwel;
-
-<span class="code-keyword">import</span> com.opensymphony.xwork.ActionContext;
-
-/**
- * Utility functions <span class="code-keyword">for</span> accessing webwork value stack and action context 
- * from JSP 2.0 EL taglibs.
- * 
- * @author Vjekoslav Nesek (vnesek@nmote.com)
- */
-<span class="code-keyword">public</span> class Functions {
-
-	<span class="code-keyword">public</span> <span class="code-keyword">static</span> <span class="code-object">Object</span> findOnValueStack(<span class="code-object">String</span> expr) {
-		ActionContext a = ActionContext.getContext();
-		<span class="code-object">Object</span> value = a.getValueStack().findValue(expr);
-		<span class="code-keyword">return</span> value;
-	}
-	
-	<span class="code-keyword">public</span> <span class="code-keyword">static</span> <span class="code-object">Object</span> getTopOfValueStack() {
-		ActionContext a = ActionContext.getContext();
-		<span class="code-object">Object</span> value = a.getValueStack().peek();
-		<span class="code-keyword">return</span> value;
-	}
-
-	<span class="code-keyword">public</span> <span class="code-keyword">static</span> <span class="code-object">Object</span> getActionName() {
-		ActionContext a = ActionContext.getContext();
-		<span class="code-object">Object</span> value = a.getName();
-		<span class="code-keyword">return</span> value;
-	}	
-}</pre>
-</div></div>
-
-                    			    </td>
-		    </tr>
-	    </table>
-    </body>
-</html>

docs/wikidocs/Accessing application, session, request objects.html

-<html>
-    <head>
-        <title>WebWork - 
-        Accessing application, session, request objects
-         </title>
-	    <link rel="stylesheet" href="styles/site.css" type="text/css" />
-        <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
-    </head>
-
-    <body>
-	    <table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#ffffff">
-		    <tr>
-			    <td valign="top" class="pagebody">
-				    <p>Webwork provides several access helpers to access Session, Application, Request scopes.<br/>
-Web agnostic (independent of the servlet API) with calls:</p>
-<div class="code"><div class="codeContent">
-<pre class="code-java">Map session = (Map) ActionContext.getContext().get(<span class="code-quote">"session"</span>);
-session.put(<span class="code-quote">"myId"</span>,myProp);</pre>
-</div></div>
-
-<p>The following gives you the same thing as above:</p>
-<div class="code"><div class="codeContent">
-<pre class="code-java">ServletActionContext.getRequest().getSession()</pre>
-</div></div>
-
-<p>Note: Be sure not to use ActionContext.getContext() in the constructor of your action since the values may not be set up already (returning null for getSession()).<br/>
-Note also: ActionContext.getContext().get("session") is the same as<br/>
-ActionContext.getContext().getSession() with a cast to Map.</p>
-
-<p>If you really need to get access to the HttpSession, use the ServletConfigInterceptor (see <a href="Interceptors.html" title="Interceptors">Interceptors</a>).</p>
-
-<p>In your views, you can access with your jsps as such</p>
-<div class="code"><div class="codeContent">
-<pre class="code-java">&lt;ww: property value=<span class="code-quote">"#session.myId"</span> /&gt;
-
-&lt;ww: property value=<span class="code-quote">"#request.myId"</span> /&gt;</pre>
-</div></div>
-
-<p>All the servlet scopes can be accessed like above.</p>
-<div class="code"><div class="codeContent">
-<pre class="code-java">Map request = (Map) ActionContext.getContext().get(<span class="code-quote">"request"</span>);
-request.put(<span class="code-quote">"myId"</span>,myProp);
-Map application = (Map) ActionContext.getContext().get(<span class="code-quote">"application"</span>);
-application.put(<span class="code-quote">"myId"</span>,myProp);
-Map session = (Map) ActionContext.getContext().get(<span class="code-quote">"session"</span>);
-session.put(<span class="code-quote">"myId"</span>, myProp);
-Map attr = (Map) ActionContext.getContext().get(<span class="code-quote">"attr"</span>);
-attr.put(<span class="code-quote">"myId"</span>,myProp);</pre>
-</div></div>
-<p>The 'attr' map will search the javax.servlet.jsp.PageContext for the specified key. If the PageContext dosen't exist, it will search request,session,application maps respectively.</p>
-
-                    			    </td>
-		    </tr>
-	    </table>
-    </body>
-</html>

docs/wikidocs/Action Chaining.html

-<html>
-    <head>
-        <title>WebWork - 
-        Action Chaining
-         </title>
-	    <link rel="stylesheet" href="styles/site.css" type="text/css" />
-        <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
-    </head>
-
-    <body>
-	    <table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#ffffff">
-		    <tr>
-			    <td valign="top" class="pagebody">
-				    <h1><a name="ActionChaining-Overview"></a>Overview</h1>
-
-<p>WebWork provides the ability to chain multiple actions into a defined sequence or workflow. This feature works by applying a <a href="Chain Result.html" title="Chain Result">Chain Result</a> to a given action, and intercepting its target action's invocation with a <a href="http://www.opensymphony.com/webwork/api/com/opensymphony/xwork/interceptor/ChainingInterceptor.html" title="Visit page outside Confluence">ChainingInterceptor</a>. </p>
-
-<table cellpadding='5' width='85%' cellspacing='8px' class='warningMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/images/icons/emoticons/forbidden.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Warning</b><br /><br/>
-In general, Action Chaining is not recommended. However, there are other options, such as the <a href="redirect after post.html" title="redirect after post">redirect after post</a> technique.</td></tr></table>
-
-<h2><a name="ActionChaining-ChainResult"></a>Chain Result</h2>
-
-<p>The <a href="Chain Result.html" title="Chain Result">Chain Result</a> is a result type that invokes an action with its own interceptor stack and result. This allows an action to forward requests to a target action, while propagating the state of the source action. Below is an example of how to define this sequence.</p>
-
-<table bgcolor='#ffffe0' cellpadding='0' cellspacing='0' width='100%' border='0'><tr><td><div stlye='font-size:8px; text-align:center;'><center>Content pulled from external source. Click <a href='/plugins/snippet/clearCache.action?id=example&amp;url=https%3A%2F%2Fopensymphony.dev.java.net%2Fsource%2Fbrowse%2F*checkout*%2Fxwork%2Fsrc%2Fjava%2Fcom%2Fopensymphony%2Fxwork%2FActionChainResult.java'>here</a> to refresh.</center></div></td></tr><tr><td><div class="code"><div class="codeContent">
-<pre class="code-xml"><span class="code-tag">&lt;package name=<span class="code-quote">"public"</span> extends=<span class="code-quote">"webwork-default"</span>&gt;</span>
-    <span class="code-tag"><span class="code-comment">&lt;!-- Chain creatAccount to login, using the default parameter --&gt;</span></span>
-    <span class="code-tag">&lt;action name=<span class="code-quote">"createAccount"</span> class=<span class="code-quote">"..."</span>&gt;</span>
-        <span class="code-tag">&lt;result type=<span class="code-quote">"chain"</span>&gt;</span>login<span class="code-tag">&lt;/result&gt;</span>
-    <span class="code-tag">&lt;/action&gt;</span>
-
-    <span class="code-tag">&lt;action name=<span class="code-quote">"login"</span> class=<span class="code-quote">"..."</span>&gt;</span>
-        <span class="code-tag"><span class="code-comment">&lt;!-- Chain to another namespace --&gt;</span></span>
-        <span class="code-tag">&lt;result type=<span class="code-quote">"chain"</span>&gt;</span>
-            <span class="code-tag">&lt;param name=<span class="code-quote">"actionName"</span>&gt;</span>dashboard<span class="code-tag">&lt;/param&gt;</span>
-            <span class="code-tag">&lt;param name=<span class="code-quote">"namespace"</span>&gt;</span>/secure<span class="code-tag">&lt;/param&gt;</span>
-        <span class="code-tag">&lt;/result&gt;</span>
-    <span class="code-tag">&lt;/action&gt;</span>
-<span class="code-tag">&lt;/package&gt;</span>
-
-<span class="code-tag">&lt;package name=<span class="code-quote">"secure"</span> extends=<span class="code-quote">"webwork-default"</span> namespace=<span class="code-quote">"/secure"</span>&gt;</span>
-    <span class="code-tag">&lt;action name=<span class="code-quote">"dashboard"</span> class=<span class="code-quote">"..."</span>&gt;</span>
-        <span class="code-tag">&lt;result&gt;</span>dashboard.jsp<span class="code-tag">&lt;/result&gt;</span>
-    <span class="code-tag">&lt;/action&gt;</span>
-<span class="code-tag">&lt;/package&gt;</span></pre>
-</div></div></td></tr></table>
-
-<p>Another action in the same namespace (or the default "" namespace) can be executed after this action (see <a href="Configuration Files.html" title="Configuration Files">Configuration Files</a>). An optional "namespace" parameter may also be added to specify an action in a different namespace. </p>
-
-
-
-<h2><a name="ActionChaining-ChainingInterceptor"></a>Chaining Interceptor</h2>
-
-<p>If you need to copy the properties from your previous Actions in the chain to the current action, you should apply the <a href="http://www.opensymphony.com/webwork/api/com/opensymphony/xwork/interceptor/ChainingInterceptor.html" title="Visit page outside Confluence">ChainingInterceptor</a>. The interceptor will copy the original parameters from the request, and the ValueStack is passed in to the target action. The source action is remembered by the ValueStack, allowing the target action to access the properties of the preceding action(s) using the ValueStack, and also makes these properties available to the final result of the chain, such as the JSP or Velocity page. </p>
-
-<p>One common use of action chaining is to provide lookup lists (like for a dropdown list of states, etc). Since these actions get put on the ValueStack, these properties will be available in the view. This functionality can also be done using the ActionTag to execute an action from the display page. You may also use the <a href="Redirect Action Result.html" title="Redirect Action Result">Redirect Action Result</a> to accomplish this.</p>
-
-                    			    </td>
-		    </tr>
-	    </table>
-    </body>
-</html>

docs/wikidocs/Action configuration.html

-<html>
-    <head>
-        <title>WebWork - 
-        Action configuration
-         </title>
-	    <link rel="stylesheet" href="styles/site.css" type="text/css" />
-        <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
-    </head>
-
-    <body>
-	    <table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#ffffff">
-		    <tr>
-			    <td valign="top" class="pagebody">
-				    <h1><a name="Actionconfiguration-Description"></a>Description</h1>
-
-<div class="code"><div class="codeContent">
-<pre class="code-xml"><span class="code-tag">&lt;action name=<span class="code-quote">"formTest"</span> class=<span class="code-quote">"com.opensymphony.webwork.example.FormAction"</span> method=<span class="code-quote">"processForm"</span>&gt;</span></pre>
-</div></div>
-<p>&nbsp;</p>
-
-<p>Actions are the basic "unit-of-work" in WebWork, they define, well, actions. An action will usually be a request, (and usually a button click, or form submit). The main action element (tag is too synonymous with JSP) has two parts, the friendly name (referenced in the URL, i.e. saveForm.action) and the corresponding "handler" class.</p>
-
-<p>The optional "<b>method</b>" parameter tells WebWork which method to call based upon this action. If you leave the method parameter blank, WebWork will call the method <b>execute()</b> by default. If there is no execute() method and no method specified in the xml file, WebWork will throw an exception.</p>
-
-<p>Also, you can tell WebWork to invoke "<b>doSomething</b>"  method in your action by using the pattern "<b>actionName&#33;something</b>" in your form.  For example, "<b>formTest&#33;save.action</b>" will invoke the method "<b>save</b>" in FormAction class.  The method must be public and take no arguments:</p>
-<div class="code"><div class="codeContent">
-<pre class="code-java"><span class="code-keyword">public</span> <span class="code-object">String</span> save() <span class="code-keyword">throws</span> Exception
-  {
-      ...
-      <span class="code-keyword">return</span> SUCCESS;
-  }</pre>
-</div></div>
-<p>&nbsp;</p>
-
-<p>All the configuration for "<b>actionName</b>" will be used for "actionName&#33;something" (interceptors, result types, etc...)</p>
-
-<h2><a name="Actionconfiguration-DefaultAction"></a>Default Action</h2>
-
-<p>Since Webwork 2.2.1 you are also able to specify a default action to be executed when no other action is matched in the xwork.xml.  This feature is provided mainly to eliminate the need to create an action class and/or element for very simple or similar results.&nbsp; The default action name can be set inside the package element like below:</p>
-<div class="code"><div class="codeContent">
-<pre class="code-xml"><span class="code-tag">&lt;default-action-ref name=<span class="code-quote">"simpleViewResultAction"</span>&gt;</span>
-
-&lt;!-- 
-An example of a default action that is just a simple class 
-that has 3 fields: successUrl, errorUrl, and inputUrl.  This action 
-parses the request url to set the result values.  In the normal case 
-it just renders velocity results of the same name as the requested url.
---&gt;
-<span class="code-tag">&lt;action name=<span class="code-quote">"simpleViewResultAction"</span> class=<span class="code-quote">"SimpleViewResultAction"</span>&gt;</span>
-	<span class="code-tag">&lt;result name=<span class="code-quote">"success"</span> type=<span class="code-quote">"velocity"</span>&gt;</span>${successUrl}<span class="code-tag">&lt;/result&gt;</span>
-	<span class="code-tag">&lt;result name=<span class="code-quote">"error"</span> type=<span class="code-quote">"velocity"</span>&gt;</span>${errorUrl}<span class="code-tag">&lt;/result&gt;</span>
-	<span class="code-tag">&lt;result name=<span class="code-quote">"input"</span> type=<span class="code-quote">"velocity"</span>&gt;</span>${inputUrl}<span class="code-tag">&lt;/result&gt;</span>
-<span class="code-tag">&lt;/action&gt;</span></pre>
-</div></div>
-<p>&nbsp;<table cellpadding='5' width='85%' cellspacing='8px' class='noteMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Caution</b><br /><br/>
-This feature should be configured such that there is only one default action per namespace.  Therefore if you have multiple packages declaring a default action with the same namespace, it is not guaranteed which action will be the default.</td></tr></table><br/>
-&nbsp;<br/>
-Most of the content here provided by Matt Dowell &lt;matt.dowell@notiva.com&gt;</p>
-
-                    			    </td>
-		    </tr>
-	    </table>
-    </body>
-</html>

docs/wikidocs/ActionMapper.html

-<html>
-    <head>
-        <title>WebWork - 
-        ActionMapper
-         </title>
-	    <link rel="stylesheet" href="styles/site.css" type="text/css" />
-        <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
-    </head>
-
-    <body>
-	    <table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#ffffff">
-		    <tr>
-			    <td valign="top" class="pagebody">
-				    <h1><a name="ActionMapper-ActionMapper"></a>ActionMapper</h1>
-<table bgcolor='#ffffe0' cellpadding='0' cellspacing='0' width='100%' border='0'><tr><td><div stlye='font-size:8px; text-align:center;'><center>Content pulled from external source. Click <a href='/plugins/snippet/clearCache.action?id=javadoc&amp;url=https%3A%2F%2Fopensymphony.dev.java.net%2Fsource%2Fbrowse%2F*checkout*%2Fwebwork%2Fsrc%2Fjava%2Fcom%2Fopensymphony%2Fwebwork%2Fdispatcher%2Fmapper%2FActionMapper.java'>here</a> to refresh.</center></div></td></tr><tr><td>
-<p> The ActionMapper is responsible for providing a mapping between HTTP requests and action invocation requests and
- vice-versa. When given an HttpServletRequest, the ActionMapper may return null if no action invocation request maps,
- or it may return an ActionMapping that describes an action invocation that WebWork should attempt to try. The
- ActionMapper is not required to guarantee that the ActionMapping returned be a real action or otherwise
- ensure a valid request. This means that most ActionMappers do not need to consult WebWork's configuration to
- determine if a request should be mapped.</p>
-
-<p> <p/> Just as requests can be mapped from HTTP to an action invocation, the opposite is true as well. However, because
- HTTP requests (when shown in HTTP responses) must be in String form, a String is returned rather than an actual
- request object.</p>
-</td></tr></table>
-
-
-<h2><a name="ActionMapper-DefaultActionMapper"></a>DefaultActionMapper</h2>
-<p>By default, the DefaultActionMapper is used:</p>
-
-<table bgcolor='#ffffe0' cellpadding='0' cellspacing='0' width='100%' border='0'><tr><td><div stlye='font-size:8px; text-align:center;'><center>Content pulled from external source. Click <a href='/plugins/snippet/clearCache.action?id=javadoc&amp;url=https%3A%2F%2Fopensymphony.dev.java.net%2Fsource%2Fbrowse%2F*checkout*%2Fwebwork%2Fsrc%2Fjava%2Fcom%2Fopensymphony%2Fwebwork%2Fdispatcher%2Fmapper%2FDefaultActionMapper.java'>here</a> to refresh.</center></div></td></tr><tr><td>
-<p> Default action mapper implementation, using the standard *.[ext] (where ext usually "action") pattern. The extension
- is looked up from the WebWork configuration key <b>webwork.action.exection</b>.</p>
-
-<p> <p/> To help with dealing with buttons and other related requirements, this mapper (and other ActionMappers,
- we hope) has the ability to name a button with some predefined prefix and have that button name alter the execution
- behaviour. The four prefixes are:</p>
-
-<p> <ul></p>
-
-<p> <li>Method prefix - <i>method:default</i></li></p>
-
-<p> <li>Action prefix - <i>action:dashboard</i></li></p>
-
-<p> <li>Redirect prefix - <i>redirect:cancel.jsp</i></li></p>
-
-<p> <li>Redirect-action prefix - <i>redirect-action:cancel</i></li></p>
-
-<p> </ul></p>
-
-<p> <p/> In addition to these four prefixes, this mapper also understands the action naming pattern of <i>foo!bar</i> in
- either the extension form (eg: foo!bar.action) or in the prefix form (eg: action:foo!bar). This syntax tells this mapper
- to map to the action named <i>foo</i> and the method <i>bar</i>.</p>
-</td></tr></table>
-
-<h3><a name="ActionMapper-Methodprefix"></a>Method prefix</h3>
-<table bgcolor='#ffffe0' cellpadding='0' cellspacing='0' width='100%' border='0'><tr><td><div stlye='font-size:8px; text-align:center;'><center>Content pulled from external source. Click <a href='/plugins/snippet/clearCache.action?id=method&amp;url=https%3A%2F%2Fopensymphony.dev.java.net%2Fsource%2Fbrowse%2F*checkout*%2Fwebwork%2Fsrc%2Fjava%2Fcom%2Fopensymphony%2Fwebwork%2Fdispatcher%2Fmapper%2FDefaultActionMapper.java'>here</a> to refresh.</center></div></td></tr><tr><td>
-<p> With method-prefix, instead of calling baz action's execute() method (by default if it isn't overriden in xwork.xml
- to be something else), the baz action's anotherMethod() will be called. A very elegant way determine which button is
- clicked. Alternatively, one would have submit button set a particular value on the action when clicked, and the
- execute() method decides on what to do with the setted value depending on which button is clicked.</p>
-</td></tr></table>
-<table bgcolor='#ffffe0' cellpadding='0' cellspacing='0' width='100%' border='0'><tr><td><div stlye='font-size:8px; text-align:center;'><center>Content pulled from external source. Click <a href='/plugins/snippet/clearCache.action?id=method-example&amp;url=https%3A%2F%2Fopensymphony.dev.java.net%2Fsource%2Fbrowse%2F*checkout*%2Fwebwork%2Fsrc%2Fjava%2Fcom%2Fopensymphony%2Fwebwork%2Fdispatcher%2Fmapper%2FDefaultActionMapper.java'>here</a> to refresh.</center></div></td></tr><tr><td><div class="code"><div class="codeContent">
-<pre class="code-xml"><span class="code-tag">&lt;ww:form name=<span class="code-quote">"baz"</span>&gt;</span>
-    <span class="code-tag">&lt;ww:textfield label=<span class="code-quote">"Enter your name"</span> name=<span class="code-quote">"person.name"</span>/&gt;</span>
-    <span class="code-tag">&lt;ww:submit value=<span class="code-quote">"Create person"</span>/&gt;</span>
-    <span class="code-tag">&lt;ww:submit name=<span class="code-quote">"method:anotherMethod"</span> value=<span class="code-quote">"Cancel"</span>/&gt;</span>
-<span class="code-tag">&lt;/ww:form&gt;</span></pre>
-</div></div></td></tr></table>
-
-<h3><a name="ActionMapper-Actionprefix"></a>Action prefix</h3>
-<table bgcolor='#ffffe0' cellpadding='0' cellspacing='0' width='100%' border='0'><tr><td><div stlye='font-size:8px; text-align:center;'><center>Content pulled from external source. Click <a href='/plugins/snippet/clearCache.action?id=action&amp;url=https%3A%2F%2Fopensymphony.dev.java.net%2Fsource%2Fbrowse%2F*checkout*%2Fwebwork%2Fsrc%2Fjava%2Fcom%2Fopensymphony%2Fwebwork%2Fdispatcher%2Fmapper%2FDefaultActionMapper.java'>here</a> to refresh.</center></div></td></tr><tr><td>
-<p> With action-prefix, instead of executing baz action's execute() method (by default if it isn't overriden in xwork.xml
- to be something else), the anotherAction action's execute() method (assuming again if it isn't overriden with
- something else in xwork.xml) will be executed.</p>
-</td></tr></table>
-<table bgcolor='#ffffe0' cellpadding='0' cellspacing='0' width='100%' border='0'><tr><td><div stlye='font-size:8px; text-align:center;'><center>Content pulled from external source. Click <a href='/plugins/snippet/clearCache.action?id=action-example&amp;url=https%3A%2F%2Fopensymphony.dev.java.net%2Fsource%2Fbrowse%2F*checkout*%2Fwebwork%2Fsrc%2Fjava%2Fcom%2Fopensymphony%2Fwebwork%2Fdispatcher%2Fmapper%2FDefaultActionMapper.java'>here</a> to refresh.</center></div></td></tr><tr><td><div class="code"><div class="codeContent">
-<pre class="code-xml"><span class="code-tag">&lt;ww:form name=<span class="code-quote">"baz"</span>&gt;</span>
-    <span class="code-tag">&lt;ww:textfield label=<span class="code-quote">"Enter your name"</span> name=<span class="code-quote">"person.name"</span>/&gt;</span>
-    <span class="code-tag">&lt;ww:submit value=<span class="code-quote">"Create person"</span>/&gt;</span>
-    <span class="code-tag">&lt;ww:submit name=<span class="code-quote">"action:anotherAction"</span> value=<span class="code-quote">"Cancel"</span>/&gt;</span>
-<span class="code-tag">&lt;/ww:form&gt;</span></pre>
-</div></div></td></tr></table>
-
-<h3><a name="ActionMapper-Redirectprefix"></a>Redirect prefix</h3>
-<table bgcolor='#ffffe0' cellpadding='0' cellspacing='0' width='100%' border='0'><tr><td><div stlye='font-size:8px; text-align:center;'><center>Content pulled from external source. Click <a href='/plugins/snippet/clearCache.action?id=redirect&amp;url=https%3A%2F%2Fopensymphony.dev.java.net%2Fsource%2Fbrowse%2F*checkout*%2Fwebwork%2Fsrc%2Fjava%2Fcom%2Fopensymphony%2Fwebwork%2Fdispatcher%2Fmapper%2FDefaultActionMapper.java'>here</a> to refresh.</center></div></td></tr><tr><td>
-<p> With redirect-prefix, instead of executing baz action's execute() method (by default it isn't overriden in xwork.xml
- to be something else), it will get redirected to, in this case to www.google.com. Internally it uses
- ServletRedirectResult to do the task.</p>
-</td></tr></table>
-<table bgcolor='#ffffe0' cellpadding='0' cellspacing='0' width='100%' border='0'><tr><td><div stlye='font-size:8px; text-align:center;'><center>Content pulled from external source. Click <a href='/plugins/snippet/clearCache.action?id=redirect-example&amp;url=https%3A%2F%2Fopensymphony.dev.java.net%2Fsource%2Fbrowse%2F*checkout*%2Fwebwork%2Fsrc%2Fjava%2Fcom%2Fopensymphony%2Fwebwork%2Fdispatcher%2Fmapper%2FDefaultActionMapper.java'>here</a> to refresh.</center></div></td></tr><tr><td><div class="code"><div class="codeContent">
-<pre class="code-xml"><span class="code-tag">&lt;ww:form name=<span class="code-quote">"baz"</span>&gt;</span>
-    <span class="code-tag">&lt;ww:textfield label=<span class="code-quote">"Enter your name"</span> name=<span class="code-quote">"person.name"</span>/&gt;</span>
-    <span class="code-tag">&lt;ww:submit value=<span class="code-quote">"Create person"</span>/&gt;</span>
-    <span class="code-tag">&lt;ww:submit name=<span class="code-quote">"redirect:www.google.com"</span> value=<span class="code-quote">"Cancel"</span>/&gt;</span>
-<span class="code-tag">&lt;/ww:form&gt;</span></pre>
-</div></div></td></tr></table>
-
-<h3><a name="ActionMapper-Redirectactionprefix"></a>Redirect-action prefix</h3>
-<table bgcolor='#ffffe0' cellpadding='0' cellspacing='0' width='100%' border='0'><tr><td><div stlye='font-size:8px; text-align:center;'><center>Content pulled from external source. Click <a href='/plugins/snippet/clearCache.action?id=redirect-action&amp;url=https%3A%2F%2Fopensymphony.dev.java.net%2Fsource%2Fbrowse%2F*checkout*%2Fwebwork%2Fsrc%2Fjava%2Fcom%2Fopensymphony%2Fwebwork%2Fdispatcher%2Fmapper%2FDefaultActionMapper.java'>here</a> to refresh.</center></div></td></tr><tr><td>
-<p> With redirect-action-prefix, instead of executing baz action's execute() method (by default it isn't overriden in
- xwork.xml to be something else), it will get redirected to, in this case 'dashboard.action'. Internally it uses
- ServletRedirectResult to do the task and read off the extension from the webwork.properties.</p>
-</td></tr></table>
-<table bgcolor='#ffffe0' cellpadding='0' cellspacing='0' width='100%' border='0'><tr><td><div stlye='font-size:8px; text-align:center;'><center>Content pulled from external source. Click <a href='/plugins/snippet/clearCache.action?id=redirect-action-example&amp;url=https%3A%2F%2Fopensymphony.dev.java.net%2Fsource%2Fbrowse%2F*checkout*%2Fwebwork%2Fsrc%2Fjava%2Fcom%2Fopensymphony%2Fwebwork%2Fdispatcher%2Fmapper%2FDefaultActionMapper.java'>here</a> to refresh.</center></div></td></tr><tr><td><div class="code"><div class="codeContent">
-<pre class="code-xml"><span class="code-tag">&lt;ww:form name=<span class="code-quote">"baz"</span>&gt;</span>
-    <span class="code-tag">&lt;ww:textfield label=<span class="code-quote">"Enter your name"</span> name=<span class="code-quote">"person.name"</span>/&gt;</span>
-    <span class="code-tag">&lt;ww:submit value=<span class="code-quote">"Create person"</span>/&gt;</span>
-    <span class="code-tag">&lt;ww:submit name=<span class="code-quote">"redirect-action:dashboard"</span> value=<span class="code-quote">"Cancel"</span>/&gt;</span>
-<span class="code-tag">&lt;/ww:form&gt;</span></pre>
-</div></div></td></tr></table>
-
-<h1><a name="ActionMapper-ActionMapperFactory"></a>ActionMapperFactory</h1>
-<p>You can define your own ActionMapper by configuring the ActionMapperFactory:</p>
-
-<table bgcolor='#ffffe0' cellpadding='0' cellspacing='0' width='100%' border='0'><tr><td><div stlye='font-size:8px; text-align:center;'><center>Content pulled from external source. Click <a href='/plugins/snippet/clearCache.action?id=javadoc&amp;url=https%3A%2F%2Fopensymphony.dev.java.net%2Fsource%2Fbrowse%2F*checkout*%2Fwebwork%2Fsrc%2Fjava%2Fcom%2Fopensymphony%2Fwebwork%2Fdispatcher%2Fmapper%2FActionMapperFactory.java'>here</a> to refresh.</center></div></td></tr><tr><td>
-<p> Factory that creates ActionMappers. This factory looks up the class name of the ActionMapper from
- WebWork's configuration using the key <b>webwork.mapper.class</b>.</p>
-</td></tr></table>
-
-<p>Possible uses of the ActionMapper include defining your own, cleaner namespaces, such as URLs like <b>/person/1</b>, which would be similar to a request to <b>/getPerson.action?personID=1</b> using the DefaultActionMapper.</p>
-
-                    			    </td>
-		    </tr>
-	    </table>
-    </body>
-</html>

docs/wikidocs/AdminApp.html

-<html>
-    <head>
-        <title>WebWork - 
-        AdminApp
-         </title>
-	    <link rel="stylesheet" href="styles/site.css" type="text/css" />
-        <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
-    </head>
-
-    <body>
-	    <table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#ffffff">
-		    <tr>
-			    <td valign="top" class="pagebody">
-				    <p>TODO: Documenting updated version (currently at <a href="http://www.i-tao.com/adminapp.html" title="Visit page outside Confluence">&#104;ttp://www.i-tao.com/adminapp.html</a>). IN PROGRESS.</p>
-
-<h2><a name="AdminApp-Introduction"></a>Introduction</h2>
-<p>This page aims at providing some additional information about the <a href="http://www.hibernate.org" title="Visit page outside Confluence">Hibernate</a> <a href="http://www.hibernate.org/159.html#a5" title="Visit page outside Confluence">AdminApp</a>. The Hibernate AdminApp (hereafter referred to as AA) was created by the Hibernate developers to show a possible implementation strategy for Hibernate with Webwork. Although AA can still be used as a starting point for webapplications, most of its libraries become quite aged (WW 2.0 beta, Hibernate 2, XWork 1.0 beta). Therefore, a shiny <a href="http://www.i-tao.com/adminapp.html" title="Visit page outside Confluence">new fork</a> (AA2) has been created by Ron Chan.</p>
-
-<p>AA2 relies on WW2.2, Hibernate 3.1, and Spring as its IoC container (rather than XWork's, which has been deprecated in WW 2.2). We'll first discuss the original AA. Later on, we'll show the differences with AA2. Ron, if you're reading this, feel free to point out any mistakes/edit this document.</p>
-
-<p>Like we pointed out before, AA shows a possible implementation strategy to use Hibernate in WebWork in combination with a so-called open-session-in-view pattern (<a href="http://www.hibernate.org/43.html" title="Visit page outside Confluence">more info</a>, <a href="http://www.jroller.com/page/cardsharp?entry=open_session_in_view_pattern" title="Visit page outside Confluence">even more</a>). This pattern allows maximum flexibility in our view layer by creating a Hibernate Session object that will live till the end of the request (after the view has been rendered). This allows lazy loading of objects in our view, rather than having to preload all objects and their associations in our business layer, and yet ensures the correct disposing of the Session object.</p>
-
-<p>To accomplish this, AA uses XWork's <a href="Inversion of Control.html" title="Inversion of Control">components</a> and <a href="Interceptors.html" title="Interceptors">interceptors</a>:</p>
-
-<ul>
-	<li><a href="Inversion of Control.html" title="Inversion of Control">components</a>: XWork manages the lifecycle of objects in several scopes (application, session, request) and takes care of the IoC through the ..Aware interfaces (so called enablers). Hibernate's expensive-to-create SessionFactory will thus be created in the application scope (meaning it will only be initialised once when the application starts up), while the Session objects, used to load our models, is registered in the request scope (will be created once per request).</li>
-</ul>
-
-
-<ul>
-	<li><a href="Interceptors.html" title="Interceptors">interceptors</a>: AA uses an interceptor (the HibernateInterceptor) to extract the Session from the WebWork action, so it can control the transactions, redirect/rollback on errors and properly dispose the Session after the view is rendered.</li>
-</ul>
-
-
-<h2><a name="AdminApp-AdminAppSourceOverview"></a>AdminApp Source Overview</h2>
-
-<p>Now, let's properly dissect the AA files:</p>
-<ul>
-	<li>/lib: contains the various jars for our application. Nothing special here.</li>
-	<li>/src/java/org/hibernate/admin/action: lists our WebWork actions. All actions extend an abstract AbstractAction file, which overrides the execute() method from our XWork's ActionSupport. This is where we define a setHibernateSession() method, which is the method we declared in our enabler interface (HibernateSessionAware). This will notify XWork to invoke its IoC magic to set the HibernateSession.</li>
-</ul>
-
-
-<div class="code"><div class="codeHeader"><b>org.hibernate.admin.action.AbstractAction</b></div><div class="codeContent">
-<pre class="code-java"><span class="code-keyword">public</span> <span class="code-object">String</span> execute() <span class="code-keyword">throws</span> Exception {
-	
-		<span class="code-comment">// We go to INPUT on field and data errors
-</span>		<span class="code-keyword">if</span> ( hasErrors() ) {
-			LOG.debug(<span class="code-quote">"action not executed, field or action errors"</span>);
-			LOG.debug( <span class="code-quote">"Field errors: "</span> + getFieldErrors() );
-			LOG.debug( <span class="code-quote">"Action errors: "</span> + getActionErrors() );
-			<span class="code-keyword">return</span> INPUT;
-		}
-
-		LOG.debug(<span class="code-quote">"executing action"</span>);
-		<span class="code-keyword">return</span> go();
-	}
-	
-	<span class="code-keyword">protected</span> <span class="code-keyword">abstract</span> <span class="code-object">String</span> go() <span class="code-keyword">throws</span> HibernateException;
-
-	<span class="code-keyword">public</span> void setHibernateSession(HibernateSession session) {
-		<span class="code-keyword">this</span>.session = session;
-	}
-
-	<span class="code-keyword">protected</span> Session getSession() <span class="code-keyword">throws</span> HibernateException {
-		<span class="code-keyword">return</span> session.getSession();
-	}</pre>
-</div></div>
-<p>In this execute() method we'll simply call a abstract go() method (which is then defined in each of the actions). When we need the Hibernate Session, we use the getSession() method, inherited from our AbstractAction. Don't worry about transactions or saving so called dirty objects (our HibernateInterceptor takes care of all that). As you can see, this totally minimizes the LoC (lines of code) needed to retrieve or manipulated our models).</p>
-<div class="code"><div class="codeHeader"><b>org.hibernate.admin.action.EditUserAction</b></div><div class="codeContent">
-<pre class="code-java"><span class="code-keyword">public</span> class EditUserAction <span class="code-keyword">extends</span> AbstractAction {
-	<span class="code-comment">//.. ommited <span class="code-keyword">for</span> brevity
-</span>	
-	<span class="code-keyword">protected</span> <span class="code-object">String</span> go() <span class="code-keyword">throws</span> HibernateException {
-		..
-		getSession().update(user);
-		..
-		<span class="code-keyword">return</span> SUCCESS;
-	}
-	
-	<span class="code-comment">//.. getters and setters ommited
-</span>
-}</pre>
-</div></div>
-
-<p>There are 3 more *-validation.xml files in this directory containing the validation logic for the Actions. XWork will validate your request before the action gets executed, so you can decouple your (simple) validation logic from your Action. For example, take a look at the CreateUserAction-validation.xml:</p>
-
-<div class="code"><div class="codeHeader"><b>CreateUserAction-validation.xml</b></div><div class="codeContent">
-<pre class="code-xml">..
-    <span class="code-tag">&lt;field name=<span class="code-quote">"user.name.lastName"</span>&gt;</span>
-        <span class="code-tag">&lt;field-validator type=<span class="code-quote">"requiredstring"</span>&gt;</span>
-            <span class="code-tag">&lt;message&gt;</span>You must enter a last name.<span class="code-tag">&lt;/message&gt;</span>
-        <span class="code-tag">&lt;/field-validator&gt;</span>
-    <span class="code-tag">&lt;/field&gt;</span>
-    <span class="code-tag">&lt;field name=<span class="code-quote">"user.email"</span>&gt;</span>
-        <span class="code-tag">&lt;field-validator type=<span class="code-quote">"email"</span>&gt;</span>
-            <span class="code-tag">&lt;message&gt;</span>Please correct the e-mail address.<span class="code-tag">&lt;/message&gt;</span>
-        <span class="code-tag">&lt;/field-validator&gt;</span>
-        <span class="code-tag">&lt;field-validator type=<span class="code-quote">"required"</span>&gt;</span>
-            <span class="code-tag">&lt;message&gt;</span>Please enter an e-mail address.<span class="code-tag">&lt;/message&gt;</span>
-        <span class="code-tag">&lt;/field-validator&gt;</span>
-    <span class="code-tag">&lt;/field&gt;</span>
-..</pre>
-</div></div>
-
-<p><a href="Validation.html" title="Validation">Several validator types</a> are available. Here we rely on XWork to validate our Actions, but it's also possible to validate our object Models (see <a href="Validation.html" title="Validation">WW Validation</a>). You will mostly use these to validate submitted forms in your webapp. </p>
-
-<p>When a validator fails, you will automatically be returned to the input page with a clear indication which field failed to validate if: </p>
-
-<p>a) actually provided an input type in your <a href="xwork.xml.html" title="xwork.xml">xwork.xml</a> file</p>
-<div class="code"><div class="codeHeader"><b>xwork.xml</b></div><div class="codeContent">
-<pre class="code-xml">..
-        <span class="code-tag">&lt;result name=<span class="code-quote">"input"</span> type=<span class="code-quote">"dispatcher"</span>&gt;</span>
-		<span class="code-tag">&lt;param name=<span class="code-quote">"location"</span>&gt;</span>/editUser.jsp<span class="code-tag">&lt;/param&gt;</span>
-	<span class="code-tag">&lt;/result&gt;</span>
-	..</pre>
-</div></div>
-<p>b) you enabled the validation interceptor in your <a href="xwork.xml.html" title="xwork.xml">xwork.xml</a></p>
-<div class="code"><div class="codeHeader"><b>xwork.xml</b></div><div class="codeContent">
-<pre class="code-xml">..
-	<span class="code-tag">&lt;interceptor-ref name=<span class="code-quote">"defaultStack"</span>/&gt;</span>
-	<span class="code-tag">&lt;interceptor-ref name=<span class="code-quote">"validation"</span>/&gt;</span>
-	..</pre>
-</div></div>
-<p>c) you use the WebWork tag library (warning: this is the old syntax):</p>
-<div class="code"><div class="codeHeader"><b>CreateUser.jsp</b></div><div class="codeContent">
-<pre class="code-xml">..
-<span class="code-tag">&lt;ww:form name=<span class="code-quote">"'createUserForm'"</span> action=<span class="code-quote">"'createUser.action'"</span> method=<span class="code-quote">"'POST'"</span>&gt;</span>
-    <span class="code-tag">&lt;ww:textfield label=<span class="code-quote">"'Username'"</span> name=<span class="code-quote">"'user.handle'"</span>/&gt;</span>
-..</pre>
-</div></div>
-
-<p>New syntax (since 2.2):</p>
-
-<div class="code"><div class="codeHeader"><b>CreateUser.jsp</b></div><div class="codeContent">
-<pre class="code-xml">..
-<span class="code-tag">&lt;ww:form name=<span class="code-quote">"createUserForm"</span> action=<span class="code-quote">"createUser"</span> method=<span class="code-quote">"POST"</span>&gt;</span>
-    <span class="code-tag">&lt;ww:textfield label=<span class="code-quote">"Username"</span> name=<span class="code-quote">"user.handle"</span>/&gt;</span>
-..</pre>
-</div></div>
-
-<ul>
-	<li>/src/java/org/hibernate/admin/component: contains the components and enablers for both the HibernateSessionFactory and the HibernateSession. These components are declared in the /src/java/<a href="Inversion of Control.html" title="Inversion of Control">components.xml</a> file (which will be copied to the root of your compiled classes afterwards):</li>
-</ul>
-
-
-<div class="code"><div class="codeHeader"><b>components.xml</b></div><div class="codeContent">
-<pre class="code-xml"><span class="code-tag">&lt;components&gt;</span>
-
-    <span class="code-tag">&lt;component&gt;</span>
-        <span class="code-tag">&lt;scope&gt;</span>request<span class="code-tag">&lt;/scope&gt;</span>
-        <span class="code-tag">&lt;class&gt;</span>org.hibernate.admin.component.HibernateSession<span class="code-tag">&lt;/class&gt;</span>
-        <span class="code-tag">&lt;enabler&gt;</span>org.hibernate.admin.component.HibernateSessionAware<span class="code-tag">&lt;/enabler&gt;</span>
-    <span class="code-tag">&lt;/component&gt;</span>
-
-    <span class="code-tag">&lt;component&gt;</span>
-        <span class="code-tag">&lt;scope&gt;</span>application<span class="code-tag">&lt;/scope&gt;</span>
-        <span class="code-tag">&lt;class&gt;</span>org.hibernate.admin.component.HibernateSessionFactory<span class="code-tag">&lt;/class&gt;</span>
-        <span class="code-tag">&lt;enabler&gt;</span>org.hibernate.admin.component.HibernateSessionFactoryAware<span class="code-tag">&lt;/enabler&gt;</span>
-    <span class="code-tag">&lt;/component&gt;</span>
-
-<span class="code-tag">&lt;/components&gt;</span></pre>
-</div></div>
-
-<ul>
-	<li>/src/java/org/hibernate/admin/interceptor: contains the Hibernate interceptor. <a href="Interceptors.html" title="Interceptors">Interceptors</a> are an incredibly powerful feature of WebWork - it allows you to control invocations before and after they excute, manipulate their results, or, as in our case, extract the HibernateSession object and dispose it after the Action has been executed (and the view rendered). Because we use a try/catch/finally block, we're able to catch exceptions and yet make sure our Session gets closed properly (the number one cause of db connection leaks).</li>
-</ul>
-
-
-<div class="code"><div class="codeHeader"><b>org.hibernate.admin.interceptor.HibernateInterceptor</b></div><div class="codeContent">
-<pre class="code-java"><span class="code-keyword">public</span> <span class="code-object">String</span> intercept(ActionInvocation invocation) <span class="code-keyword">throws</span> Exception {
-		Action action = invocation.getAction();
-		<span class="code-keyword">if</span> ( !(action <span class="code-keyword">instanceof</span> AbstractAction) ) <span class="code-keyword">return</span> invocation.invoke();
-		
-		HibernateSession hs = ( (AbstractAction) action ).getHibernateSession();
-		<span class="code-keyword">try</span> {
-			<span class="code-keyword">return</span> invocation.invoke();
-		}
-		
-		<span class="code-comment">// Note that all the cleanup is done
-</span>		<span class="code-comment">// after the view is rendered, so we
-</span>		<span class="code-comment">// have an open session in the view
-</span>		
-		<span class="code-keyword">catch</span> (Exception e) {	
-			hs.setRollBackOnly(<span class="code-keyword">true</span>);
-			<span class="code-keyword">if</span> (e <span class="code-keyword">instanceof</span> HibernateException) {
-				LOG.error(<span class="code-quote">"HibernateException in execute()"</span>, e);
-				<span class="code-keyword">return</span> Action.ERROR;
-			}
-			<span class="code-keyword">else</span> {
-				LOG.error(<span class="code-quote">"Exception in execute()"</span>, e);
-				<span class="code-keyword">throw</span> e;
-			}
-		}
-		
-		<span class="code-keyword">finally</span> {
-			<span class="code-keyword">try</span> {
-				hs.disposeSession();
-			}
-			<span class="code-keyword">catch</span> (HibernateException e) {
-				LOG.error(<span class="code-quote">"HibernateException in dispose()"</span>, e);
-				<span class="code-keyword">return</span> Action.ERROR;
-			}
-		}
-	}</pre>
-</div></div>
-
-
-<h2><a name="AdminApp-Conclusion"></a>Conclusion</h2>
-<p>In this document, we tried to point out several key features in the Hibernate AdminApp. In part II, we'll have a look at the new AdminApp, which is far more up to date, and uses Spring as its IoC container. No more implements ActionSupport or Aware interfaces, resulting in even cleaner code.</p>
-
-<p>AdminApp is a very good example of how a webapp can be structered, using as many advantages from the various frameworks as possible.</p>
-
-                    			    </td>
-		    </tr>
-	    </table>
-    </body>
-</html>

docs/wikidocs/After Annotation.html

-<html>
-    <head>
-        <title>WebWork - 
-        After Annotation
-         </title>
-	    <link rel="stylesheet" href="styles/site.css" type="text/css" />
-        <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
-    </head>
-
-    <body>
-	    <table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#ffffff">
-		    <tr>
-			    <td valign="top" class="pagebody">
-				    <h1><a name="AfterAnnotation-AfterAnnotation"></a>After Annotation</h1>
-
-<table bgcolor='#ffffe0' cellpadding='0' cellspacing='0' width='100%' border='0'><tr><td><div stlye='font-size:8px; text-align:center;'><center>Content pulled from external source. Click <a href='/plugins/snippet/clearCache.action?id=description&amp;url=https%3A%2F%2Fopensymphony.dev.java.net%2Fsource%2Fbrowse%2F*checkout*%2Fxwork%2Ftiger%2Fsrc%2Fjava%2Fcom%2Fopensymphony%2Fxwork%2Finterceptor%2Fannotations%2FAfter.java'>here</a> to refresh.</center></div></td></tr><tr><td><p>Marks a action method that needs to be called after the main action method and the result was
-executed. Return value is ignored.</p></td></tr></table>
-
-<h2><a name="AfterAnnotation-Usage"></a>Usage</h2>
-
-<table bgcolor='#ffffe0' cellpadding='0' cellspacing='0' width='100%' border='0'><tr><td><div stlye='font-size:8px; text-align:center;'><center>Content pulled from external source. Click <a href='/plugins/snippet/clearCache.action?id=usage&amp;url=https%3A%2F%2Fopensymphony.dev.java.net%2Fsource%2Fbrowse%2F*checkout*%2Fxwork%2Ftiger%2Fsrc%2Fjava%2Fcom%2Fopensymphony%2Fxwork%2Finterceptor%2Fannotations%2FAfter.java'>here</a> to refresh.</center></div></td></tr><tr><td><p> The After annotation can be applied at method level.</p>
-</td></tr></table>
-
-<h2><a name="AfterAnnotation-Parameters"></a>Parameters</h2>
-
-<table bgcolor='#ffffe0' cellpadding='0' cellspacing='0' width='100%' border='0'><tr><td><div stlye='font-size:8px; text-align:center;'><center>Content pulled from external source. Click <a href='/plugins/snippet/clearCache.action?id=parameters&amp;url=https%3A%2F%2Fopensymphony.dev.java.net%2Fsource%2Fbrowse%2F*checkout*%2Fxwork%2Ftiger%2Fsrc%2Fjava%2Fcom%2Fopensymphony%2Fxwork%2Finterceptor%2Fannotations%2FAfter.java'>here</a> to refresh.</center></div></td></tr><tr><td>
-<p> no parameters</p>
-</td></tr></table>
-
-<h2><a name="AfterAnnotation-Examples"></a>Examples</h2>
-
-<table bgcolor='#ffffe0' cellpadding='0' cellspacing='0' width='100%' border='0'><tr><td><div stlye='font-size:8px; text-align:center;'><center>Content pulled from external source. Click <a href='/plugins/snippet/clearCache.action?id=example&amp;url=https%3A%2F%2Fopensymphony.dev.java.net%2Fsource%2Fbrowse%2F*checkout*%2Fxwork%2Ftiger%2Fsrc%2Fjava%2Fcom%2Fopensymphony%2Fxwork%2Finterceptor%2Fannotations%2FAfter.java'>here</a> to refresh.</center></div></td></tr><tr><td><div class="code"><div class="codeContent">
-<pre class="code-java"><span class="code-keyword">public</span> class SampleAction <span class="code-keyword">extends</span> ActionSupport {
-
- &amp;#64;After
- <span class="code-keyword">public</span> void isValid() <span class="code-keyword">throws</span> ValidationException {
-   <span class="code-comment">// validate model object, <span class="code-keyword">throw</span> exception <span class="code-keyword">if</span> failed
-</span> }
-
- <span class="code-keyword">public</span> <span class="code-object">String</span> execute() {
-    <span class="code-comment">// perform action
-</span>    <span class="code-keyword">return</span> SUCCESS;
- }
-}</pre>
-</div></div></td></tr></table>
-
-
-                    			    </td>
-		    </tr>
-	    </table>
-    </body>
-</html>

docs/wikidocs/Alias Interceptor.html

-<html>
-    <head>
-        <title>WebWork - 
-        Alias Interceptor
-         </title>
-	    <link rel="stylesheet" href="styles/site.css" type="text/css" />
-        <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
-    </head>
-
-    <body>
-	    <table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#ffffff">
-		    <tr>
-			    <td valign="top" class="pagebody">
-				    <table bgcolor='#ffffe0' cellpadding='0' cellspacing='0' width='100%' border='0'><tr><td><div stlye='font-size:8px; text-align:center;'><center>Content pulled from external source. Click <a href='/plugins/snippet/clearCache.action?id=description&amp;url=https%3A%2F%2Fopensymphony.dev.java.net%2Fsource%2Fbrowse%2F*checkout*%2Fxwork%2Fsrc%2Fjava%2Fcom%2Fopensymphony%2Fxwork%2Finterceptor%2FAliasInterceptor.java'>here</a> to refresh.</center></div></td></tr><tr><td>
-<p> The aim of this Interceptor is to alias a named parameter to a different named parameter. By acting as the glue
- between actions sharing similiar parameters (but with different names), it can help greatly with action chaining.</p>
-
-<p> <p/>  Action's alias expressions should be in the form of  #{ "name1" : "alias1", "name2" : "alias2" }. This means
- that assuming an action (or something else in the stack) has a value for the expression named <i>name1</i> and the
- action this interceptor is applied to has a setter named <i>alias1</i>, <i>alias1</i> will be set with the value from
- <i>name1</i>.</p>
-</td></tr></table>
-
-<h1><a name="AliasInterceptor-Parameters"></a>Parameters</h1>
-
-<table bgcolor='#ffffe0' cellpadding='0' cellspacing='0' width='100%' border='0'><tr><td><div stlye='font-size:8px; text-align:center;'><center>Content pulled from external source. Click <a href='/plugins/snippet/clearCache.action?id=parameters&amp;url=https%3A%2F%2Fopensymphony.dev.java.net%2Fsource%2Fbrowse%2F*checkout*%2Fxwork%2Fsrc%2Fjava%2Fcom%2Fopensymphony%2Fxwork%2Finterceptor%2FAliasInterceptor.java'>here</a> to refresh.</center></div></td></tr><tr><td>
-<p> <ul></p>
-
-<p> <li>aliasesKey (optional) - the name of the action parameter to look for the alias map (by default this is
- <i>aliases</i>).</li></p>
-
-<p> </ul></p>
-</td></tr></table>
-
-<h1><a name="AliasInterceptor-ExtendingtheInterceptor"></a>Extending the Interceptor</h1>
-
-<table bgcolor='#ffffe0' cellpadding='0' cellspacing='0' width='100%' border='0'><tr><td><div stlye='font-size:8px; text-align:center;'><center>Content pulled from external source. Click <a href='/plugins/snippet/clearCache.action?id=extending&amp;url=https%3A%2F%2Fopensymphony.dev.java.net%2Fsource%2Fbrowse%2F*checkout*%2Fxwork%2Fsrc%2Fjava%2Fcom%2Fopensymphony%2Fxwork%2Finterceptor%2FAliasInterceptor.java'>here</a> to refresh.</center></div></td></tr><tr><td>
-<p> This interceptor does not have any known extension points.</p>
-</td></tr></table>
-
-<h1><a name="AliasInterceptor-Examples"></a>Examples</h1>
-
-<table bgcolor='#ffffe0' cellpadding='0' cellspacing='0' width='100%' border='0'><tr><td><div stlye='font-size:8px; text-align:center;'><center>Content pulled from external source. Click <a href='/plugins/snippet/clearCache.action?id=example&amp;url=https%3A%2F%2Fopensymphony.dev.java.net%2Fsource%2Fbrowse%2F*checkout*%2Fxwork%2Fsrc%2Fjava%2Fcom%2Fopensymphony%2Fxwork%2Finterceptor%2FAliasInterceptor.java'>here</a> to refresh.</center></div></td></tr><tr><td><div class="code"><div class="codeContent">
-<pre class="code-xml"><span class="code-tag">&lt;action name=<span class="code-quote">"someAction"</span> class=<span class="code-quote">"com.examples.SomeAction"</span>&gt;</span>
-    <span class="code-tag"><span class="code-comment">&lt;!-- The value for the foo parameter will be applied as if it were named bar --&gt;</span></span>
-    <span class="code-tag">&lt;param name=<span class="code-quote">"aliases"</span>&gt;</span>#{ 'foo' : 'bar' }<span class="code-tag">&lt;/param&gt;</span>
-
-    <span class="code-tag"><span class="code-comment">&lt;!-- note: the alias interceptor is included with the defaultStack in webwork-default.xml --&gt;</span></span>
-    <span class="code-tag">&lt;interceptor-ref name=<span class="code-quote">"alias"</span>/&gt;</span>
-    <span class="code-tag">&lt;interceptor-ref name=<span class="code-quote">"basicStack"</span>/&gt;</span>
-    <span class="code-tag">&lt;result name=<span class="code-quote">"success"</span>&gt;</span>good_result.ftl<span class="code-tag">&lt;/result&gt;</span>
-<span class="code-tag">&lt;/action&gt;</span></pre>
-</div></div></td></tr></table>
-
-                    			    </td>
-		    </tr>
-	    </table>
-    </body>
-</html>

docs/wikidocs/Alt Syntax.html

-<html>
-    <head>
-        <title>WebWork - 
-         Syntax
-        </title>
-	    <link rel="stylesheet" href="styles/site.css" type="text/css" />
-        <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
-    </head>
-
-    <body>
-	    <table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#ffffff">
-		    <tr>
-			    <td valign="top" class="pagebody">
-				    <p>The <em>altSyntax</em> is an option that can be defined in <a href="webwork.properties.html" title="webwork.properties">webwork.properties</a>. By default it is set to true and it is <b>strongly</b> recommend you do not change that unless you are upgrading from WebWork 2.1.7 or previous versions.</p>
-
-<table cellpadding='5' width='85%' cellspacing='8px' class='tipMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/images/icons/emoticons/check.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Migration tip</b><br />You can also turn on the altSyntax on a per-page basis by using the <a href="set.html" title="set">set</a> tag. Simply set the name <em>useAltSyntax</em> to the value <em>true</em>. From this point on, all tags will use the altSyntax for the rest of the request.</td></tr></table>
-
-<p>The altSyntax changes the behavior of how tags are interpreted. Instead of evaluating each tag parameter against the value stack and needing single quotes to mark string literals, only marked expressions are evaluated.</p>
-
-<p>Example:</p>
-
-<p>the following code uses the <a href="Tag Syntax.html" title="Tag Syntax">Tag Syntax</a>:</p>
-<div class="code"><div class="codeContent">
-<pre class="code-java">&lt;ww:iterator value=<span class="code-quote">"cart.items"</span>&gt;
-   ...
-   &lt;ww:textfield label=<span class="code-quote">"'Cart item No.' + #rowstatus.index + ' note'"</span> 
-                 name=<span class="code-quote">"'cart.items[' + #rowstatus.index + '].note'"</span> 
-                 value=<span class="code-quote">"note"</span> /&gt;
-&lt;/ww:iterator&gt;</pre>
-</div></div>
-
-<p>this is somewhat counter intuitive to normal HTML tag behaviour, and you get loads of single quotes. Now the same example in altSyntax:</p>
-<div class="code"><div class="codeContent">
-<pre class="code-java">&lt;ww:iterator value=<span class="code-quote">"cart.items"</span>&gt;
-   ...
-   &lt;ww:textfield label=<span class="code-quote">"Cart item No. %{#rowstatus.index} note"</span> 
-                 name=<span class="code-quote">"cart.items[%{#rowstatus.index}].note"</span> 
-                 value=<span class="code-quote">"%{note}"</span> /&gt;
-&lt;/ww:iterator&gt;</pre>
-</div></div>
-
-<p>Only expressions enclosed with %{} are evaluated. The code is shorter and clearer, very similar to JSTL EL usage. Quoting problems, eg. with javascript function calls, are avoided.</p>
-
-<p>In order to fully understand why this option exists and what the differences are, it is best to get a bit of history about WebWork.</p>
-
-<table cellpadding='5' width='85%' cellspacing='8px' class='noteMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="/images/icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td>If you are <em>not</em> upgrading from WebWork 2.1.7 or previous versions and you don't care about the history of WebWork's evolution, you can skip this section. See the <a href="Tag Syntax.html" title="Tag Syntax">Tag Syntax</a> section for more information on the standard tag syntax support</td></tr></table>
-
-<h1><a name="AltSyntax-History"></a>History</h1>
-
-<p>In WebWork 2.1.4, the altSyntax option was introduced. The book, WebWork in Action, while based around WebWork 2.1.7, was entirely written with the assumption that the altSyntax was enabled. As of WebWork 2.2, the altSyntax is turned on by default and eventually the old syntax will no longer be supported and will be removed from the code.</p>
-
-                    			    </td>
-		    </tr>
-	    </table>
-    </body>
-</html>

docs/wikidocs/AnnotationWorkflowInterceptor.html

-<html>
-    <head>
-        <title>WebWork - 
-        AnnotationWorkflowInterceptor
-         </title>
-	    <link rel="stylesheet" href="styles/site.css" type="text/css" />
-        <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
-    </head>
-
-    <body>
-	    <table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#ffffff">
-		    <tr>
-			    <td valign="top" class="pagebody">
-				    <h1><a name="AnnotationWorkflowInterceptor-AnnotationWorkflowInterceptorInterceptor"></a>AnnotationWorkflowInterceptor Interceptor</h1>
-
-<table bgcolor='#ffffe0' cellpadding='0' cellspacing='0' width='100%' border='0'><tr><td><div stlye='font-size:8px; text-align:center;'><center>Content pulled from external source. Click <a href='/plugins/snippet/clearCache.action?id=javadoc&amp;url=https%3A%2F%2Fopensymphony.dev.java.net%2Fsource%2Fbrowse%2F*checkout*%2Fxwork%2Ftiger%2Fsrc%2Fjava%2Fcom%2Fopensymphony%2Fxwork%2Finterceptor%2Fannotations%2FAnnotationWorkflowInterceptor.java'>here</a> to refresh.</center></div></td></tr><tr><td><p><p>Invokes any annotated methods on the action. Specifically, it supports the following
-annotations:
-<ul>
-<li> &#64;Before - will be invoked before the action method. If the returned value is not null, it is
-returned as the action result code</li>
-<li> &#64;BeforeResult - will be invoked after the action method but before the result execution</li>
-<li> &#64;After - will be invoked after the action method and result execution</li>
-</ul>
-</p>
-<p/>
-<p>There can be multiple methods marked with the same annotations, but the order of their execution
-is not guaranteed. However, the annotated methods on the superclass chain are guaranteed to be invoked before the
-annotated method in the current class in the case of a Before annotations and after, if the annotations is
-After.</p></p></td></tr></table>
-
-<h2><a name="AnnotationWorkflowInterceptor-Examples"></a>Examples</h2>
-
-<table bgcolor='#ffffe0' cellpadding='0' cellspacing='0' width='100%' border='0'><tr><td><div stlye='font-size:8px; text-align:center;'><center>Content pulled from external source. Click <a href='/plugins/snippet/clearCache.action?id=javacode&amp;url=https%3A%2F%2Fopensymphony.dev.java.net%2Fsource%2Fbrowse%2F*checkout*%2Fxwork%2Ftiger%2Fsrc%2Fjava%2Fcom%2Fopensymphony%2Fxwork%2Finterceptor%2Fannotations%2FAnnotationWorkflowInterceptor.java'>here</a> to refresh.</center></div></td></tr><tr><td><div class="code"><div class="codeContent">
-<pre class="code-java"><span class="code-keyword">public</span> class BaseAnnotatedAction {
- 	<span class="code-keyword">protected</span> <span class="code-object">String</span> log = "";