Commits

Anonymous committed 7008a71

Getting ready for XWork 2.0-final
o adding latest documents

git-svn-id: http://svn.opensymphony.com/svn/xwork/trunk@1301e221344d-f017-0410-9bd5-d282ab1896d7

  • Participants
  • Parent commits 502490e

Comments (0)

Files changed (104)

docs/wikidocs/Action configuration.html

+<html>
+    <head>
+        <title>XWork - 
+        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">
+				    <p>Actions are the basic "unit-of-work" in XWork, they define, well, actions. An action will usually be a request, (and usually a button click, or form submit). The main action element has two parts, the friendly name (referenced in the URL, i.e. saveForm.action) and the corresponding "handler" class.</p>
+
+<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.xwork.example.SampleAction"</span> method=<span class="code-quote">"processSample"</span>&gt;</span></pre>
+</div></div>
+
+<p>The optional "<b>method</b>" parameter tells XWork which method to call based upon this action. If you leave the method parameter blank, XWork will call the method <b>execute()</b> by default. If there is no execute() method and no method specified in the xml file, XWork will throw an exception.</p>
+
+<p>Also, you can tell XWork to invoke "<b>doSomething</b>"  method in your action by using the pattern "<b>actionName&#33;something</b>" in your form.  For example, "<b>sampleTest&#33;save.action</b>" will invoke the method "<b>save</b>" in SampleAction class.  The method must be public, take no arguments and also returns a String which indicate the name of the result to be executed:</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-ActionSupport"></a>Action Support</h2>
+
+<p>Action class attribute could be left out such as following </p>
+
+<div class="code"><div class="codeContent">
+<pre class="code-java">&lt;action name=<span class="code-quote">"myAction"</span>&gt;
+   ....
+&lt;/action&gt;</pre>
+</div></div>
+
+<p>In this case, the class will default to com.opensymphony.xwork.ActionSupport which have an execute() method that returns SUCCESS by default.</p>
+
+
+<h2><a name="Actionconfiguration-DefaultActionReference"></a>Default Action Reference</h2>
+
+<p>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;package name=<span class="code-quote">"myPackage"</span> ....&gt;</span>
+
+...
+
+<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 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>
+
+... 
+
+<span class="code-tag">&lt;/package&gt;</span></pre>
+</div></div>
+<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="./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>
+<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="./icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Note</b><br />
+<p>Note that the name attribute is left out for the first result, as XWork will default to "success" if it is left out. </p></td></tr></table>
+
+<p>In this case any request to action not defined in this package will automatically trigger action with alias "simpleViewResultAction" to be executed.</p>
+
+                    			    </td>
+		    </tr>
+	    </table>
+    </body>
+</html>

docs/wikidocs/After Annotation.html

+<html>
+    <head>
+        <title>XWork - 
+        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>
+
+<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>
+
+<h2><a name="AfterAnnotation-Usage"></a>Usage</h2>
+
+<p>The After annotation can be applied at method level.</p>
+
+
+<h2><a name="AfterAnnotation-Parameters"></a>Parameters</h2>
+
+
+<p>no parameters</p>
+
+
+<h2><a name="AfterAnnotation-Examples"></a>Examples</h2>
+
+<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 {
+
+ @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>
+    </body>
+</html>

docs/wikidocs/AnnotationWorkflowInterceptor.html

+<html>
+    <head>
+        <title>XWork - 
+        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>
+
+<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>
+
+<h2><a name="AnnotationWorkflowInterceptor-Examples"></a>Examples</h2>
+
+<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 = "";
+
+ 	@Before
+ 	<span class="code-keyword">public</span> <span class="code-object">String</span> baseBefore() {
+ 		log = log + <span class="code-quote">"baseBefore-"</span>;
+ 		<span class="code-keyword">return</span> <span class="code-keyword">null</span>;
+ 	}
+ }
+
+ <span class="code-keyword">public</span> class AnnotatedAction <span class="code-keyword">extends</span> BaseAnnotatedAction {
+ 	@Before
+ 	<span class="code-keyword">public</span> <span class="code-object">String</span> before() {
+ 		log = log + <span class="code-quote">"before"</span>;
+ 		<span class="code-keyword">return</span> <span class="code-keyword">null</span>;
+ 	}
+
+ 	<span class="code-keyword">public</span> <span class="code-object">String</span> execute() {
+ 		log = log + <span class="code-quote">"-execute"</span>;
+ 		<span class="code-keyword">return</span> Action.SUCCESS;
+ 	}
+
+ 	@BeforeResult
+ 	<span class="code-keyword">public</span> void beforeResult() <span class="code-keyword">throws</span> Exception {
+ 		log = log +<span class="code-quote">"-beforeResult"</span>;
+ 	}
+
+ 	@After
+ 	<span class="code-keyword">public</span> void after() {
+ 		log = log + <span class="code-quote">"-after"</span>;
+ 	}
+ }</pre>
+</div></div>
+<p>Configure a stack in xwork.xml that replaces the PrepareInterceptor with the AnnotationWorkflowInterceptor:</p>
+<div class="code"><div class="codeContent">
+<pre class="code-xml"><span class="code-tag">&lt;interceptor-stack name=<span class="code-quote">"annotatedStack"</span>&gt;</span>
+<span class="code-tag">&lt;interceptor-ref name=<span class="code-quote">"static-params"</span>/&gt;</span>
+<span class="code-tag">&lt;interceptor-ref name=<span class="code-quote">"params"</span>/&gt;</span>
+<span class="code-tag">&lt;interceptor-ref name=<span class="code-quote">"conversionError"</span>/&gt;</span>
+<span class="code-tag">&lt;interceptor-ref name=<span class="code-quote">"annotationInterceptor"</span>/&gt;</span>
+<span class="code-tag">&lt;/interceptor-stack&gt;</span></pre>
+</div></div>
+<p>Given an Action, AnnotatedAction, add a reference to the AnnotationWorkflowInterceptor interceptor.</p>
+<div class="code"><div class="codeContent">
+<pre class="code-xml"><span class="code-tag">&lt;action name=<span class="code-quote">"AnnotatedAction"</span> class=<span class="code-quote">"com.examples.AnnotatedAction"</span>&gt;</span>
+   <span class="code-tag">&lt;interceptor-ref name=<span class="code-quote">"annotationInterceptor"</span>/&gt;</span>
+   <span class="code-tag">&lt;result name=<span class="code-quote">"success"</span> type=<span class="code-quote">"freemarker"</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>
+<p><p>With the interceptor applied and the action executed on <code>AnnotatedAction</code> the log
+instance variable will contain <code>baseBefore-before-execute-beforeResult-after</code>.</p></p>
+
+                    			    </td>
+		    </tr>
+	    </table>
+    </body>
+</html>

docs/wikidocs/Annotations.html

+<html>
+    <head>
+        <title>XWork - 
+        Annotations
+         </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>In many places, applications can use use Java 5 annotations as an alternative to XML and Java properties configuration. This page serves as a reference for all annotations across the framework.</p>
+
+<h1><a name="Annotations-InterceptorAnnotations"></a>Interceptor Annotations</h1>
+
+<p>To use these annotations, you have to specify the <a href="AnnotationWorkflowInterceptor.html" title="AnnotationWorkflowInterceptor">AnnotationWorkflowInterceptor</a> to your interceptor stack.</p>
+<table class='confluenceTable'><tbody>
+<tr>
+<th class='confluenceTh'> Annotation </th>
+<th class='confluenceTh'> Description </th>
+</tr>
+<tr>
+<td class='confluenceTd'> <a href="After Annotation.html" title="After Annotation">After Annotation</a> </td>
+<td class='confluenceTd'> Marks a action method that needs to be executed before the result. </td>
+</tr>
+<tr>
+<td class='confluenceTd'> <a href="Before Annotation.html" title="Before Annotation">Before Annotation</a> </td>
+<td class='confluenceTd'> Marks a action method that needs to be executed before the main action method. </td>
+</tr>
+<tr>
+<td class='confluenceTd'> <a href="BeforeResult Annotation.html" title="BeforeResult Annotation">BeforeResult Annotation</a> </td>
+<td class='confluenceTd'> Marks a action method that needs to be executed before the result. </td>
+</tr>
+</tbody></table>
+
+<h1><a name="Annotations-ValidationAnnotations"></a>Validation Annotations</h1>
+
+<p>If you want to use annotation based validation, you have to annotate the class or interface with <a href="Validation Annotation.html" title="Validation Annotation">Validation Annotation</a>.</p>
+
+<p>These are the standard validator annotations that come with XWork-tiger:</p>
+<table class='confluenceTable'><tbody>
+<tr>
+<th class='confluenceTh'> Annotation </th>
+<th class='confluenceTh'> Description </th>
+</tr>
+<tr>
+<td class='confluenceTd'> <a href="ConversionErrorFieldValidator Annotation.html" title="ConversionErrorFieldValidator Annotation">ConversionErrorFieldValidator Annotation</a> </td>
+<td class='confluenceTd'> Checks if there are any conversion errors for a field. </td>
+</tr>
+<tr>
+<td class='confluenceTd'> <a href="DateRangeFieldValidator Annotation.html" title="DateRangeFieldValidator Annotation">DateRangeFieldValidator Annotation</a> </td>
+<td class='confluenceTd'> Checks that a date field has a value within a specified range. </td>
+</tr>
+<tr>
+<td class='confluenceTd'> <a href="DoubleRangeFieldValidator Annotation.html" title="DoubleRangeFieldValidator Annotation">DoubleRangeFieldValidator Annotation</a> </td>
+<td class='confluenceTd'> Checks that a double field has a value within a specified range. </td>
+</tr>
+<tr>
+<td class='confluenceTd'> <a href="EmailValidator Annotation.html" title="EmailValidator Annotation">EmailValidator Annotation</a> </td>
+<td class='confluenceTd'> Checks that a field is a valid e-mail address. </td>
+</tr>
+<tr>
+<td class='confluenceTd'> <a href="ExpressionValidator Annotation.html" title="ExpressionValidator Annotation">ExpressionValidator Annotation</a> </td>
+<td class='confluenceTd'> Validates an expression. </td>
+</tr>
+<tr>
+<td class='confluenceTd'> <a href="FieldExpressionValidator Annotation.html" title="FieldExpressionValidator Annotation">FieldExpressionValidator Annotation</a> </td>
+<td class='confluenceTd'> Uses an OGNL expression to perform its validator. </td>
+</tr>
+<tr>
+<td class='confluenceTd'> <a href="IntRangeFieldValidator Annotation.html" title="IntRangeFieldValidator Annotation">IntRangeFieldValidator Annotation</a> </td>
+<td class='confluenceTd'> Checks that a numeric field has a value within a specified range. </td>
+</tr>
+<tr>
+<td class='confluenceTd'> <a href="RegexFieldValidator Annotation.html" title="RegexFieldValidator Annotation">RegexFieldValidator Annotation</a> </td>
+<td class='confluenceTd'> Validates a regular expression for a field. </td>
+</tr>
+<tr>
+<td class='confluenceTd'> <a href="RequiredFieldValidator Annotation.html" title="RequiredFieldValidator Annotation">RequiredFieldValidator Annotation</a> </td>
+<td class='confluenceTd'> Checks that a field is non-null. </td>
+</tr>
+<tr>
+<td class='confluenceTd'> <a href="RequiredStringValidator Annotation.html" title="RequiredStringValidator Annotation">RequiredStringValidator Annotation</a> </td>
+<td class='confluenceTd'> Checks that a String field is not empty. </td>
+</tr>
+<tr>
+<td class='confluenceTd'> <a href="StringLengthFieldValidator Annotation.html" title="StringLengthFieldValidator Annotation">StringLengthFieldValidator Annotation</a> </td>
+<td class='confluenceTd'> Checks that a String field is of the right length. </td>
+</tr>
+<tr>
+<td class='confluenceTd'> <a href="StringRegexValidator Annotation.html" title="StringRegexValidator Annotation">StringRegexValidator Annotation</a> </td>
+<td class='confluenceTd'>&nbsp;</td>
+</tr>
+<tr>
+<td class='confluenceTd'> <a href="UrlValidator Annotation.html" title="UrlValidator Annotation">UrlValidator Annotation</a> </td>
+<td class='confluenceTd'> Checks that a field is a valid URL. </td>
+</tr>
+<tr>
+<td class='confluenceTd'> <a href="Validation Annotation.html" title="Validation Annotation">Validation Annotation</a> </td>
+<td class='confluenceTd'> Marker annotation for validation at Type level. </td>
+</tr>
+<tr>
+<td class='confluenceTd'> <a href="Validations Annotation.html" title="Validations Annotation">Validations Annotation</a> </td>
+<td class='confluenceTd'> Used to group validation annotations. </td>
+</tr>
+<tr>
+<td class='confluenceTd'> <a href="VisitorFieldValidator Annotation.html" title="VisitorFieldValidator Annotation">VisitorFieldValidator Annotation</a> </td>
+<td class='confluenceTd'>&nbsp;</td>
+</tr>
+<tr>
+<td class='confluenceTd'> <a href="CustomValidator Annotation.html" title="CustomValidator Annotation">CustomValidator Annotation</a> </td>
+<td class='confluenceTd'> Use this annotation for your custom validator types. </td>
+</tr>
+</tbody></table>
+
+<h1><a name="Annotations-TypeConversionAnnotations"></a>Type Conversion Annotations</h1>
+
+<p>If the xwork-tigerjar is added to the classpath, you will directly have type conversion support for Maps and Collections using generics.</p>
+
+<p>In short, instead of specifying the types found in collections and maps as documented in Type Conversion, <b>the  collection's generic type is used</b>. This means you most likely don't need any <b>ClassName-conversion.properties</b> files.</p>
+
+<p>If you want to use annotation based type conversion, you have to annotate the class or interface with the <a href="Conversion Annotation.html" title="Conversion Annotation">Conversion Annotation</a>.</p>
+<table class='confluenceTable'><tbody>
+<tr>
+<th class='confluenceTh'> Annotation </th>
+<th class='confluenceTh'> Description </th>
+</tr>
+<tr>
+<td class='confluenceTd'> <a href="Conversion Annotation.html" title="Conversion Annotation">Conversion Annotation</a> </td>
+<td class='confluenceTd'> Marker annotation for type conversions at Type level. </td>
+</tr>
+<tr>
+<td class='confluenceTd'> <a href="CreateIfNull Annotation.html" title="CreateIfNull Annotation">CreateIfNull Annotation</a> </td>
+<td class='confluenceTd'> For Collection and Map types: Create the types within the Collection or Map, if null. </td>
+</tr>
+<tr>
+<td class='confluenceTd'> <a href="Element Annotation.html" title="Element Annotation">Element Annotation</a> </td>
+<td class='confluenceTd'> For Generic types: Specify the element type for Collection types and Map values. </td>
+</tr>
+<tr>
+<td class='confluenceTd'> <a href="Key Annotation.html" title="Key Annotation">Key Annotation</a> </td>
+<td class='confluenceTd'> For Generic types: Specify the key type for Map keys. </td>
+</tr>
+<tr>
+<td class='confluenceTd'> <a href="KeyProperty Annotation.html" title="KeyProperty Annotation">KeyProperty Annotation</a> </td>
+<td class='confluenceTd'> For Generic types: Specify the key property name value. </td>
+</tr>
+<tr>
+<td class='confluenceTd'> <a href="TypeConversion Annotation.html" title="TypeConversion Annotation">TypeConversion Annotation</a> </td>
+<td class='confluenceTd'> Used for class and application wide conversion rules. </td>
+</tr>
+</tbody></table>
+
+
+                    			    </td>
+		    </tr>
+	    </table>
+    </body>
+</html>

docs/wikidocs/Before Annotation.html

+<html>
+    <head>
+        <title>XWork - 
+        Before 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="BeforeAnnotation-BeforeAnnotation"></a>Before Annotation</h1>
+
+<p>Marks a action method that needs to be executed before the main action method.</p>
+
+<h2><a name="BeforeAnnotation-Usage"></a>Usage</h2>
+
+<p>The Before annotation can be applied at method level.</p>
+
+
+<h2><a name="BeforeAnnotation-Parameters"></a>Parameters</h2>
+
+
+<p>no parameters</p>
+
+
+<h2><a name="BeforeAnnotation-Examples"></a>Examples</h2>
+
+<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 {
+
+ @Before
+ <span class="code-keyword">public</span> void isAuthorized() <span class="code-keyword">throws</span> AuthenticationException {
+   <span class="code-comment">// authorize request, <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 secure action
+</span>    <span class="code-keyword">return</span> SUCCESS;
+ }
+}</pre>
+</div></div>
+
+
+                    			    </td>
+		    </tr>
+	    </table>
+    </body>
+</html>

docs/wikidocs/BeforeResult Annotation.html

+<html>
+    <head>
+        <title>XWork - 
+        BeforeResult 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="BeforeResultAnnotation-BeforeResultAnnotation"></a>BeforeResult Annotation</h1>
+
+<p>Marks a action method that needs to be executed before the result. Return value is ignored.</p>
+
+<h2><a name="BeforeResultAnnotation-Usage"></a>Usage</h2>
+
+<p>The BeforeResult annotation can be applied at method level.</p>
+
+
+<h2><a name="BeforeResultAnnotation-Parameters"></a>Parameters</h2>
+
+
+<p>no parameters</p>
+
+
+<h2><a name="BeforeResultAnnotation-Examples"></a>Examples</h2>
+
+<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 {
+
+ @BeforeResult
+ <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>
+    </body>
+</html>

docs/wikidocs/Building XWork.html

+<html>
+    <head>
+        <title>XWork - 
+        Building XWork
+         </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">
+				    <h2><a name="BuildingXWork-WhyBuild%3F"></a>Why Build?</h2>
+
+<p>Most developers will never need to build the framework from source. The distribution package contains everything a developer needs to get started and become productive with the framework. For more on how to go to work with the distributed binaries right away, see Ready, Set, Go\!. However, there are situations when someone will want to build the framework from scratch. You may want to try out new tweaks and patches, or you might want to try writing your own tweak or patch.</p>
+
+<h2><a name="BuildingXWork-GettingtheSources"></a>Getting the Sources</h2>
+
+<p>The source code for the framework is available as distribution you can download directly or from the source code repository.</p>
+
+<h2><a name="BuildingXWork-Distribution"></a>Distribution</h2>
+
+<p>The distributions of the framework contain all sources, as well as all needed libraries for building JARs and running. Distributions can be downloaded from <a href="http://www.opensymphony.com/xwork/download.action" title="Visit page outside Confluence">here</a>.</p>
+
+
+<p>After downloading simply unzip it using: </p>
+<div class="code"><div class="codeContent">
+<pre class="code-java">unzip ./xwork-xxx.zip -d ./xwork</pre>
+</div></div>
+
+<h2><a name="BuildingXWork-Respository%28SVN%29"></a>Respository (SVN)</h2>
+
+<p>Use <a href="http://subversion.tigris.org/" title="Visit page outside Confluence">Subversion</a> to checkout the source code.</p>
+<div class="code"><div class="codeContent">
+<pre class="code-java">svn --username xxx --password xxxx checkout https:<span class="code-comment">//svn.opensymphony.com/svn/xwork/trunk ./xwork</span></pre>
+</div></div>
+<p>or without username and password </p>
+<div class="code"><div class="codeContent">
+<pre class="code-java">svn checkout https:<span class="code-comment">//svn.opensymphony.com/svn/xwork/trunk ./xwork</span></pre>
+</div></div>
+
+<h2><a name="BuildingXWork-BuildingXWork2usingMaven2"></a>Building XWork2 using Maven2</h2>
+<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="./icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td>
+<p> Building XWork2 requires JDK 1.5 (Tiger)</p></td></tr></table>
+
+<p>To build XWork2 one will need Maven2 which could be obtained <a href="http://maven.apache.org/download.html" title="Visit page outside Confluence">here</a>. More information about Maven2 could be obtained <a href="http://maven.apache.org" title="Visit page outside Confluence">here</a>.</p>
+
+<p>To generate a packaged jar file, run</p>
+<div class="code"><div class="codeContent">
+<pre class="code-java">mvn clean <span class="code-keyword">package</span></pre>
+</div></div>
+<p>This will do some clean up, compile (both the core and tests) and the core as a jar file under /target directory</p>
+
+<p>To install it in one's local repository simply run, </p>
+<div class="code"><div class="codeContent">
+<pre class="code-java">mvn clean install</pre>
+</div></div> 
+
+<h2><a name="BuildingXWork-BuildingXWork2forJava1.4"></a>Building XWork2 for Java 1.4</h2>
+<p>To build a Java 1.4 compliant version of the jars, we use retroweaver to translate the classes.</p>
+<table cellpadding='5' width='85%' cellspacing='8px' class='infoMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="./icons/emoticons/information.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">You need to have a Java 1.4 VM installed</b><br />
+<p>On Windows/Linux/Solaris point the java14.jar property to tools.jar</p></td></tr></table>
+
+<div class="code"><div class="codeHeader"><b>OS X Sample</b></div><div class="codeContent">
+<pre class="code-java">mvn clean install -Pj4 -Djava14.jar=$JAVA14_HOME/../Classes/classes.jar</pre>
+</div></div>
+
+
+                    			    </td>
+		    </tr>
+	    </table>
+    </body>
+</html>

docs/wikidocs/Colophon.html

+<html>
+    <head>
+        <title>XWork - 
+        Colophon
+         </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 XWork2 documentation is <a href="http://wiki.opensymphony.com/" title="Visit page outside Confluence">maintained online</a> and posted to the <a href="http://www.opensymphony.com/xwork/documentation.action" title="Visit page outside Confluence">OpenSymphony web site</a> on a regular basis. A snapshot of the documentation is bundled with each distribution, so that people are able to refer to the documentation for that distribution.</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="./icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td>The online version represents the latest development version ("nightly build") and may document features <b>not</b> available in your release. See the documentation bundled with each distribution for the best information about the features available in that distribution.</td></tr></table>
+
+<p>The HTML version of the documentation is maintained using the <a href="http://could.it/autoexport/" title="Visit page outside Confluence">AutoExport</a> plugin. (JAR annexed.)</p>
+
+<p>The documentation "single sources" code segments using the <a href="https://opensymphony.dev.java.net/source/browse/opensymphony/wiki/snippet/" title="Visit page outside Confluence">Snippet</a> macro. (JAR annexed.) For more about using snippets, see the <a href="Documentation Style Guide.html#DocumentationStyleGuide-Singlesourcingwithsnippets" title="Single sourcing with snippets on Documentation Style Guide">Documentation Style Guide</a>.</p>
+
+
+                    			    </td>
+		    </tr>
+	    </table>
+    </body>
+</html>

docs/wikidocs/Configuring XWork in xwork.xml.html

+<html>
+    <head>
+        <title>XWork - 
+        Configuring XWork in xwork.xml
+         </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="ConfiguringXWorkinxwork.xml-Overview"></a>Overview</h1>
+
+<p>All action configuration is done from within xwork.xml. <br/>
+In this section we discuss the various elements that make up the action configuration, such as actions, interceptors, results, and package.</p>
+
+<ol>
+	<li><a href="Package Configuration.html" title="Package Configuration">Package Configuration</a></li>
+	<li><a href="Namespace Configuration.html" title="Namespace Configuration">Namespace Configuration</a></li>
+	<li><a href="Include configuration.html" title="Include configuration">Include configuration</a></li>
+	<li><a href="Action configuration.html" title="Action configuration">Action configuration</a></li>
+	<li><a href="Result Configuration.html" title="Result Configuration">Result Configuration</a></li>
+	<li><a href="Interceptor Configuration.html" title="Interceptor Configuration">Interceptor Configuration</a></li>
+</ol>
+
+
+
+                    			    </td>
+		    </tr>
+	    </table>
+    </body>
+</html>

docs/wikidocs/Conversion Annotation.html

+<html>
+    <head>
+        <title>XWork - 
+        Conversion 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">
+				    <p><p/>A marker annotation for type conversions at Type level.</p>
+
+<h2><a name="ConversionAnnotation-Usage"></a>Usage</h2>
+
+<p><p/>The Conversion annotation must be applied at Type level.</p>
+
+<h2><a name="ConversionAnnotation-Parameters"></a>Parameters</h2>
+
+<p><table>
+<thead>
+<tr>
+<th>Parameter</th>
+<th>Required</th>
+<th>Default</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>conversion</td>
+<td>no</td>
+<td>&nbsp;</td>
+<td>used for Type Conversions applied at Type level.</td>
+</tr>
+</tbody>
+</table></p>
+
+<h2><a name="ConversionAnnotation-Examples"></a>Examples</h2>
+
+<div class="code"><div class="codeContent">
+<pre class="code-java">@Conversion()
+<span class="code-keyword">public</span> class ConversionAction <span class="code-keyword">implements</span> Action {
+}</pre>
+</div></div>
+
+
+                    			    </td>
+		    </tr>
+	    </table>
+    </body>
+</html>

docs/wikidocs/ConversionErrorFieldValidator Annotation.html

+<html>
+    <head>
+        <title>XWork - 
+        ConversionErrorFieldValidator 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">
+				    <p>This validator checks if there are any conversion errors for a field and applies them if they exist.
+See <a href="http://wiki.opensymphony.com/display/XW/Type+Conversion+Error+Handling">Type Conversion Error Handling</a> for details.</p>
+
+<h2><a name="ConversionErrorFieldValidatorAnnotation-Usage"></a>Usage</h2>
+
+<p><p/>The ConversionErrorFieldValidator annotation must be applied at method level.</p>
+
+<h2><a name="ConversionErrorFieldValidatorAnnotation-Parameters"></a>Parameters</h2>
+
+<p><table class='confluenceTable'>
+<tr>
+<th class='confluenceTh'> Parameter </th>
+<th class='confluenceTh'> Required </th>
+<th class='confluenceTh'> Default </th>
+<th class='confluenceTh'> Notes </th>
+</tr>
+<tr>
+<td class='confluenceTd'>message</td>
+<td class='confluenceTd'>yes</td>
+<td class='confluenceTd'>&nbsp;</td>
+<td class='confluenceTd'>field error message</td>
+</tr>
+<tr>
+<td class='confluenceTd'>key</td>
+<td class='confluenceTd'>no</td>
+<td class='confluenceTd'>&nbsp;</td>
+<td class='confluenceTd'>i18n key from language specific properties file.</td>
+</tr>
+<tr>
+<td class='confluenceTd'>fieldName</td>
+<td class='confluenceTd'>no</td>
+<td class='confluenceTd'>&nbsp;</td>
+<td class='confluenceTd'>&nbsp;</td>
+</tr>
+<tr>
+<td class='confluenceTd'>shortCircuit</td>
+<td class='confluenceTd'>no</td>
+<td class='confluenceTd'>false</td>
+<td class='confluenceTd'>If this validator should be used as shortCircuit.</td>
+</tr>
+<tr>
+<td class='confluenceTd'>type</td>
+<td class='confluenceTd'>yes</td>
+<td class='confluenceTd'>ValidatorType.FIELD</td>
+<td class='confluenceTd'>Enum value from ValidatorType. Either FIELD or SIMPLE can be used here.</td>
+</tr>
+</table></p>
+
+<h2><a name="ConversionErrorFieldValidatorAnnotation-Examples"></a>Examples</h2>
+
+<div class="code"><div class="codeContent">
+<pre class="code-java">@ConversionErrorFieldValidator(message = <span class="code-quote">"Default message"</span>, key = <span class="code-quote">"i18n.key"</span>, shortCircuit = <span class="code-keyword">true</span>)</pre>
+</div></div>
+
+
+                    			    </td>
+		    </tr>
+	    </table>
+    </body>
+</html>

docs/wikidocs/CreateIfNull Annotation.html

+<html>
+    <head>
+        <title>XWork - 
+        CreateIfNull 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">
+				    <p><p/>Sets the CreateIfNull for type conversion.</p>
+
+<h2><a name="CreateIfNullAnnotation-Usage"></a>Usage</h2>
+
+<p><p/>The CreateIfNull annotation must be applied at field level.</p>
+
+<h2><a name="CreateIfNullAnnotation-Parameters"></a>Parameters</h2>
+
+<p><table>
+<thead>
+<tr>
+<th>Parameter</th>
+<th>Required</th>
+<th>Default</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>value</td>
+<td>no</td>
+<td>false</td>
+<td>The CreateIfNull property value.</td>
+</tr>
+</tbody>
+</table></p>
+
+<h2><a name="CreateIfNullAnnotation-Examples"></a>Examples</h2>
+
+<div class="code"><div class="codeContent">
+<pre class="code-java">@CreateIfNull( value = <span class="code-keyword">true</span> )
+<span class="code-keyword">private</span> List&lt;User&gt; users;</pre>
+</div></div>
+
+                    			    </td>
+		    </tr>
+	    </table>
+    </body>
+</html>

docs/wikidocs/Creating a distribution.html

+<html>
+    <head>
+        <title>XWork - 
+        Creating a distribution
+         </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">
+				    <h2><a name="Creatingadistribution-Updatethedocs"></a>Update the docs</h2>
+<p>Export the wiki docs from Confluence <tt><a href="http://wiki.opensymphony.com/display/XW" title="Visit page outside Confluence">http://wiki.opensymphony.com/display/XW</a></tt></p>
+
+<table class='confluenceTable'><tbody>
+<tr>
+<th class='confluenceTh'>1</th>
+<td class='confluenceTd'> Add a press release page for the new release </td>
+</tr>
+<tr>
+<th class='confluenceTh'>2</th>
+<td class='confluenceTd'> Click on browse Space → Advanced Tab → Export Space </td>
+</tr>
+<tr>
+<th class='confluenceTh'>3</th>
+<td class='confluenceTd'> Check OFF everything that isn't under XWork2, except for the path to Documentation (ie: XWork) </td>
+</tr>
+<tr>
+<th class='confluenceTh'>4</th>
+<td class='confluenceTd'> Uncheck include comments </td>
+</tr>
+<tr>
+<th class='confluenceTh'>5</th>
+<td class='confluenceTd'> Open to disable the refresh buttons for the export of wiki pages <tt><a href="http://wiki.opensymphony.com/plugins/snippet/toggle.action" title="Visit page outside Confluence">http://wiki.opensymphony.com/plugins/snippet/toggle.action</a></tt> </td>
+</tr>
+<tr>
+<th class='confluenceTh'>6</th>
+<td class='confluenceTd'> Export both HTML and PDF (will take a while...) </td>
+</tr>
+<tr>
+<th class='confluenceTh'>7</th>
+<td class='confluenceTd'> Open to enable the refresh buttons for the SNIPPET macro <tt><a href="http://wiki.opensymphony.com/plugins/snippet/toggle.action" title="Visit page outside Confluence">http://wiki.opensymphony.com/plugins/snippet/toggle.action</a></tt> </td>
+</tr>
+<tr>
+<th class='confluenceTh'>8</th>
+<td class='confluenceTd'> Delete everything in docs/wikidocs, remove from SVN and commit </td>
+</tr>
+<tr>
+<th class='confluenceTh'>9</th>
+<td class='confluenceTd'> Add everything back in, when the HTML stuff is one </td>
+</tr>
+<tr>
+<th class='confluenceTh'>10</th>
+<td class='confluenceTd'> Add the PDF to docs/wikidocs/docs.pdf </td>
+</tr>
+<tr>
+<th class='confluenceTh'>11</th>
+<td class='confluenceTd'> Commit changes to SVN </td>
+</tr>
+</tbody></table>
+
+<h2><a name="Creatingadistribution-Buildthereleasebundleswithmaven"></a>Build the release bundles with maven</h2>
+
+<table class='confluenceTable'><tbody>
+<tr>
+<th class='confluenceTh'>1</th>
+<td class='confluenceTd'> Update the POMs to remove "-SNAPSHOT" from the version  </td>
+</tr>
+<tr>
+<th class='confluenceTh'>2</th>
+<td class='confluenceTd'> Commit the POM changes </td>
+</tr>
+<tr>
+<th class='confluenceTh'>3</th>
+<td class='confluenceTd'> Tag the release by making a SVN copy of the head or designated revision </td>
+</tr>
+<tr>
+<td class='confluenceTd'>&nbsp;</td>
+<td class='confluenceTd'> <div class="code"><div class="codeContent">
+<pre class="code-java">svn copy -r ###### 
+  https:<span class="code-comment">//svn.opensymphony.com/svn/xwork/trunk/ 
+</span>  https:<span class="code-comment">//svn.opensymphony.com/svn/xwork/tags/xwork_#_#_# 
+</span>  -m <span class="code-quote">"Tag r###### as XWork #.#.#"</span></pre>
+</div></div> </td>
+</tr>
+<tr>
+<th class='confluenceTh'>4</th>
+<td class='confluenceTd'> Assemble the release </td>
+</tr>
+<tr>
+<td class='confluenceTd'>&nbsp;</td>
+<td class='confluenceTd'> <div class="code"><div class="codeHeader"><b>OS X Sample</b></div><div class="codeContent">
+<pre class="code-java">mvn clean install site assembly:assembly -Pj4 -Djava14.jar=/<span class="code-object">System</span>/Library/Frameworks/JavaVM.framework/Versions/1.4.2/Home/../Classes/classes.jar</pre>
+</div></div> </td>
+</tr>
+<tr>
+<th class='confluenceTh'>5</th>
+<td class='confluenceTd'> Upload the release bundles to <a href="https://xwork.dev.java.net/servlets/ProjectDocumentList" title="Visit page outside Confluence">https://xwork.dev.java.net/servlets/ProjectDocumentList</a> </td>
+</tr>
+<tr>
+<td class='confluenceTd'>&nbsp;</td>
+<td class='confluenceTd'> Create a new folder for the release as Version #.#.# </td>
+</tr>
+<tr>
+<td class='confluenceTd'>&nbsp;</td>
+<td class='confluenceTd'> Upload the file bundles and add file comments </td>
+</tr>
+<tr>
+<th class='confluenceTh'>6</th>
+<td class='confluenceTd'> Deploy the artifacts to our Maven repository </td>
+</tr>
+<tr>
+<td class='confluenceTd'>&nbsp;</td>
+<td class='confluenceTd'> <table cellpadding='5' width='85%' cellspacing='8px' class='infoMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="./icons/emoticons/information.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td>You need shell access for this step!</td></tr></table> </td>
+</tr>
+<tr>
+<td class='confluenceTd'>&nbsp;</td>
+<td class='confluenceTd'> <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="./icons/emoticons/forbidden.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Warning</b><br />Don't forget to upload the pom.xml as well!</td></tr></table> </td>
+</tr>
+<tr>
+<td class='confluenceTd'>&nbsp;</td>
+<td class='confluenceTd'> Prune any obsolete snapshots from <tt>opensymphony.com://opt/repository/ibiblio.org/opensymphony/jars/</tt> </td>
+</tr>
+<tr>
+<th class='confluenceTh'>7</th>
+<td class='confluenceTd'> Update the POMs to next version number and add the "-SNAPSHOT" suffix </td>
+</tr>
+<tr>
+<th class='confluenceTh'>8</th>
+<td class='confluenceTd'> Commit the POM changes </td>
+</tr>
+<tr>
+<th class='confluenceTh'>9</th>
+<td class='confluenceTd'> Deploy the new snapshot </td>
+</tr>
+<tr>
+<td class='confluenceTd'>&nbsp;</td>
+<td class='confluenceTd'> <div class="code"><div class="codeContent">
+<pre class="code-java">mvn -N install</pre>
+</div></div> </td>
+</tr>
+<tr>
+<th class='confluenceTh'>10</th>
+<td class='confluenceTd'> Add the next version to our issue tracker for scheduling new features and fixes </td>
+</tr>
+<tr>
+<th class='confluenceTh'>11</th>
+<td class='confluenceTd'> Update docs/meta.xml with the newly added download bundles </td>
+</tr>
+<tr>
+<th class='confluenceTh'>12</th>
+<td class='confluenceTd'> Clear the project cache so that he latest meta.xml information is used <tt>www.opensymphony.com/clearProjectCache.jsp</tt> </td>
+</tr>
+<tr>
+<th class='confluenceTh'>13</th>
+<td class='confluenceTd'> Verify the download link </td>
+</tr>
+<tr>
+<th class='confluenceTh'>14</th>
+<td class='confluenceTd'> Announce the release <tt><a href="http://blogs.opensymphony.com" title="Visit page outside Confluence">http://blogs.opensymphony.com</a></tt> </td>
+</tr>
+</tbody></table>
+
+                    			    </td>
+		    </tr>
+	    </table>
+    </body>
+</html>

docs/wikidocs/CustomValidator Annotation.html

+<html>
+    <head>
+        <title>XWork - 
+        CustomValidator 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">
+				    <p>This annotation can be used for custom validators. Use the ValidationParameter annotation to supply additional params.</p>
+
+<h2><a name="CustomValidatorAnnotation-Usage"></a>Usage</h2>
+
+<p><p/>The annotation must be applied at method or type level.</p>
+
+<h2><a name="CustomValidatorAnnotation-Parameters"></a>Parameters</h2>
+
+<p><table class='confluenceTable'>
+<tr>
+<th class='confluenceTh'> Parameter </th>
+<th class='confluenceTh'> Required </th>
+<th class='confluenceTh'> Default </th>
+<th class='confluenceTh'> Notes </th>
+</tr>
+<tr>
+<td class='confluenceTd'>message</td>
+<td class='confluenceTd'>yes</td>
+<td class='confluenceTd'>&nbsp;</td>
+<td class='confluenceTd'>field error message</td>
+</tr>
+<tr>
+<td class='confluenceTd'>key</td>
+<td class='confluenceTd'>no</td>
+<td class='confluenceTd'>&nbsp;</td>
+<td class='confluenceTd'>i18n key from language specific properties file.</td>
+</tr>
+<tr>
+<td class='confluenceTd'>fieldName</td>
+<td class='confluenceTd'>no</td>
+<td class='confluenceTd'>&nbsp;</td>
+<td class='confluenceTd'>&nbsp;</td>
+</tr>
+<tr>
+<td class='confluenceTd'>shortCircuit</td>
+<td class='confluenceTd'>no</td>
+<td class='confluenceTd'>false</td>
+<td class='confluenceTd'>If this validator should be used as shortCircuit.</td>
+</tr>
+<tr>
+<td class='confluenceTd'>type</td>
+<td class='confluenceTd'>yes</td>
+<td class='confluenceTd'>ValidatorType.FIELD</td>
+<td class='confluenceTd'>Enum value from ValidatorType. Either FIELD or SIMPLE can be used here.</td>
+</tr>
+</table></p>
+
+<h2><a name="CustomValidatorAnnotation-Examples"></a>Examples</h2>
+
+<div class="code"><div class="codeContent">
+<pre class="code-java">@CustomValidator(type =<span class="code-quote">"customValidatorName"</span>, fieldName = <span class="code-quote">"myField"</span>)</pre>
+</div></div>
+
+<h2><a name="CustomValidatorAnnotation-AddingParameters"></a>Adding Parameters</h2>
+
+<p>Use the <a href="ValidationParameter annotation.html" title="ValidationParameter annotation">ValidationParameter annotation</a> to add custom parameter values.</p>
+
+
+                    			    </td>
+		    </tr>
+	    </table>
+    </body>
+</html>

docs/wikidocs/DateRangeFieldValidator Annotation.html

+<html>
+    <head>
+        <title>XWork - 
+        DateRangeFieldValidator 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">
+				    <p>This validator checks that a date field has a value within a specified range.</p>
+
+<h2><a name="DateRangeFieldValidatorAnnotation-Usage"></a>Usage</h2>
+
+<p><p/>The annotation must be applied at method level.</p>
+
+<h2><a name="DateRangeFieldValidatorAnnotation-Parameters"></a>Parameters</h2>
+
+<p><table class='confluenceTable'>
+<tr>
+<th class='confluenceTh'> Parameter </th>
+<th class='confluenceTh'> Required </th>
+<th class='confluenceTh'> Default </th>
+<th class='confluenceTh'> Notes </th>
+</tr>
+<tr>
+<td class='confluenceTd'>message</td>
+<td class='confluenceTd'>yes</td>
+<td class='confluenceTd'>&nbsp;</td>
+<td class='confluenceTd'>field error message</td>
+</tr>
+<tr>
+<td class='confluenceTd'>key</td>
+<td class='confluenceTd'>no</td>
+<td class='confluenceTd'>&nbsp;</td>
+<td class='confluenceTd'>i18n key from language specific properties file.</td>
+</tr>
+<tr>
+<td class='confluenceTd'>fieldName</td>
+<td class='confluenceTd'>no</td>
+<td class='confluenceTd'>&nbsp;</td>
+<td class='confluenceTd'>&nbsp;</td>
+</tr>
+<tr>
+<td class='confluenceTd'>shortCircuit</td>
+<td class='confluenceTd'>no</td>
+<td class='confluenceTd'>false</td>
+<td class='confluenceTd'>If this validator should be used as shortCircuit.</td>
+</tr>
+<tr>
+<td class='confluenceTd'>type</td>
+<td class='confluenceTd'>yes</td>
+<td class='confluenceTd'>ValidatorType.FIELD</td>
+<td class='confluenceTd'>Enum value from ValidatorType. Either FIELD or SIMPLE can be used here.</td>
+</tr>
+<tr>
+<td class='confluenceTd'> min </td>
+<td class='confluenceTd'> no </td>
+<td class='confluenceTd'>&nbsp;</td>
+<td class='confluenceTd'> Date property.  The minimum the date must be. </td>
+</tr>
+<tr>
+<td class='confluenceTd'> max </td>
+<td class='confluenceTd'> no </td>
+<td class='confluenceTd'>&nbsp;</td>
+<td class='confluenceTd'> Date property.  The maximum date can be. </td>
+</tr>
+</table></p>
+
+<p><p>If neither <em>min</em> nor <em>max</em> is set, nothing will be done.</p></p>
+
+<h2><a name="DateRangeFieldValidatorAnnotation-Examples"></a>Examples</h2>
+
+<div class="code"><div class="codeContent">
+<pre class="code-java">@DateRangeFieldValidator(message = <span class="code-quote">"Default message"</span>, key = <span class="code-quote">"i18n.key"</span>, shortCircuit = <span class="code-keyword">true</span>, min = <span class="code-quote">"2005/01/01"</span>, max = <span class="code-quote">"2005/12/31"</span>)</pre>
+</div></div>
+
+
+                    			    </td>
+		    </tr>
+	    </table>
+    </body>
+</html>

docs/wikidocs/Documentation Style Guide.html

+<html>
+    <head>
+        <title>XWork - 
+        Documentation Style Guide
+         </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>It's well-known that a consistent user interface is easier to use. Consistency helps users focus on the task rather than the user interface. Likewise, a consistent documentation style helps users focus on the information, rather than the formatting.</p>
+
+<p>A related goal is to design the documentation so that it is easy to maintain, so that it tends to remain internally consistent with the framework itself.</p>
+
+<h2><a name="DocumentationStyleGuide-Doitnow.Doitonce.Doitwell."></a>Do it now. Do it once. Do it well.</h2>
+
+<p>Overall, there are three goals for the documentation system.</p>
+<ul>
+	<li>Say it all</li>
+	<li>Say it once</li>
+	<li>Say it well</li>
+</ul>
+
+
+<p>First, we want the documentation to be both complete and concise. This is job one&#33; The documentation should also be a quick but practical introduction to the framework, so newcomers can get started as easily as possible. To keep people coming back, the documenation should also be a repository of the tips and tricks we use in our own applications, so that people can find it here instead of asking over and over again on the list.  </p>
+
+<p>Second, the documentation should be easy to maintain. Ideally, we should cover the detail of each topic once, and draw as much detail from the source code and examples as possible (using the <a href="#DocumentationStyleGuide-Singlesourcingwithsnippets" title="Single sourcing with snippets on Documentation Style Guide">snippet macro</a>).</p>
+
+<p>Third, the documentation should be text-book quality; if not in the first draft, then in the next. Don't hesitate to hack in a new page. Better that we have the page than we don't. (See Job One&#33;) But, as time allows, we should try to make each page the best that it can be. A great many people access the documentation, and it's worth the effort to make the "documentation experience" productive and enjoyable.</p>
+
+<h2><a name="DocumentationStyleGuide-Capitalizationofcommonterms"></a>Capitalization of common terms</h2>
+
+<ul>
+	<li>Java</li>
+	<li>Javadoc</li>
+	<li>HTML</li>
+	<li>XML</li>
+</ul>
+
+
+<h2><a name="DocumentationStyleGuide-GeneralPunctuationandGrammar"></a>General Punctuation and Grammar</h2>
+
+<p>Good online resources for punctuation, grammar, and text style include</p>
+<ul>
+	<li><a href="http://lilt.ilstu.edu/golson/punctuation/" title="Visit page outside Confluence">Punctuation Made Simple</a></li>
+	<li><a href="http://www.wwu.edu/depts/journalism/207labmanUL.htm" title="Visit page outside Confluence">Associated Press Style Guide Essentials</a></li>
+	<li><a href="http://en.wikipedia.org/wiki/Wikipedia:Manual_of_Style" title="Visit page outside Confluence">Wikipedia Manual of Style</a></li>
+</ul>
+
+
+<p>In print, two excellent (and inexpensive&#33;) resources are</p>
+<ul>
+	<li><a href="http://www.amazon.com/exec/obidos/tg/detail/-/020530902X/apachesoftwar-20/" title="Visit page outside Confluence">The Elements of Style</a></li>
+	<li><a href="http://www.amazon.com/exec/obidos/tg/detail/-/0465004881/apachesoftwar-20/" title="Visit page outside Confluence">Associated Press Stylebook</a></li>
+</ul>
+
+
+<p>Also excellent, but more expensive: </p>
+<ul>
+	<li><a href="http://www.chicagomanualofstyle.org/" title="Visit page outside Confluence">Chicago Manual of Style</a></li>
+</ul>
+
+
+<h2><a name="DocumentationStyleGuide-QuickTips"></a>Quick Tips</h2>
+
+<ul>
+	<li>Use as few words as possible. Instead of "but there are some quirks about it" try "but there are quirks".</li>
+	<li>If a list of items includes both a term and an explanation, consider using a table instead of bullets.</li>
+	<li>Avoid using "This" by itself. Instead of "This lets us" try "This strategy lets us".
+	<ul>
+		<li>Ask yourself: "This what?"</li>
+	</ul>
+	</li>
+	<li>References to other wiki pages can be unqualified. Instead of "See WW:Documentation Style Guide page", try "See WW:Documentation Style Guide."</li>
+</ul>
+
+
+<h2><a name="DocumentationStyleGuide-Don%27tbesmurfy%5C%21"></a>Don't be smurfy&#33;</h2>
+
+<p>A lot of API members use the term "action". We have</p>
+<ul>
+	<li>action extensions on pages,</li>
+	<li>action attributes in forms,</li>
+	<li>action elements in configuration files, and</li>
+	<li>Action Java classes, some of which may implement the</li>
+	<li>Action interface.</li>
+</ul>
+
+
+<p>Here are some terms that can be used to help clarify which action is which.</p>
+<ul>
+	<li>Use "the framework" or "XWork" to refer to the codebase as a whole, including any frameworks we use internally, like OGNL.</li>
+	<li>Use "Action class" or "action handler" to refer to the Java class incorporated by the action element.</li>
+	<li>Use "action mapping" to refer to the object created by the action element.</li>
+</ul>
+
+
+<h2><a name="DocumentationStyleGuide-PageSaveComment"></a>Page Save Comment</h2>
+
+<p>Try to include a brief description of a change when saving a page. The comments are included in the page's history. The comments are also included on the daily change report. In a group environment, it's important to help each other follow along.</p>
+
+<h2><a name="DocumentationStyleGuide-ParentPages"></a>Parent Pages </h2>
+
+<p>Use the Parent Page feature to create a hierarchy of pages. The parent pages are reflected in the "bread crumb" menu. If propertly used, parent pages can help browsers "visualize" the documenation as an outline. </p>
+
+<p>The root of the documentation is the "Home" page, which is also the "Welcome" page. The documnentation is ordered into three main areas: Tutorials, FAQs, and Guides. Each area has a contents page, whose parent is Home. Other pages within each section can also serve as parents, to help organize the documentation into a coherent outline. </p>
+
+<h2><a name="DocumentationStyleGuide-Labels"></a>Labels </h2>
+
+<p>Pages can be cross-indexed with the Label feature. Labels are not be used much yet, except for internal authoring. </p>
+
+<table class='confluenceTable'><tbody>
+<tr>
+<th class='confluenceTh'> FIXME </th>
+<td class='confluenceTd'> A page that mentions a problem in the distribution that we intend to fix. Review these pages before tagging a distribution to see if the issue has been resolved. </td>
+</tr>
+<tr>
+<th class='confluenceTh'> TODO </th>
+<td class='confluenceTd'> A page that is incomplete. Try to complete these pages before tagging a distribution </td>
+</tr>
+</tbody></table>
+
+<h2><a name="DocumentationStyleGuide-ShortcutsLinks"></a>Shortcuts Links</h2>
+
+<p>The Shortcut Link feature should be used for any external reference that may be used elsewhere. Shortcuts being used include </p>
+
+<table class='confluenceTable'><tbody>
+<tr>
+<th class='confluenceTh'>jira</th>
+<td class='confluenceTd'> A ticket in our issue tracker </td>
+</tr>
+<tr>
+<th class='confluenceTh'>primer</th>
+<td class='confluenceTd'> A bookmark in our Key Technologies Primer </td>
+</tr>
+<tr>
+<th class='confluenceTh'>xwork/api</th>
+<td class='confluenceTd'> A class in the XWork Javadocs </td>
+</tr>
+<tr>
+<th class='confluenceTh'>java/api</th>
+<td class='confluenceTd'> A class in the Java Javadocs </td>
+</tr>
+<tr>
+<th class='confluenceTh'>wiki/help</th>
+<td class='confluenceTd'> A topic the Confluence help system </td>
+</tr>
+</tbody></table>
+
+<p>Please add new shortcuts as needed.</p>
+
+<h2><a name="DocumentationStyleGuide-AboutHeadings"></a>About Headings</h2>
+
+<p><img class="emoticon" src="./icons/emoticons/information.gif" height="16" width="16" align="absmiddle" alt="" border="0"/> This section refers to: [Notation Guide &gt;&gt; Headings|section=headings@wiki].</p>
+
+<h3><a name="DocumentationStyleGuide-Abouth1"></a>About h1</h3>
+
+<p>Don't use <tt>h1.</tt> at the top of each page. The page title serves as the "top level header". This is not as obvious online, but it is very apparent when the documentation is exported to HTML or PDF.</p>
+
+<p>Try to start each page with some introductory text, to separate the page title from the rest of content.</p>
+
+<p>Likewise, try to have some content between all page headings. Avoid placing headings one after the other.</p>
+
+<h3><a name="DocumentationStyleGuide-Documentsections"></a>Document sections</h3>
+
+<p>Headings can help you divide your document in sections, subsections, sub-subsections and so forth.</p>
+
+<h4><a name="DocumentationStyleGuide-Advantages"></a>Advantages</h4>
+
+<p>Your document becomes more organized.</p>
+
+<h4><a name="DocumentationStyleGuide-Disadvantages"></a>Disadvantages</h4>
+
+<p>Too many headings can fragment the text.</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="./icons/emoticons/forbidden.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Here we go again!</b><br />
+<p>This segment an example of overusing headings. This whole "Headings" section has so few paragraphs that it really should have been written in just one section. The "advantages" and "disadvantages" would be just as easy to render as a table.</p></td></tr></table>
+
+<h3><a name="DocumentationStyleGuide-Headingscapitalization"></a>Headings capitalization</h3>
+
+<p>Try to use intial capitals for <tt>h1</tt> and <tt>h2</tt> headers.</p>
+
+<p>For <tt>h3</tt> and smaller headings, try to capitalize only the first word, and any proper nouns.</p>
+
+<p>By using different capilazation sytles, we emphasize the importance of bigger headings.</p>
+
+<h3><a name="DocumentationStyleGuide-Avoidskippingheaders"></a>Avoid skipping headers</h3>
+
+<p>The headers form an outline for the page. When writing term papers, it is not a good practice to skip outline levels. When writing hypertext, it is not a good practice to skip heading levels either. Try not to skip from a <tt>h2</tt> to a <tt>h4</tt>.</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="./icons/emoticons/check.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Too many headings?</b><br />
+<p>If you find yourself writting too many <tt>h2</tt> headings in a single page, consider breaking the page into child pages.</p></td></tr></table>
+
+<h2><a name="DocumentationStyleGuide-MoreonTextEffects"></a>More on Text Effects</h2>
+
+<p><img class="emoticon" src="./icons/emoticons/star_yellow.gif" height="16" width="16" align="absmiddle" alt="" border="0"/> This section refers to: <a href="http://wiki.opensymphony.com/renderer/notationhelp.action?section=texteffects" title="Visit page outside Confluence">Notation Guide &gt;&gt; Text Effects</a>.</p>
+
+<p>Text effects like <b>strong</b>, <em>emphasis</em>, and <ins>inserted</ins> can be used in the usual way to denote important parts of a sentence.</p>
+
+<p><tt>Monospaced</tt> should be used to files, tags, and methods, like <tt>xwork.xml</tt>, <tt>&lt;xmltag /&gt;</tt>, and <tt>execute</tt>. Class and Interface names may be left in normal face, like Action and Interceptor.</p>
+
+<p>A panel should be preferred to a block quote.</p>
+
+<p>The color fonts should be avoided or used only with great care. Some people have difficulty seeing some colors, and the colors may not be apparent if the page is printed.</p>
+
+<h2><a name="DocumentationStyleGuide-TextBreaks"></a>Text Breaks</h2>
+
+<p><img class="emoticon" src="./icons/emoticons/star_yellow.gif" height="16" width="16" align="absmiddle" alt="" border="0"/> This section refers to: <a href="http://wiki.opensymphony.com/renderer/notationhelp.action?section=breaks" title="Visit page outside Confluence">Notation Guide &gt;&gt; Text Breaks</a>.</p>
+
+<p>Text breaks should not be used to format blocks on the screen. If there is an issue with the way paragraphs or headings are being rendered, we should customize the stylesheet.</p>
+
+<h2><a name="DocumentationStyleGuide-Lists"></a>Lists</h2>
+
+<p><img class="emoticon" src="./icons/emoticons/star_yellow.gif" height="16" width="16" align="absmiddle" alt="" border="0"/> This section refers to: <a href="http://wiki.opensymphony.com/renderer/notationhelp.action?section=lists" title="Visit page outside Confluence">Notation Guide &gt;&gt; Lists</a>.</p>
+
+<p>Unordered lists should be created only with the <tt>&#42;</tt> (star) notation.</p>
+
+<p>Ordered list should be used when numbering the items is important. Otherwise, prefer unordered lists.</p>
+<ul>
+	<li>This is an unordered list in star notation;</li>
+	<li>Items can have sub-items
+	<ul>
+		<li>That can have sub-items
+		<ul>
+			<li>That can have sub-items ...
+			<ul>
+				<li>What is the limit?</li>
+			</ul>
+			</li>
+		</ul>
+		</li>
+	</ul>
+	</li>
+	<li>Mixing ordered and unordered lists is possible:
+	<ol>
+		<li>One;</li>
+		<li>Two;</li>
+		<li>Three.</li>
+	</ol>
+	</li>
+</ul>
+
+
+<h2><a name="DocumentationStyleGuide-Images"></a>Images</h2>
+
+<p><img class="emoticon" src="./icons/emoticons/star_yellow.gif" height="16" width="16" align="absmiddle" alt="" border="0"/> This section refers to: <a href="http://wiki.opensymphony.com/renderer/notationhelp.action?section=images" title="Visit page outside Confluence">Notation Guide &gt;&gt; Images</a> and <a href="http://wiki.opensymphony.com/renderer/notationhelp.action?section=miscellaneous" title="Visit page outside Confluence">Notation Guide &gt;&gt; Misc</a>.</p>
+
+<p>Avoid using external images for bullets or icons. Prefer the equivalents provided with Confluence.</p>
+
+<p>Images can be inclued by URL or annexing the binary to the page. Prefer annexing when possible, since URLs are subject to change.</p>
+
+<p>Always observe copyright issues. Do not annex images unless it an orginal or public domain work, or the author has donated the image to the foundation.</p>
+
+<p>Example: <span class="error">Cannot resolve external resource into attachment.</span></p>
+
+<h2><a name="DocumentationStyleGuide-Icons"></a>Icons</h2>
+
+<p>Use <img class="emoticon" src="./icons/emoticons/information.gif" height="16" width="16" align="absmiddle" alt="" border="0"/>, <img class="emoticon" src="./icons/emoticons/help_16.gif" height="16" width="16" align="absmiddle" alt="" border="0"/>, <img class="emoticon" src="./icons/emoticons/warning.gif" height="16" width="16" align="absmiddle" alt="" border="0"/>, and <img class="emoticon" src="./icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/> to bullet important one-liners. Use <img class="emoticon" src="./icons/emoticons/lightbulb_on.gif" height="16" width="16" align="absmiddle" alt="" border="0"/> to highlight cross references.</p>
+
+<p>Used carefully, icons can make the content easier to read and understand.</p>
+
+<p>However, if icons are overused, they lose impact (and can make a page look like a ransom note).</p>
+
+<p>Casual icons like <img class="emoticon" src="./icons/emoticons/smile.gif" height="20" width="20" align="absmiddle" alt="" border="0"/> and <img class="emoticon" src="./icons/emoticons/thumbs_up.gif" height="19" width="19" align="absmiddle" alt="" border="0"/> should be used with care or avoided.</p>
+
+<h2><a name="DocumentationStyleGuide-Tables"></a>Tables</h2>
+
+<p><img class="emoticon" src="./icons/emoticons/star_yellow.gif" height="16" width="16" align="absmiddle" alt="" border="0"/> This section refers to: <a href="http://wiki.opensymphony.com/renderer/notationhelp.action?section=tables" title="Visit page outside Confluence">Notation Guide &gt;&gt; Tables</a>.</p>
+
+<p>Prefer lists for single-value entries. Prefer tables for lists with multiple columns.</p>
+
+<p>Tables are very useful when lists just don't do it. Meaning: don't write a table when a list suffices. Tables are more organized, because you can align the text in columns. Since the markup text for tables in Confluence is not easy to read, complex and big tables can be hard to maintain.</p>
+
+<table class='confluenceTable'><tbody>
+<tr>
+<th class='confluenceTh'> File </th>
+<th class='confluenceTh'> Optional </th>
+<th class='confluenceTh'> Location (relative to webapp) </th>
+<th class='confluenceTh'> Purpose </th>
+</tr>
+<tr>
+<td class='confluenceTd'> web.xml </td>
+<td class='confluenceTd'> no </td>
+<td class='confluenceTd'> /WEB-INF/ </td>
+<td class='confluenceTd'> Web deployment descriptor to include all necessary WebWork components </td>
+</tr>
+<tr>
+<td class='confluenceTd'> xwork.xml </td>
+<td class='confluenceTd'> no </td>
+<td class='confluenceTd'> /WEB-INF/classes/ </td>
+<td class='confluenceTd'> Main configuration, contains result/view types, action mappings, interceptors, and so forth </td>
+</tr>
+</tbody></table>
+
+<h2><a name="DocumentationStyleGuide-AdvancedFormatting"></a>Advanced Formatting</h2>
+
+<p><img class="emoticon" src="./icons/emoticons/star_yellow.gif" height="16" width="16" align="absmiddle" alt="" border="0"/> This section refers to: <a href="http://wiki.opensymphony.com/renderer/notationhelp.action?section=advanced" title="Visit page outside Confluence">Notation Guide &gt;&gt; Advanced Formatting</a>.</p>
+
+<p>Panels should be used as needed. Try to select the right panel for the content.</p>
+
+<p>Try to give all panels and {code} blocks meaningful titles. People scan the pages looking for likely tips and examples.</p>
+
+<p>Avoid generic titles like "Warning" or "Example". Style the headings like they were h3. or smaller.</p>
+
+<p>When a panel contains a file or a class, the panel title should refer to the filename or classname.</p>
+
+<p>Try to specify the language for {code} blocks.</p>
+<div class="code"><div class="codeHeader"><b>HelloWorld.java</b></div><div class="codeContent">
+<pre class="code-java">/** Hello World class. */
+<span class="code-keyword">public</span> class HelloWorld {
+  /** Main method. */
+  <span class="code-keyword">public</span> <span class="code-keyword">static</span> void main(<span class="code-object">String</span>[] args) {
+    <span class="code-object">System</span>.out.println(<span class="code-quote">"Hello, World!"</span>);
+  }
+}</pre>
+</div></div>
+<p><img class="emoticon" src="./icons/emoticons/check.gif" height="16" width="16" align="absmiddle" alt="" border="0"/> Try to use <a href="#DocumentationStyleGuide-Singlesourcingwithsnippets" title="Single sourcing with snippets on Documentation Style Guide">snippets</a> for code blocks whenever possible&#33;</p>
+
+<p>Avoid tabs in code blocks, use two spaces instead. Long lines should be formatted to fit in a 800x600 resolution screen, without resorting to horizontal scrolling.</p>
+
+<p>A typical example of <tt>noformat</tt> would be the command line statements to compile and run the code above.</p>
+
+<p>Either the code or noformat block can be used to represent command line windows. The terminal notation ({$}} should be used to represent a system prompt.</p>
+
+<div class="code"><div class="codeHeader"><b>Compiling and Running Hello World</b></div><div class="codeContent">
+<pre class="code-java">$ javac HelloWorld.java
+
+$ java HelloWorld
+Hello, World!</pre>
+</div></div>
+
+<h2><a name="DocumentationStyleGuide-ChangeHappens"></a>Change Happens</h2>
+
+<p>Anyone who has worked with databases knows the value of normalizing the schema. Ideally, we want to store each fact exactly once, and then use query system to retrieve that fact whereever it is needed. If we store a fact once, we only need to update it once, and we avoid inconsistencies in our data set.</p>
+
+<p>To the extent possible, we want to "normalize" our technical documentation. Like a database, all technical documentation is subject to change. When change happens, we want the documentation to be as easy to update as possible. One way to do that is to try and minimize redudency (without sacrificing ease of use).</p>
+
+<h3><a name="DocumentationStyleGuide-Singlesourcingwithsnippets"></a>Single sourcing with snippets</h3>
+
+<p>The "holy grail" of technical documentation is <a href="http://en.wikipedia.org/wiki/Single_source_publishing" title="Visit page outside Confluence">single sourcing</a>. One way we try to single-source documentation is to pull content directly from the <a href="http://en.wikipedia.org/wiki/Javadoc" title="Visit page outside Confluence">Javadocs</a> and source code into the documentation.</p>
+
+<p>Using a <b><span class="error">&#91;snippet macro&#93;</span></b>, we are able to tag portions of the Javadocs and source code for reuse. The macro fetches those snippets from the repository and merges the content into the documentation.</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="./icons/emoticons/check.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b class="strong">Use the Source!</b><br />
+<p>Before writing any new content, ask yourself if we could place the content in the repository in either one of the example applications or the Javadocs. Rather than contrive an example, can you pull a snippet from one of the applications? Rather than reiterate Javadoc, could we update the Javadoc and make it a snippet?</p></td></tr></table>
+
+<ul>
+	<li>Javadoc
+	<ul>
+		<li>{snippet:id=javadoc|javadoc=true|url=com.opensymphony.xwork2.Result}</li>
+	</ul>
+	</li>
+</ul>
+
+
+<ul>
+	<li>Coding Examples
+	<ul>
+		<li>{snippet:id=example|lang=xml|javadoc=true|url=src/java/com/opensymphony/xwork2/Result.java}</li>
+	</ul>
+	</li>
+</ul>
+
+
+<table class='confluenceTable'><tbody>
+<tr>
+<th class='confluenceTh'>&nbsp;</th>
+<th class='confluenceTh'> Snippet Attributes </th>
+</tr>
+<tr>
+<th class='confluenceTh'> id </th>
+<td class='confluenceTd'> The <em>name</em> of the snippet (<b>required</b>). </td>
+</tr>
+<tr>
+<th class='confluenceTh'> url </th>
+<td class='confluenceTd'> The URL where the snippet can be found (<b>required</b>). </td>
+</tr>
+<tr>
+<th class='confluenceTh'> lang </th>
+<td class='confluenceTd'> The language that the code block. If this snippet is simply text, don't include this parameter and the content will be printed outside of a code block. </td>
+</tr>
+<tr>
+<th class='confluenceTh'> javadoc </th>
+<td class='confluenceTd'> If true, the content is within a Javadoc block. If this is set to true, then the preceeding "&#42; " (asterisk-space) characters will be stripped before merging the content. Also, the content is assumed to be already HTML escaped and  won't be escaped again. </td>
+</tr>
+</tbody></table>
+<p>All snippets are marked off by the pattern <tt>START SNIPPET: XXX</tt> and <tt>END SNIPPET: XXX</tt> where <tt>XXX</tt> is the <tt>name</tt> of the snippet that is assigned in the <tt>id</tt> attribute of the macro. The URL is typically a location that points to the project's source control contents. |</p>
+
+<h3><a name="DocumentationStyleGuide-AboutURLs"></a>About URLs</h3>
+
+<p>As you probably noticed in the examples, there are several formats for URL patterns. A fully-qualified URL is always allowed, though that is often not practical. We've customized the macro to be a bit more intelligent with the URL attribute.</p>
+<ul>
+	<li>If the URL appears to be a class, we assume it lives in <tt>src/java</tt>, convert all the dots to slashes, and then append <tt>.java</tt> to it.</li>
+	<li>If the URL doesn't start with "http", then it is assumed to start with _<a href="https://opensymphony.dev.java.net/source/browse/*checkout*/_" title="Visit page outside Confluence">https://opensymphony.dev.java.net/source/browse/*checkout*/_</a>, as you saw in the third example.</li>
+</ul>
+
+
+<h3><a name="DocumentationStyleGuide-Aboutsnippetmarkers"></a>About snippet markers</h3>
+
+<p>When possible, all snippet markers should be in comment blocks. How they are commented depends on where the snippet is being embedded.</p>
+<div class="code"><div class="codeHeader"><b>Commenting HTML or XML snippets</b></div><div class="codeContent">
+<pre class="code-xml"><span class="code-tag"><span class="code-comment">&lt;!-- START SNIPPET: xxx --&gt;</span></span>
+...
+<span class="code-tag"><span class="code-comment">&lt;!-- END SNIPPET: xxx --&gt;</span></span></pre>
+</div></div>
+<div class="code"><div class="codeHeader"><b>Commenting snippets in Java code</b></div><div class="codeContent">
+<pre class="code-java"><span class="code-keyword">if</span> (<span class="code-keyword">true</span> != <span class="code-keyword">false</span>) {
+    <span class="code-comment">// START SNIPPET: xxx
+</span>    <span class="code-object">System</span>.out.println(<span class="code-quote">"This is some silly code!"</span>);
+    <span class="code-comment">// END SNIPPET: xxx
+</span>}</pre>
+</div></div>
+<p>If the snippet is embedded in Javadocs, use HTML comments as they won't render in the Javadocs. For XML examples in Javadocs can be tricky. (See Timer Interceptor for an example.). Javadocs want to use the <tt>&lt;pre&gt;</tt> tag, but you don't want that tag in the snipped content.</p>
+
+<p>One technique is to embed the snippet markers <em>inside</em> the <tt>&lt;pre&gt;</tt> tag.</p>
+<div class="code"><div class="codeHeader"><b>Snipping XML examples from Javadoc content</b></div><div class="codeContent">
+<pre class="code-none">* &lt;pre&gt;
+ * &lt;!-- START SNIPPET: example --&gt;
+ * &amp;lt;!-- records only the action's execution time --&amp;gt;
+ * &amp;lt;action name="someAction" class="com.examples.SomeAction"&amp;gt;
+ *     &amp;lt;interceptor-ref name="completeStack"/&amp;gt;
+ *     &amp;lt;interceptor-ref name="timer"/&amp;gt;
+ *     &amp;lt;result name="success"&amp;gt;good_result.ftl&amp;lt;/result&amp;gt;
+ * &amp;lt;/action&amp;gt;
+ * &lt;!-- END SNIPPET: example --&gt;</pre>
+</div></div>
+
+
+                    			    </td>
+		    </tr>
+	    </table>
+    </body>
+</html>

docs/wikidocs/Documentation.html

+<html>
+    <head>
+        <title>XWork - 
+        Documentation
+         </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 cellpadding='5' width='85%' cellspacing='8px' class='noteMacro' border="0" align='center'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="./icons/emoticons/warning.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><br/>
+XWork2 documentation is out of date due to some stuff added to make it works with Struts2. The XWork1 documentation is merged into <a href="http://wiki.opensymphony.com/display/WW/WebWork" title="WebWork">WebWork</a></td></tr></table>
+
+<h3><a name="Documentation-AboutXWork"></a>About XWork</h3>
+
+<ul class="alternate" type="square">
+	<li><a href="XWork Features.html" title="XWork Features">Features</a></li>
+	<li><a href="XWork Core Concepts.html" title="XWork Core Concepts">Concepts</a></li>
+	<li><a href="http://www.opensymphony.com/xwork/members.action" title="Visit page outside Confluence">Team</a></li>
+	<li><a href="http://www.opensymphony.com/xwork/contribute.action" title="Visit page outside Confluence">Contributing</a></li>
+	<li><a href="http://www.opensymphony.com/xwork/reporting.action" title="Visit page outside Confluence">Bugs and Issues</a></li>
+	<li><a href="XWork Articles.html" title="XWork Articles">Articles</a></li>
+	<li><a href="http://www.opensymphony.com/xwork/license.action" title="Visit page outside Confluence">License</a></li>
+</ul>
+
+
+<h3><a name="Documentation-GettingStarted"></a>Getting Started</h3>
+
+<ul class="alternate" type="square">
+	<li><a href="https://xwork.dev.java.net/servlets/ProjectDocumentList?folderID=6088" title="Visit page outside Confluence">Download</a></li>
+	<li><a href="XWork Installation.html" title="XWork Installation">Installation</a></li>
+	<li><a href="XWork Requirements And Dependencies.html" title="XWork Requirements And Dependencies">Requirements and Dependencies</a></li>
+	<li><a href="XWork Tutorial.html" title="XWork Tutorial">Tutorial</a></li>
+</ul>
+
+
+<h3><a name="Documentation-Reference"></a>Reference</h3>
+
+<ul class="alternate" type="square">
+	<li><a href="http://www.opensymphony.com/xwork/api" title="Visit page outside Confluence">API</a></li>
+	<li><a href="XWork Architecture.html" title="XWork Architecture">Architecture</a></li>
+	<li><a href="Configuring XWork in xwork.xml.html" title="Configuring XWork in xwork.xml">xwork.xml</a></li>
+	<li><a href="XWork Configurations.html" title="XWork Configurations">Configurations</a></li>
+	<li><a href="XWork Interceptors.html" title="XWork Interceptors">Interceptors</a></li>
+	<li><a href="XWork package.html" title="XWork package">Package</a></li>
+	<li><a href="XWork Actions.html" title="XWork Actions">Actions</a></li>
+	<li><a href="XWork PreResultListeners.html" title="XWork PreResultListeners">Pre Result Listeners</a></li>
+	<li><a href="Xwork Results.html" title="Xwork Results">Results</a></li>
+	<li><a href="XWork Object Factory.html" title="XWork Object Factory">Object Factory</a></li>
+	<li><a href="XWork Conversion.html" title="XWork Conversion">Conversion</a></li>
+	<li><a href="XWork Validation.html" title="XWork Validation">Validation</a></li>
+	<li><a href="XWork Profiling.html" title="XWork Profiling">Profiling</a></li>
+	<li><a href="XWork Value Stack.html" title="XWork Value Stack">Value Stack</a></li>
+	<li><a href="Annotations.html" title="Annotations">Annotations</a></li>
+	<li><a href="Reloading.html" title="Reloading">Reloading</a></li>
+	<li><a href="XWork specific OGNL Features.html" title="XWork specific OGNL Features">OGNL</a></li>
+	<li><a href="XWork Localization.html" title="XWork Localization">Localization</a></li>
+</ul>
+
+
+<h3><a name="Documentation-Integration"></a>Integration</h3>
+
+<ul class="alternate" type="square">
+	<li><a href="Xwork Spring Integration.html" title="Xwork Spring Integration">Spring</a></li>
+	<li><a href="XWork Hibernate Integration.html" title="XWork Hibernate Integration">Hibernate</a></li>
+</ul>
+
+
+<h3><a name="Documentation-Help"></a>Help</h3>
+
+<ul class="alternate" type="square">
+	<li><a href="XWork FAQs.html" title="XWork FAQs">FAQs</a></li>
+</ul>
+
+
+<h3><a name="Documentation-ContributorsGuide"></a>Contributors Guide</h3>
+
+<h4><a name="Documentation-Source"></a>Source </h4>
+<ul class="alternate" type="square">
+	<li><a href="Building XWork.html" title="Building XWork">Building the Framework from Source</a></li>
+	<li><a href="http://java.sun.com/j2se/javadoc/writingdoccomments/" title="Visit page outside Confluence">How to Write Doc Comments for the Javadoc Tool</a> (Sun)</li>
+	<li><a href="Precise Error Reporting.html" title="Precise Error Reporting">Precise Error Reporting</a></li>
+	<li><a href="Creating a distribution.html" title="Creating a distribution">Distribution</a></li>
+</ul>
+
+
+<h3><a name="Documentation-Documentation"></a>Documentation</h3>
+<ul class="alternate" type="square">
+	<li><a href="Colophon.html" title="Colophon">Documentation Colophon</a></li>
+	<li><a href="Documentation Style Guide.html" title="Documentation Style Guide">Documentation Style Guide</a></li>
+</ul>
+
+
+                    			    </td>
+		    </tr>
+	    </table>
+    </body>
+</html>

docs/wikidocs/DoubleRangeFieldValidator Annotation.html