Anonymous avatar Anonymous committed 9ceb6a4

documentation for 2.1.2 release

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

Comments (0)

Files changed (75)

docs/wikidocs/Articles.html

 				<td height="12" background="border/border_bottom.gif"><img src="border/spacer.gif" width="1" height="1" border="0"/></td>
 			</tr>
 		    <tr>
-			    <td align="center"><font color="grey">Document generated by Confluence on Aug 27, 2004 11:46</font></td>
+			    <td align="center"><font color="grey">Document generated by Confluence on Oct 15, 2004 01:45</font></td>
 		    </tr>
 	    </table>
     </body>

docs/wikidocs/Bug tracker, wiki.html

-<html>
-    <head>
-        <title>WebWork 2 : Bug tracker, wiki</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">
-				    <div class="pageheader">
-					    <span class="pagetitle">
-                            WebWork 2 : Bug tracker, wiki
-                                                    </span>
-				    </div>
-				    <div class="pagesubheading">
-					    This page last changed on May 19, 2004 by <font color="#0050B2">ehauser</font>.
-				    </div>
-
-				    <p class="paragraph">The bug tracking system for both Webwork and Xwork (as well as all other Opensymphony projects) can be found at <a href="http://jira.opensymphony.com" title="Visit page outside Confluence">&#104;ttp://jira.opensymphony.com</a>.</p>The Webwork wiki contains a wealth of knowledge about the project including example code, a cookbook, and general discussion about the framework.  The wiki can be found at <a href="http://wiki.opensymphony.com/display/WW/WebWork" title="Visit page outside Confluence">&#104;ttp://wiki.opensymphony.com/display/WW/WebWork</a>.
-
-				    
-                    			    </td>
-		    </tr>
-	    </table>
-	    <table border="0" cellpadding="0" cellspacing="0" width="100%">
-			<tr>
-				<td height="12" background="border/border_bottom.gif"><img src="border/spacer.gif" width="1" height="1" border="0"/></td>
-			</tr>
-		    <tr>
-			    <td align="center"><font color="grey">Document generated by Confluence on Aug 27, 2004 11:46</font></td>
-		    </tr>
-	    </table>
-    </body>
-</html>

docs/wikidocs/Chaining Interceptor.html

 					    This page last changed on Jun 18, 2004 by <font color="#0050B2">plightbo</font>.
 				    </div>
 
-				    <p class="paragraph"><h2 style="margin: 4px 0px 4px 0px;" class="heading2"><a name="ChainingInterceptor-HowtousetheChainingInterceptor"> How to use the Chaining Interceptor</a></h2></p>The following code snippet shows how interceptor stacks work for chaining.  If someone wants to post xwork.xml (and more complex) examples it would be appreciated <img src="./icons/emoticons/smile.gif" height="20" width="20" align="absmiddle" alt="" border="0"/><br/>
+				    <p class="paragraph"><h2 style="margin: 4px 0px 4px 0px;" class="heading2"><a name="ChainingInterceptor-HowtousetheChainingInterceptor"> How to use the Chaining Interceptor</a></h2></p>The following code snippet shows how interceptor stacks work for chaining.  If someone wants to post xwork.xml (and more complex) examples it would be appreciated <img class="rendericon" src="./icons/emoticons/smile.gif" height="20" width="20" align="absmiddle" alt="" border="0"/><br/>
 
 <div class="code"><div class="codeContent">
 <pre>Interceptors&#45;stack A before&#10;  Action A&#10;  Interceptor&#45;stack B before&#10;    Action B&#10;    Action B result&#10;  Interceptor&#45;stack B after&#10;Interceptor&#45;stack A after</pre>
 				<td height="12" background="border/border_bottom.gif"><img src="border/spacer.gif" width="1" height="1" border="0"/></td>
 			</tr>
 		    <tr>
-			    <td align="center"><font color="grey">Document generated by Confluence on Aug 27, 2004 11:46</font></td>
+			    <td align="center"><font color="grey">Document generated by Confluence on Oct 15, 2004 01:45</font></td>
 		    </tr>
 	    </table>
     </body>

docs/wikidocs/Client-Side Validation.html

 </div></div></p>Of course, all the standard <a href="Validation.html" title="Validation">validation configuration</a> steps still apply.  Client-side validation uses the same validation rules as server-side validation.  If server-side validation doesn&#039;t work, then client-side validation won&#039;t work either.<br/>
 
 <div class="panel"><div class="panelContent" style="background-color: #ffffce; ">
-<p class="paragraph"><img src="./icons/emoticons/information.png" height="16" width="16" align="absmiddle" alt="" border="0"/> Not all validators support client-side validation. Only validators that implement ScriptValidationAware  support this feature.  Refer to the list of WebWork validators to see which ones do so.</p><img src="./icons/emoticons/information.png" height="16" width="16" align="absmiddle" alt="" border="0"/> Note that the <em class="emphasis">required</em> attribute on many WebWork <a href="UI Tags.html" title="UI Tags">UI tags</a> has nothing to do with client-side validation.
+<p class="paragraph"><img class="rendericon" src="./icons/emoticons/information.png" height="16" width="16" align="absmiddle" alt="" border="0"/> Not all validators support client-side validation. Only validators that implement ScriptValidationAware  support this feature.  Refer to the list of WebWork validators to see which ones do so.</p><img class="rendericon" src="./icons/emoticons/information.png" height="16" width="16" align="absmiddle" alt="" border="0"/> Note that the <em class="emphasis">required</em> attribute on many WebWork <a href="UI Tags.html" title="UI Tags">UI tags</a> has nothing to do with client-side validation.
 </div></div><p class="paragraph"><br clear="all" />
-<img src="./icons/emoticons/warning.png" height="16" width="16" align="absmiddle" alt="" border="0"/>  <b class="strong">Upgrade Alert</b>:  This feature was introduced in WebWork 2.1.  If upgrading from a previous version, make sure you are using the correct validators in <a href="Validation.html" title="Validation">validators.xml</a>.  You <em class="emphasis">must</em> be using the <b class="strong">com.opensymphony.webwork.validators.JavaScriptRequired&#42;Validator</b> version of the standard XWork validators. 
+<img class="rendericon" src="./icons/emoticons/warning.png" height="16" width="16" align="absmiddle" alt="" border="0"/>  <b class="strong">Upgrade Alert</b>:  This feature was introduced in WebWork 2.1.  If upgrading from a previous version, make sure you are using the correct validators in <a href="Validation.html" title="Validation">validators.xml</a>.  You <em class="emphasis">must</em> be using the <b class="strong">com.opensymphony.webwork.validators.JavaScriptRequired&#42;Validator</b> version of the standard XWork validators. 
 <br clear="all" /></p><h2 class="heading2"><a name="Client-SideValidation-BuildingaValidatorthatsupportsclientsidevalidation"> Building a Validator that supports client-side validation</a></h2><p class="paragraph">Any validator can be extended to support client-side validation by implementing the <b class="strong">com.opensymphony.webwork.validators.ScriptValidationAware</b> interface:</p><div class="code"><div class="codeContent">
 <pre><span class="java&#45;keyword">public</span>&#160;<span class="java&#45;keyword">interface</span> ScriptValidationAware <span class="java&#45;keyword">extends</span> FieldValidator &#123;&#10;    <span class="java&#45;keyword">public</span>&#160;<span class="java&#45;object">String</span> validationScript(Map parameters);&#10;&#125;</pre>
 </div></div><p class="paragraph">The value returned by <b class="strong">validationScript</b> will be executed on the client-side before the form is submitted if client-side validation is enabled.  For example,  the <b class="strong">requiredstring</b> validator has the following code:</p><div class="code"><div class="codeContent">
 				<td height="12" background="border/border_bottom.gif"><img src="border/spacer.gif" width="1" height="1" border="0"/></td>
 			</tr>
 		    <tr>
-			    <td align="center"><font color="grey">Document generated by Confluence on Aug 27, 2004 11:46</font></td>
+			    <td align="center"><font color="grey">Document generated by Confluence on Oct 15, 2004 01:45</font></td>
 		    </tr>
 	    </table>
     </body>

docs/wikidocs/Comparison to Struts.html

 					    This page last changed on Jun 18, 2004 by <font color="#0050B2">plightbo</font>.
 				    </div>
 
-				    <p class="paragraph"><h2 style="margin: 4px 0px 4px 0px;" class="heading2"><a name="ComparisontoStruts-FeatureComparison"> Feature Comparison</a></h2></p><table class="wiki-table" cellpadding="0" cellspacing="0" border="0"><tr><th>Feature</th><th>Struts</th><th>WebWork 1.x</th><th>WebWork 2.x</th></tr><tr class="table-odd"><td><b class="strong">Action classes</b></td><td>Struts requires Action classes to extend an Abstract base class. This shows a common problem in Struts of programming to abstract classes instead of interfaces.</td><td>Action classes must implement the webwork.Action Interface. There are other Interfaces which can be implemented for other services, such as storing error messages, getting localized texts, etc. The ActionSupport class implements many of these Interfaces and can act as a base class. WebWork is all written to Interfaces, which allows for plugging in your own implementations.</td><td>An Action must implement the com.opensymphony.xwork.Action Interface, with a series of other Interfaces for other services, like in WebWork 1.x. WebWork2 has its own ActionSupport to implement these Interfaces.</td></tr><tr class="table-even"><td><b class="strong">Threading Model</b></td><td>Struts Actions must be thread-safe because there will only be one instance to handle all requests. This places restrictions on what can be done with Struts Actions as any resources held must be thread-safe or access to them must be synchronized.</td><td>WebWork Actions are instantiated for each request, so there are no thread-safety issues. In practice, Servlet containers generate many throw-away objects per request, and one more Object does not prove to be a problem for performance or garbage collection.</td><td>ditto</td></tr><tr class="table-odd"><td><b class="strong">Servlet Dependency</b></td><td>Struts Actions have dependencies on Servlets because they get the ServletRequest and ServletResponse (not HttpServletRequest and HttpServletResponse, I&#039;ve been told) when they are executed. This tie to Servlets (although not Http*) is a defacto tie to a Servlet container, which is an unneeded dependency. Servlets may be used outside a Web context, but it&#039;s not a good fit for JMS, for instance.</td><td>WebWork Actions are not tied to the web or any container. WebWork actions CAN choose to access the request and response from the ActionContext, but it is not required and should be done only when ABSOLUTELY neccessary to avoid tieing code to the Web.</td><td>ditto</td></tr><tr class="table-even"><td><b class="strong">Testability</b></td><td>Many strategies have sprung up around testing Struts applications, but the major hurdle is the fact that Struts Actions are so tightly tied to the web (receiving a Request and Response object). This often leads people to test Struts Actions inside a container, which is both slow and NOT UNIT TESTING. There is a Junit extension : Struts TestCase (<a href="http://strutstestcase.sourceforge.net/" title="Visit page outside Confluence">&#104;ttp://strutstestcase.sourceforge.net/</a>)</td><td>WebWork actions can be tested by  instantiating your action, setting the properties, and executing them</td><td>ditto, but the emphasis on Inversion of Control makes testing even simpler, as you can just set a Mock implementation of your services into your Action for testing, instead of having to set up service registries or static singletons</td></tr><tr class="table-odd"><td><b class="strong">FormBeans</b></td><td>Struts requires the use of FormBeans for every form, necessitating either a lot of extra classes or the use of DynaBeans, which are really just a workaround for the limitation of requiring FormBeans</td><td>WebWork 1.x allows you to have all of your properties directly accessible on your Action as regular Javabeans properties, including rich Object types which can have their own properties which can be accessed from the web page. WebWork also allows the FormBean pattern, as discussed in &quot;<a href="http://wiki.opensymphony.com//display/WW1/Populate+Form+Bean+and+access+its+value" title="Populate Form Bean and access its value">WW1:Populate Form Bean and access its value</a>&quot;</td><td>WebWork 2 allows the same features as WebWork 1, but adds ModelDriven Actions, which allow you to have a rich Object type or domain object as your form bean, with its properties directly accessible to the web page, rather than accessing them as sub-properties of a property of the Action.</td></tr><tr class="table-even"><td><b class="strong">Expression Language</b></td><td>Struts 1.1 integrates with JSTL, so it uses the JSTL EL. This EL has basic object graph traversal, but relatively weak collection and indexed property support.</td><td>WebWork 1.x has its own Expression language which is built for accessing the ValueStack. Collection and indexed property support are basic but good. WebWork can also be made to work directly with JSTL using the Filter described in <a href="http://wiki.opensymphony.com//display/WW1/Using+JSTL+seamlessly+with+WebWork" title="Using JSTL seamlessly with WebWork">WW1:Using JSTL seamlessly with WebWork</a></td><td>WebWork 2 uses <a href="http://wiki.opensymphony.com//display/XW/Ognl" title="Ognl">XW:Ognl</a> which is a VERY powerful expression language, with additions for accessing the value stack. Ognl supports very powerful collection and indexed property support. Ognl also supports powerful features like projections (calling the same method on each member of a collection and building a new collection of the results), selections (filtering a collection with a selector expression to return a subset), list construction, and lambda expressions (simple functions which can be reused). Ognl also allows access to static methods, static fields, and constructors of classes. WebWork2 may also use JSTL as mentioned in <a href="http://wiki.opensymphony.com//display/WW1/Using+JSTL+seamlessly+with+WebWork" title="Using JSTL seamlessly with WebWork">WW1:Using JSTL seamlessly with WebWork</a></td></tr><tr class="table-odd"><td><b class="strong">Binding values into views</b></td><td>Struts uses the standard JSP mechanism for binding objects into the page context for access, which tightly couples your view to the form beans being rendered</td><td>WebWork sets up a ValueStack which the WebWork taglibs access to dynamically find values very flexibly without tightly coupling your view to the types it is rendering. This allows you to reuse views across a range of types which have the same properties.</td><td>ditto</td></tr><tr class="table-even"><td><b class="strong">Type Conversion</b></td><td>Struts FormBeans properties are usually all Strings. Struts uses Commons-Beanutils for type conversion. Converters are per-class, and not configurable per instance. Getting a meaningful type conversion error out and displaying it to the user can be difficult.</td><td>WebWork 1.x uses PropertyEditors for type conversion. PropertyEditors are per type and not settable per Action, but field error messages are added to the field error map in the Action to be automatically displayed to the user with the field.</td><td>WebWork2 uses Ognl for type conversion with added converters provided for all basic types. Type converters default to these converters, but type conversion can be specified per field per class. Type conversion errors also have a default error message but can be set per field per class using the localization mechanism in WW2 and will be set into the field error messages of the Action.</td></tr><tr class="table-odd"><td><b class="strong">Modular Before &amp; After Processing</b></td><td>Class hierarchies of base Actions must be built up to do processing before and after delegating to the Action classes, which can lead deep class hierarchies and limitations due to the inability to have multiple inheritance <em class="emphasis"><a href="#ComparisontoStruts-1" title="1 on Comparison to Struts">WW:Comparison to Struts#1</a></em></td><td>Class hierarchies</td><td>WebWork 2 allows you to modularize before and after processing in Interceptors. Interceptors can be applied dynamically via the configuration without any coupling between the Action classes and the Interceptors.</td></tr><tr class="table-even"><td><b class="strong">Validation</b></td><td>Struts calls validate() on the FormBean. Struts users often use Commons Validation for validation. I don&#039;t know a lot about this, so I&#039;ll put some questions here: <br clear="all" />&#160;<br clear="all" /> Because FormBean properties are usually Strings, some types of validations must either be duplicated (checking type conversion) or cannot be done? <br clear="all" />&#160;<br clear="all" /> Can Commons Validation have different validation contexts for the same class? (I&#039;ve been told yes, so that&#039;s a good thing) <br clear="all" />&#160;<br clear="all" /> Can Commons Validation chain to validations on sub-objects, using the validations defined for that object properties class?</td><td>WebWork1.x calls the validate() method on Actions, which can either do programmatic validations or call an outside validation framework (this is apparently the same as Struts)</td><td>WebWork2 can use the validate() method of WebWork and Struts and / or use the <a href="http://wiki.opensymphony.com//display/XW/Validation+Framework" title="Validation Framework">XW:Validation Framework</a>, which is activated using an XWork Interceptor. The Xwork Validation Framework allows you to define validations in an XML format with default validations for a class and custom validations added for different validation contexts. The Xwork Validation Framework is enabled via an Interceptor and is therefore completely decoupled from your Action class. The Xwork Validation Framework also allows you to chain the validation process down into sub-properties using the VisitorFieldValidator which will use the validations defined for the properties class type and the validation context.</td></tr><tr class="table-odd"><td><b class="strong">Control Of Action Execution</b></td><td>As far as I know Struts sets up the Action object for you, and you have very little control over the order of operations. To change them I think (?) you need to write your own Servlet to handle dispatching as you want</td><td>The ActionFactory chain controls the order in which an Action is constructed and initialised, but this requires writing a class</td><td>The interceptor stacks in WebWork 2 are hugely powerful in this regard. All aspects of Action setup have been moved into Interceptor implementations (ie setting paramters from the web, validation etc), so you can control on a per action basis the order in which they are performed. For example you might want your IOC framework to setup the action before the parameters are set from the request or vice versa - you can thusly control this on a per package or per action basis with interceptor stacks.</td></tr></table><p class="paragraph"><h2 class="heading2"><a name="ComparisontoStruts-References"> References</a></h2></p><ul class="star">
+				    <p class="paragraph"><h2 style="margin: 4px 0px 4px 0px;" class="heading2"><a name="ComparisontoStruts-FeatureComparison"> Feature Comparison</a></h2></p><table class="wiki-table" cellpadding="0" cellspacing="0" border="0"><tr><th>Feature</th><th>Struts</th><th>WebWork 1.x</th><th>WebWork 2.x</th></tr><tr class="table-odd"><td><b class="strong">Action classes</b></td><td>Struts requires Action classes to extend an Abstract base class. This shows a common problem in Struts of programming to abstract classes instead of interfaces.</td><td>Action classes must implement the webwork.Action Interface. There are other Interfaces which can be implemented for other services, such as storing error messages, getting localized texts, etc. The ActionSupport class implements many of these Interfaces and can act as a base class. WebWork is all written to Interfaces, which allows for plugging in your own implementations.</td><td>An Action must implement the com.opensymphony.xwork.Action Interface, with a series of other Interfaces for other services, like in WebWork 1.x. WebWork2 has its own ActionSupport to implement these Interfaces.</td></tr><tr class="table-even"><td><b class="strong">Threading Model</b></td><td>Struts Actions must be thread-safe because there will only be one instance to handle all requests. This places restrictions on what can be done with Struts Actions as any resources held must be thread-safe or access to them must be synchronized.</td><td>WebWork Actions are instantiated for each request, so there are no thread-safety issues. In practice, Servlet containers generate many throw-away objects per request, and one more Object does not prove to be a problem for performance or garbage collection.</td><td>ditto</td></tr><tr class="table-odd"><td><b class="strong">Servlet Dependency</b></td><td>Struts Actions have dependencies on Servlets because they get the ServletRequest and ServletResponse (not HttpServletRequest and HttpServletResponse, I&#039;ve been told) when they are executed. This tie to Servlets (although not Http*) is a defacto tie to a Servlet container, which is an unneeded dependency. Servlets may be used outside a Web context, but it&#039;s not a good fit for JMS, for instance.</td><td>WebWork Actions are not tied to the web or any container. WebWork actions CAN choose to access the request and response from the ActionContext, but it is not required and should be done only when ABSOLUTELY neccessary to avoid tieing code to the Web.</td><td>ditto</td></tr><tr class="table-even"><td><b class="strong">Testability</b></td><td>Many strategies have sprung up around testing Struts applications, but the major hurdle is the fact that Struts Actions are so tightly tied to the web (receiving a Request and Response object). This often leads people to test Struts Actions inside a container, which is both slow and NOT UNIT TESTING. There is a Junit extension : Struts TestCase (<a href="http://strutstestcase.sourceforge.net/" title="Visit page outside Confluence">&#104;ttp://strutstestcase.sourceforge.net/</a>)</td><td>WebWork actions can be tested by  instantiating your action, setting the properties, and executing them</td><td>ditto, but the emphasis on Inversion of Control makes testing even simpler, as you can just set a Mock implementation of your services into your Action for testing, instead of having to set up service registries or static singletons</td></tr><tr class="table-odd"><td><b class="strong">FormBeans</b></td><td>Struts requires the use of FormBeans for every form, necessitating either a lot of extra classes or the use of DynaBeans, which are really just a workaround for the limitation of requiring FormBeans</td><td>WebWork 1.x allows you to have all of your properties directly accessible on your Action as regular Javabeans properties, including rich Object types which can have their own properties which can be accessed from the web page. WebWork also allows the FormBean pattern, as discussed in &quot;<a href="http://wiki.opensymphony.com//display/WW1/Populate+Form+Bean+and+access+its+value" title="Populate Form Bean and access its value">WW1:Populate Form Bean and access its value</a>&quot;</td><td>WebWork 2 allows the same features as WebWork 1, but adds ModelDriven Actions, which allow you to have a rich Object type or domain object as your form bean, with its properties directly accessible to the web page, rather than accessing them as sub-properties of a property of the Action.</td></tr><tr class="table-even"><td><b class="strong">Expression Language</b></td><td>Struts 1.1 integrates with JSTL, so it uses the JSTL EL. This EL has basic object graph traversal, but relatively weak collection and indexed property support.</td><td>WebWork 1.x has its own Expression language which is built for accessing the ValueStack. Collection and indexed property support are basic but good. WebWork can also be made to work directly with JSTL using the Filter described in <a href="http://wiki.opensymphony.com//display/WW1/Using+JSTL+seamlessly+with+WebWork" title="Using JSTL seamlessly with WebWork">WW1:Using JSTL seamlessly with WebWork</a></td><td>WebWork 2 uses <a href="http://wiki.opensymphony.com//display/XW/Ognl" title="Ognl">XW:Ognl</a> which is a VERY powerful expression language, with additions for accessing the value stack. Ognl supports very powerful collection and indexed property support. Ognl also supports powerful features like projections (calling the same method on each member of a collection and building a new collection of the results), selections (filtering a collection with a selector expression to return a subset), list construction, and lambda expressions (simple functions which can be reused). Ognl also allows access to static methods, static fields, and constructors of classes. WebWork2 may also use JSTL as mentioned in <a href="http://wiki.opensymphony.com//display/WW1/Using+JSTL+seamlessly+with+WebWork" title="Using JSTL seamlessly with WebWork">WW1:Using JSTL seamlessly with WebWork</a></td></tr><tr class="table-odd"><td><b class="strong">Binding values into views</b></td><td>Struts uses the standard JSP mechanism for binding objects into the page context for access, which tightly couples your view to the form beans being rendered</td><td>WebWork sets up a ValueStack which the WebWork taglibs access to dynamically find values very flexibly without tightly coupling your view to the types it is rendering. This allows you to reuse views across a range of types which have the same properties.</td><td>ditto</td></tr><tr class="table-even"><td><b class="strong">Type Conversion</b></td><td>Struts FormBeans properties are usually all Strings. Struts uses Commons-Beanutils for type conversion. Converters are per-class, and not configurable per instance. Getting a meaningful type conversion error out and displaying it to the user can be difficult.</td><td>WebWork 1.x uses PropertyEditors for type conversion. PropertyEditors are per type and not settable per Action, but field error messages are added to the field error map in the Action to be automatically displayed to the user with the field.</td><td>WebWork2 uses Ognl for type conversion with added converters provided for all basic types. Type converters default to these converters, but type conversion can be specified per field per class. Type conversion errors also have a default error message but can be set per field per class using the localization mechanism in WW2 and will be set into the field error messages of the Action.</td></tr><tr class="table-odd"><td><b class="strong">Modular Before &amp; After Processing</b></td><td>Class hierarchies of base Actions must be built up to do processing before and after delegating to the Action classes, which can lead deep class hierarchies and limitations due to the inability to have multiple inheritance <em class="emphasis"><a href="#ComparisontoStruts-1" title="1 on Comparison to Struts">WW:Comparison to Struts#1</a></em></td><td>Class hierarchies</td><td>WebWork 2 allows you to modularize before and after processing in Interceptors. Interceptors can be applied dynamically via the configuration without any coupling between the Action classes and the Interceptors.</td></tr><tr class="table-even"><td><b class="strong">Validation</b></td><td>Struts calls validate() on the FormBean. Struts users often use Commons Validation for validation. I don&#039;t know a lot about this, so I&#039;ll put some questions here: <br clear="all" />&#160;<br clear="all" /> Because FormBean properties are usually Strings, some types of validations must either be duplicated (checking type conversion) or cannot be done? <br clear="all" />&#160;<br clear="all" /> Can Commons Validation have different validation contexts for the same class? (I&#039;ve been told yes, so that&#039;s a good thing) <br clear="all" />&#160;<br clear="all" /> Can Commons Validation chain to validations on sub-objects, using the validations defined for that object properties class?</td><td>WebWork1.x calls the validate() method on Actions, which can either do programmatic validations or call an outside validation framework (this is apparently the same as Struts)</td><td>WebWork2 can use the validate() method of WebWork and Struts and / or use the <a href="http://wiki.opensymphony.com//display/XW/Validation+Framework" title="Validation Framework">XW:Validation Framework</a>, which is activated using an XWork Interceptor. The Xwork Validation Framework allows you to define validations in an XML format with default validations for a class and custom validations added for different validation contexts. The Xwork Validation Framework is enabled via an Interceptor and is therefore completely decoupled from your Action class. The Xwork Validation Framework also allows you to chain the validation process down into sub-properties using the VisitorFieldValidator which will use the validations defined for the properties class type and the validation context.</td></tr><tr class="table-odd"><td><b class="strong">Control Of Action Execution</b></td><td>As far as I know Struts sets up the Action object for you, and you have very little control over the order of operations. To change them I think <img class="rendericon" src="./icons/emoticons/help_16.gif" height="16" width="16" align="absmiddle" alt="" border="0"/> you need to write your own Servlet to handle dispatching as you want</td><td>The ActionFactory chain controls the order in which an Action is constructed and initialised, but this requires writing a class</td><td>The interceptor stacks in WebWork 2 are hugely powerful in this regard. All aspects of Action setup have been moved into Interceptor implementations (ie setting paramters from the web, validation etc), so you can control on a per action basis the order in which they are performed. For example you might want your IOC framework to setup the action before the parameters are set from the request or vice versa - you can thusly control this on a per package or per action basis with interceptor stacks.</td></tr></table><p class="paragraph"><h2 class="heading2"><a name="ComparisontoStruts-References"> References</a></h2></p><ul class="star">
 <li> <a href="http://www.mail-archive.com/opensymphony-webwork@lists.sourceforge.net/msg00995.html" title="Visit page outside Confluence">&#104;ttp://www.mail-archive.com/opensymphony-webwork@lists.sourceforge.net/msg00995.html</a> - compares Struts development to WebWork 1.x development from the point of view of a Stuts developer who switched to WebWork</li>
 <li> <a href="http://www.mail-archive.com/opensymphony-webwork@lists.sourceforge.net/msg04700.html" title="Visit page outside Confluence">&#104;ttp://www.mail-archive.com/opensymphony-webwork@lists.sourceforge.net/msg04700.html</a> - Kind of the first draft of this comparison</li>
 </ul>
 				<td height="12" background="border/border_bottom.gif"><img src="border/spacer.gif" width="1" height="1" border="0"/></td>
 			</tr>
 		    <tr>
-			    <td align="center"><font color="grey">Document generated by Confluence on Aug 27, 2004 11:46</font></td>
+			    <td align="center"><font color="grey">Document generated by Confluence on Oct 15, 2004 01:45</font></td>
 		    </tr>
 	    </table>
     </body>

docs/wikidocs/Components.html

 				<td height="12" background="border/border_bottom.gif"><img src="border/spacer.gif" width="1" height="1" border="0"/></td>
 			</tr>
 		    <tr>
-			    <td align="center"><font color="grey">Document generated by Confluence on Aug 27, 2004 11:46</font></td>
+			    <td align="center"><font color="grey">Document generated by Confluence on Oct 15, 2004 01:45</font></td>
 		    </tr>
 	    </table>
     </body>

docs/wikidocs/Configuration.html

 				<td height="12" background="border/border_bottom.gif"><img src="border/spacer.gif" width="1" height="1" border="0"/></td>
 			</tr>
 		    <tr>
-			    <td align="center"><font color="grey">Document generated by Confluence on Aug 27, 2004 11:46</font></td>
+			    <td align="center"><font color="grey">Document generated by Confluence on Oct 15, 2004 01:45</font></td>
 		    </tr>
 	    </table>
     </body>

docs/wikidocs/Default results.html

 				<td height="12" background="border/border_bottom.gif"><img src="border/spacer.gif" width="1" height="1" border="0"/></td>
 			</tr>
 		    <tr>
-			    <td align="center"><font color="grey">Document generated by Confluence on Aug 27, 2004 11:46</font></td>
+			    <td align="center"><font color="grey">Document generated by Confluence on Oct 15, 2004 01:45</font></td>
 		    </tr>
 	    </table>
     </body>

docs/wikidocs/Dependencies.html

 				<td height="12" background="border/border_bottom.gif"><img src="border/spacer.gif" width="1" height="1" border="0"/></td>
 			</tr>
 		    <tr>
-			    <td align="center"><font color="grey">Document generated by Confluence on Aug 27, 2004 11:46</font></td>
+			    <td align="center"><font color="grey">Document generated by Confluence on Oct 15, 2004 01:45</font></td>
 		    </tr>
 	    </table>
     </body>

docs/wikidocs/Deployment Notes.html

 				<td height="12" background="border/border_bottom.gif"><img src="border/spacer.gif" width="1" height="1" border="0"/></td>
 			</tr>
 		    <tr>
-			    <td align="center"><font color="grey">Document generated by Confluence on Aug 27, 2004 11:46</font></td>
+			    <td align="center"><font color="grey">Document generated by Confluence on Oct 15, 2004 01:45</font></td>
 		    </tr>
 	    </table>
     </body>

docs/wikidocs/Documentation.html

                                                     </span>
 				    </div>
 				    <div class="pagesubheading">
-					    This page last changed on Aug 26, 2004 by <font color="#0050B2">plightbo</font>.
+					    This page last changed on Sep 09, 2004 by <font color="#0050B2">plightbo</font>.
 				    </div>
 
 				    <p class="paragraph"><h3 style="margin: 4px 0px 4px 0px;" class="heading3"><a name="Documentation-1.Overview"> 1. Overview</a></h3></p><ol>
-<li> <a href="What is Webwork.html" title="What is WebWork">What is WebWork</a></li>
+<li> <a href="What is WebWork.html" title="What is WebWork">What is WebWork</a></li>
 <li> <a href="Getting Started.html" title="Getting Started">Getting Started</a></li>
 <li> <a href="FAQ.html" title="FAQ">FAQ</a></li>
 <li> <a href="Deployment Notes.html" title="Deployment Notes">Deployment Notes</a></li>
 <ul class="star">
 <li> Current Release<ul class="star">
 <li> Release Notes<ul class="star">
+<li> <a href="Release Notes - 2.1.2.html" title="Release Notes - 2.1.2">Release Notes - 2.1.2</a></li>
 <li> <a href="Release Notes - 2.1.1.html" title="Release Notes - 2.1.1">Release Notes - 2.1.1</a></li>
 <li> <a href="Release Notes - 2.1.html" title="Release Notes - 2.1">Release Notes - 2.1</a></li>
 </ul></li>
 <li> <a href="Dependencies.html" title="Dependencies">Dependencies</a></li>
 </ul></li>
 <li> Upgrading from previous versions<ul class="star">
+<li> <a href="Upgrading from 2.1.1.html" title="Upgrading from 2.1.1">Upgrading from 2.1.1</a></li>
 <li> <a href="Upgrading from 2.1.html" title="Upgrading from 2.1">Upgrading from 2.1</a></li>
 <li> <a href="Upgrading from 2.0.html" title="Upgrading from 2.0">Upgrading from 2.0</a></li>
 <li> <a href="Upgrading from 1.4.html" title="Upgrading from 1.4">Upgrading from 1.4</a></li>
 </ol>
 <h3 class="heading3"><a name="Documentation-5.Thirdpartyintegration"> 5. Third-party integration</a></h3>
 <ol>
-<li> <a href="Sitemesh.html" title="SiteMesh">SiteMesh</a></li>
+<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>
 				<td height="12" background="border/border_bottom.gif"><img src="border/spacer.gif" width="1" height="1" border="0"/></td>
 			</tr>
 		    <tr>
-			    <td align="center"><font color="grey">Document generated by Confluence on Aug 27, 2004 11:46</font></td>
+			    <td align="center"><font color="grey">Document generated by Confluence on Oct 15, 2004 01:45</font></td>
 		    </tr>
 	    </table>
     </body>

docs/wikidocs/FAQ.html

                                                     </span>
 				    </div>
 				    <div class="pagesubheading">
-					    This page last changed on Aug 14, 2004 by <font color="#0050B2">sutter2k</font>.
+					    This page last changed on Sep 26, 2004 by <font color="#0050B2">jcarreira</font>.
 				    </div>
 
 				    <p class="paragraph"><b class="strong">How do I get the latest version of Webwork and XWork from CVS?</b><br/>
 <pre>onchange=&#039;<span class="java&#45;quote">&quot;someFunc(<span class="java&#45;keyword">this</span>.form, &#92;&#039;abc&#92;&#039;)&quot;</span>&#039;</pre>
 </div></div><p class="paragraph">Notice here that there are single quotes surrounding the double quotes, and then the single quotes inline in the Javascript are escaped. This produces this result:</p><div class="code"><div class="codeContent">
 <pre>onchange=<span class="java&#45;quote">&quot;someFunc(<span class="java&#45;keyword">this</span>.form, &#039;abc&#039;)&quot;</span></pre>
-</div></div>
+</div></div><p class="paragraph"><b class="strong">Why won&#039;t the &#039;if&#039; tag evaluate a one char string?</b>
+<div class="code"><div class="codeContent">
+<pre>&lt;ww:<span class="java&#45;keyword">if</span> test=<span class="java&#45;quote">&quot;#myObj.myString == &#039;A&#039;&quot;</span>&gt;&#10;Why doesn&#039;t <span class="java&#45;keyword">this</span> work when myString is equal to A&#63;&#10;&lt;/ww:<span class="java&#45;keyword">if</span>&gt;</pre>
+</div></div></p>OGNL will interpret &#039;A&#039; as a char type and not a string.  Simple solution - flip the double and single quotes.
+<div class="code"><div class="codeContent">
+<pre>&lt;ww:<span class="java&#45;keyword">if</span> test=&#039;#myObj.myString == <span class="java&#45;quote">&quot;A&quot;</span>&#039;&gt;&#10;This works&#33;&#10;&lt;/ww:<span class="java&#45;keyword">if</span>&gt;</pre>
+</div></div><p class="paragraph">Alternatively, you can escape the double quotes in the String:</p><div class="code"><div class="codeContent">
+<pre>&lt;ww:<span class="java&#45;keyword">if</span> test=<span class="java&#45;quote">&quot;#myObj.myString == &#92;&quot;</span>A&#92;&quot;&quot;&gt;&#10;This works&#33;&#10;&lt;/ww:<span class="java&#45;keyword">if</span>&gt;</pre>
+</div></div><p class="paragraph"><b class="strong">I&#039;m trying to run the webwork example in the tutorial on Tomcat, and it can&#039;t instantiate the VelocityEngine</b></p>Tomcat says:<p class="paragraph">javax.servlet.ServletException: Servlet.init() for servlet webwork threw exception at <br/>
+org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:963)<br/>
+&#8230;<br/>
+root cause</p>java.lang.RuntimeException: Unable to instantiate VelocityEngine!<br/>
+	at <br/>
+com.opensymphony.webwork.views.velocity.VelocityManager.newVelocityEngine(VelocityManager.java:333)<br/>
+	at <br/>
+com.opensymphony.webwork.views.velocity.VelocityManager.init(VelocityManager.java:146)<br/>
+	at <br/>
+com.opensymphony.webwork.dispatcher.ServletDispatcher.init(ServletDispatcher.java:177)<br/>
+	at <br/>
+org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:935)
+<p class="paragraph"><em class="emphasis">Solution:</em>&#160;<b class="strong">(thanks to Keith Lea)</b></p>It turns out Velocity&#039;s Avalon logging system was trying to write to my tomcat folder.<p class="paragraph">So that it&#039;s on file somewhere for other people, I will describe the solution:</p>I created a file &quot;velocity.properties&quot; and placed it in my WEB-INF/classes folder. Inside the file I wrote:<p class="paragraph">runtime.log.logsystem.class=org.apache.velocity.runtime.log.NullLogSystem</p>This stops velocity from logging, and makes webwork work again.
 
 				    
                     			    </td>
 				<td height="12" background="border/border_bottom.gif"><img src="border/spacer.gif" width="1" height="1" border="0"/></td>
 			</tr>
 		    <tr>
-			    <td align="center"><font color="grey">Document generated by Confluence on Aug 27, 2004 11:46</font></td>
+			    <td align="center"><font color="grey">Document generated by Confluence on Oct 15, 2004 01:45</font></td>
 		    </tr>
 	    </table>
     </body>

docs/wikidocs/Getting Started.html

                                                     </span>
 				    </div>
 				    <div class="pagesubheading">
-					    This page last changed on Jun 17, 2004 by <font color="#0050B2">casey</font>.
+					    This page last changed on Sep 10, 2004 by <font color="#0050B2">casey</font>.
 				    </div>
 
 				    <p class="paragraph">This site is geared towards developers that have an understanding towards certain technologies.  Before diving into how Webwork works and running demos, it is recommended that you review the concepts below:
 <li> <a href="http://www.opensymphony.com" title="Visit page outside Confluence">OpenSymphony Home</a></li>
 </ul>
 <h4 class="heading4"><a name="GettingStarted-What%26%23039%3Bsincludedinthedistro%3Caname%3D%22GettingStartedincludedindistro%22%3E%3C%2Fa%3E"> What&#039;s included in the distro <a name="GettingStarted-includedindistro"></a></a></h4><p class="paragraph">The distribution contains the following directory layout:</p><div class="preformatted"><div class="preformattedContent">
-<pre>docs/&#10;lib/&#10;src/&#10;src/template/&#10;webwork&#45;(VERSION).jar&#10;webwork&#45;example.war&#10;webwork&#45;migration.jar</pre>
+<pre>docs/&#10;lib/&#10;src/&#10;src/java/template/&#10;webwork&#45;(VERSION).jar&#10;webwork&#45;example.war&#10;webwork&#45;migration.jar</pre>
 </div></div><p class="paragraph">The docs directory contains the current Javadocs, the document you are reading, as well as JUnit reports for the build.  The lib directory contains the required as well as the optional dependencies for Webwork:</p><div class="preformatted"><div class="preformattedContent">
 <pre>lib/&#10;      core/&#10;      migration/&#10;      optional/</pre>
-</div></div><p class="paragraph">Note that none of the optional packages are required to use Webwork.  If you wish to use certain features such as JasperReports and FreeMarker results, you must include the optional packages.</p>Webwork also comes packaged with all the source files and the templates for the JSP tags.<p class="paragraph"><h4 class="heading4"><a name="GettingStarted-Installing%3Caname%3D%22GettingStartedInstalling%22%3E%3C%2Fa%3E"> Installing <a name="GettingStarted-Installing"></a></a></h4></p>The following illustrates how your web application should be set up.  Copy the webwork-(VERSION).jar, all the *.jar files in /lib/core and any necessary optional *.jar files in /lib/optional to your webapp/lib directory.  Also, copy the /src/template directory into your webapp/ directory.  Your webapp should look similar to this:<br/>
+</div></div><p class="paragraph">Note that none of the optional packages are required to use Webwork.  If you wish to use certain features such as JasperReports and FreeMarker results, you must include the optional packages.</p>Webwork also comes packaged with all the source files and the templates for the JSP tags.<p class="paragraph"><h4 class="heading4"><a name="GettingStarted-Installing%3Caname%3D%22GettingStartedInstalling%22%3E%3C%2Fa%3E"> Installing <a name="GettingStarted-Installing"></a></a></h4></p>The following illustrates how your web application should be set up.  Copy the webwork-(VERSION).jar, all the *.jar files in /lib/core and any necessary optional *.jar files in /lib/optional to your webapp/lib directory.  If you need to customize your own templates (how HTML is rendered from webwork UI tags), copy the /src/java/template directory into your webapp/ directory.  Your webapp should look similar to this:<br/>
 
 <div class="code"><div class="codeContent">
 <pre>/mywebapp/&#10;/mywebapp/template/&#10;/mywebapp/META&#45;INF/&#10;/mywebapp/WEB&#45;INF/&#10;/mywebapp/WEB&#45;INF/classes/&#10;/mywebapp/WEB&#45;INF/lib/&#10;/mywebapp/WEB&#45;INF/lib/CORE&amp;OPTIONAL &#42;.jar&#10;/mywebapp/WEB&#45;INF/web.xml</pre>
 				<td height="12" background="border/border_bottom.gif"><img src="border/spacer.gif" width="1" height="1" border="0"/></td>
 			</tr>
 		    <tr>
-			    <td align="center"><font color="grey">Document generated by Confluence on Aug 27, 2004 11:46</font></td>
+			    <td align="center"><font color="grey">Document generated by Confluence on Oct 15, 2004 01:45</font></td>
 		    </tr>
 	    </table>
     </body>

docs/wikidocs/Global results.html

 				<td height="12" background="border/border_bottom.gif"><img src="border/spacer.gif" width="1" height="1" border="0"/></td>
 			</tr>
 		    <tr>
-			    <td align="center"><font color="grey">Document generated by Confluence on Aug 27, 2004 11:46</font></td>
+			    <td align="center"><font color="grey">Document generated by Confluence on Oct 15, 2004 01:45</font></td>
 		    </tr>
 	    </table>
     </body>

docs/wikidocs/Hibernate.html

 				<td height="12" background="border/border_bottom.gif"><img src="border/spacer.gif" width="1" height="1" border="0"/></td>
 			</tr>
 		    <tr>
-			    <td align="center"><font color="grey">Document generated by Confluence on Aug 27, 2004 11:46</font></td>
+			    <td align="center"><font color="grey">Document generated by Confluence on Oct 15, 2004 01:45</font></td>
 		    </tr>
 	    </table>
     </body>

docs/wikidocs/Interceptors.html

 				<td height="12" background="border/border_bottom.gif"><img src="border/spacer.gif" width="1" height="1" border="0"/></td>
 			</tr>
 		    <tr>
-			    <td align="center"><font color="grey">Document generated by Confluence on Aug 27, 2004 11:46</font></td>
+			    <td align="center"><font color="grey">Document generated by Confluence on Oct 15, 2004 01:45</font></td>
 		    </tr>
 	    </table>
     </body>

docs/wikidocs/Internationalization.html

 				<td height="12" background="border/border_bottom.gif"><img src="border/spacer.gif" width="1" height="1" border="0"/></td>
 			</tr>
 		    <tr>
-			    <td align="center"><font color="grey">Document generated by Confluence on Aug 27, 2004 11:46</font></td>
+			    <td align="center"><font color="grey">Document generated by Confluence on Oct 15, 2004 01:45</font></td>
 		    </tr>
 	    </table>
     </body>

docs/wikidocs/Inversion of Control.html

 				<td height="12" background="border/border_bottom.gif"><img src="border/spacer.gif" width="1" height="1" border="0"/></td>
 			</tr>
 		    <tr>
-			    <td align="center"><font color="grey">Document generated by Confluence on Aug 27, 2004 11:46</font></td>
+			    <td align="center"><font color="grey">Document generated by Confluence on Oct 15, 2004 01:45</font></td>
 		    </tr>
 	    </table>
     </body>

docs/wikidocs/IoC Configuration.html

 				<td height="12" background="border/border_bottom.gif"><img src="border/spacer.gif" width="1" height="1" border="0"/></td>
 			</tr>
 		    <tr>
-			    <td align="center"><font color="grey">Document generated by Confluence on Aug 27, 2004 11:46</font></td>
+			    <td align="center"><font color="grey">Document generated by Confluence on Oct 15, 2004 01:45</font></td>
 		    </tr>
 	    </table>
     </body>

docs/wikidocs/IoC Overview.html

 				<td height="12" background="border/border_bottom.gif"><img src="border/spacer.gif" width="1" height="1" border="0"/></td>
 			</tr>
 		    <tr>
-			    <td align="center"><font color="grey">Document generated by Confluence on Aug 27, 2004 11:46</font></td>
+			    <td align="center"><font color="grey">Document generated by Confluence on Oct 15, 2004 01:45</font></td>
 		    </tr>
 	    </table>
     </body>

docs/wikidocs/JSP Tags.html

 <pre>&lt;webwork:text name=<span class="java&#45;quote">&quot;&#039;main.title&#039;&quot;</span>/&gt;</pre>
 </div></div><p class="paragraph">We also notice that this page includes another page i18n.CDList.action. The non UI tag include will invoke action CDList and upon success will include view cdlist.jsp in the shop.jsp. Action CDList will load a list of CDs from a text file into a list. After the CDs are loaded we now turn our attention to cdlist.jsp</p><div class="code"><div class="codeContent">
 <pre>CD:&lt;webwork:include page=<span class="java&#45;quote">&quot;i18n.CDList.action&quot;</span>  /&gt;</pre>
-</div></div><p class="paragraph">cdlist.jsp will provide a HTML SELECT form control. In this example, we build an HTML control instead of using WW&#039;s UI tag select. We use WW&#039;s non UI tag iterator to build the select control. This tag allows us to iterate over the cd list. So where did the cd list come from? Remember, that we called action CDList beforehand. After the action was called, WW placed this action on the ValueStack for reference by the view. So, WW will look for a method named getCDList() which it will find on action CDList. This method returns a list that the iterator tag will iterate over. Each iteration will output a HTML OPTION tag. Also notice the non UI tag property. For each member in the list, the property tag is retrieving album, artist, and country from the CD. Also notice that the last property is using action ComputePrice to determine the appropriate price for the CD. The semantic @pricer/computePrice(price) means use the object defined by parameter pricer and call its method getComputePrice passing in the CD&#039;s price as a parameter. Pretty cool. <img src="./icons/emoticons/smile.gif" height="20" width="20" align="absmiddle" alt="" border="0"/></p><div class="code"><div class="codeContent">
+</div></div><p class="paragraph">cdlist.jsp will provide a HTML SELECT form control. In this example, we build an HTML control instead of using WW&#039;s UI tag select. We use WW&#039;s non UI tag iterator to build the select control. This tag allows us to iterate over the cd list. So where did the cd list come from? Remember, that we called action CDList beforehand. After the action was called, WW placed this action on the ValueStack for reference by the view. So, WW will look for a method named getCDList() which it will find on action CDList. This method returns a list that the iterator tag will iterate over. Each iteration will output a HTML OPTION tag. Also notice the non UI tag property. For each member in the list, the property tag is retrieving album, artist, and country from the CD. Also notice that the last property is using action ComputePrice to determine the appropriate price for the CD. The semantic @pricer/computePrice(price) means use the object defined by parameter pricer and call its method getComputePrice passing in the CD&#039;s price as a parameter. Pretty cool. <img class="rendericon" src="./icons/emoticons/smile.gif" height="20" width="20" align="absmiddle" alt="" border="0"/></p><div class="code"><div class="codeContent">
 <pre>&lt;webwork:action name=<span class="java&#45;quote">&quot;&#039;webwork.action.test.i18n.ComputePrice&#039;&quot;</span> id=<span class="java&#45;quote">&quot;pricer&quot;</span>/&gt;&#10;&#10;&lt;select name=<span class="java&#45;quote">&quot;album&quot;</span>&gt;&#10;   &lt;webwork:iterator value=<span class="java&#45;quote">&quot;CDList&quot;</span>&gt;&#10;   &lt;option value=<span class="java&#45;quote">&quot;&lt;webwork:property value=&quot;</span>album<span class="java&#45;quote">&quot;/&gt;&quot;</span>&gt;&#10;      &lt;webwork:property value=<span class="java&#45;quote">&quot;album&quot;</span>/&gt;,&#10;      &lt;webwork:property value=<span class="java&#45;quote">&quot;artist&quot;</span>/&gt;, &lt;webwork:property value=<span class="java&#45;quote">&quot;country&quot;</span>/&gt;,&#10;      &lt;webwork:property value=<span class="java&#45;quote">&quot;&#64;pricer/computePrice(price)&quot;</span>/&gt;&#10;   &lt;/option&gt;&#10;   &lt;/webwork:iterator&gt;&#10;&lt;/select&gt;</pre>
 </div></div><p class="paragraph">Now back to shop.jsp. Examining the code further reveals another interesting aspect. Look at the UI tag textfield&#039;s label attribute shown below. Notice the attribute&#039;s value is a method call text(&#039;main.qtyLabel&#039;). This method will retrieve an appropriate string from our resource bundle. But what action has a getText() method? Remember that action Shop extends ActionSupport. This action provides this method.</p><div class="code"><div class="codeContent">
 <pre>&lt;ui:textfield label=<span class="java&#45;quote">&quot;text(&#039;main.qtyLabel&#039;)&quot;</span> name=<span class="java&#45;quote">&quot;&#039;quantity&#039;&quot;</span> value=<span class="java&#45;quote">&quot;1&quot;</span> size=<span class="java&#45;quote">&quot;3&quot;</span>/&gt;</pre>
 				<td height="12" background="border/border_bottom.gif"><img src="border/spacer.gif" width="1" height="1" border="0"/></td>
 			</tr>
 		    <tr>
-			    <td align="center"><font color="grey">Document generated by Confluence on Aug 27, 2004 11:46</font></td>
+			    <td align="center"><font color="grey">Document generated by Confluence on Oct 15, 2004 01:45</font></td>
 		    </tr>
 	    </table>
     </body>

docs/wikidocs/JUnit.html

 				<td height="12" background="border/border_bottom.gif"><img src="border/spacer.gif" width="1" height="1" border="0"/></td>
 			</tr>
 		    <tr>
-			    <td align="center"><font color="grey">Document generated by Confluence on Aug 27, 2004 11:46</font></td>
+			    <td align="center"><font color="grey">Document generated by Confluence on Oct 15, 2004 01:45</font></td>
 		    </tr>
 	    </table>
     </body>

docs/wikidocs/Mailing Lists.html

 				<td height="12" background="border/border_bottom.gif"><img src="border/spacer.gif" width="1" height="1" border="0"/></td>
 			</tr>
 		    <tr>
-			    <td align="center"><font color="grey">Document generated by Confluence on Aug 27, 2004 11:46</font></td>
+			    <td align="center"><font color="grey">Document generated by Confluence on Oct 15, 2004 01:45</font></td>
 		    </tr>
 	    </table>
     </body>

docs/wikidocs/Namespaces.html

 				<td height="12" background="border/border_bottom.gif"><img src="border/spacer.gif" width="1" height="1" border="0"/></td>
 			</tr>
 		    <tr>
-			    <td align="center"><font color="grey">Document generated by Confluence on Aug 27, 2004 11:46</font></td>
+			    <td align="center"><font color="grey">Document generated by Confluence on Oct 15, 2004 01:45</font></td>
 		    </tr>
 	    </table>
     </body>

docs/wikidocs/Non-UI Tags.html

                                                     </span>
 				    </div>
 				    <div class="pagesubheading">
-					    This page last changed on Jul 22, 2004 by <font color="#0050B2">plightbo</font>.
+					    This page last changed on Sep 27, 2004 by <font color="#0050B2">jcarreira</font>.
 				    </div>
 
 				    <p class="paragraph"><a name="Non-UITags-top"></a><br/>
 </div></div><p class="paragraph">In this example, we use a couple of IteratorStatus to see where we are within iterations.</p><div class="code"><div class="codeContent">
 <pre>&lt;h1&gt;Testing iterator status&lt;/h1&gt;&#10;&#10;&lt;ww:bean name=<span class="java&#45;quote">&quot;&#039;webwork.util.Counter&#039;&quot;</span> id=<span class="java&#45;quote">&quot;rowcounter&quot;</span>&gt;&#10;  &lt;ww:param name=<span class="java&#45;quote">&quot;&#039;first&#039;&quot;</span> value=<span class="java&#45;quote">&quot;0&quot;</span>/&gt;&#10;  &lt;ww:param name=<span class="java&#45;quote">&quot;&#039;last&#039;&quot;</span> value=<span class="java&#45;quote">&quot;5&quot;</span>/&gt;&#10;&lt;/ww:bean&gt;&#10;&#10;&lt;table border=<span class="java&#45;quote">&quot;1&quot;</span>&gt;&#10;  &lt;ww:iterator value=<span class="java&#45;quote">&quot;#rowcounter&quot;</span> status=<span class="java&#45;quote">&quot;rowstatus&quot;</span>&gt;&#10;  &lt;tr&gt;&#10;    &lt;ww:bean name=<span class="java&#45;quote">&quot;&#039;webwork.util.Counter&#039;&quot;</span> id=<span class="java&#45;quote">&quot;colcounter&quot;</span>&gt;&#10;    	&lt;ww:param name=<span class="java&#45;quote">&quot;&#039;first&#039;&quot;</span> value=<span class="java&#45;quote">&quot;0&quot;</span>/&gt;&#10;    	&lt;ww:param name=<span class="java&#45;quote">&quot;&#039;last&#039;&quot;</span> value=<span class="java&#45;quote">&quot;5&quot;</span>/&gt;&#10;    &lt;/ww:bean&gt;&#10;    &#10;    &lt;ww:iterator value=<span class="java&#45;quote">&quot;#colcounter&quot;</span> status=<span class="java&#45;quote">&quot;colstatus&quot;</span>&gt;&#10;     &lt;&#33;&#45;&#45;&#10;        <span class="java&#45;keyword">if</span> it is (first row) or (first column) or (last row) then&#10;        output the column number.&#10;      &#45;&#45;&gt;&#10;      &lt;ww:<span class="java&#45;keyword">if</span> test=<span class="java&#45;quote">&quot;#rowstatus.first==<span class="java&#45;keyword">true</span> || #colstatus.first==<span class="java&#45;keyword">true</span> || #rowstatus.last==<span class="java&#45;keyword">true</span>&quot;</span>&gt;&#10;        &lt;th&gt;&lt;ww:property value=<span class="java&#45;quote">&quot;#colstatus.count&quot;</span>/&gt;&lt;/th&gt;&#10;      &lt;/ww:<span class="java&#45;keyword">if</span>&gt;&#10;      &#10;      &lt;ww:<span class="java&#45;keyword">else</span>&gt;&#10;        &lt;td&gt;&lt;ww:property/&gt;&lt;/td&gt;&#10;      &lt;/ww:<span class="java&#45;keyword">else</span>&gt;&#10;      &#10;    &lt;/ww:iterator&gt;&#10;&#10;  &lt;/tr&gt;&#10;  &lt;/ww:iterator&gt;&#10;&lt;/table&gt;</pre>
 </div></div><p class="paragraph">Here we use the IteratorStatus determine every other row to insert an extra line break. This is very useful for shading alternate rows in an HTML table. Both even and odd attributes are available.</p><div class="code"><div class="codeContent">
-<pre>&lt;ww:iterator status=<span class="java&#45;quote">&quot;&#039;status&#039;&quot;</span>&gt;&#10;   &lt;ww:<span class="java&#45;keyword">if</span> test=<span class="java&#45;quote">&quot;#status.odd == <span class="java&#45;keyword">true</span>&quot;</span>&gt; &lt;br /&gt; &lt;/ww:<span class="java&#45;keyword">if</span>&gt;&#10;   &lt;br /&gt;&#10;&lt;/ww:iterator&gt; &#10;&#10;Here we use the IteratorStatus determine every fourth row to insert an extra line <span class="java&#45;keyword">break</span>. &#10;&lt;ww:iterator status=<span class="java&#45;quote">&quot;&#039;status&#039;&quot;</span>&gt;&#10;  &lt;ww:<span class="java&#45;keyword">if</span> test=<span class="java&#45;quote">&quot;#status.modulus(4) == 0&quot;</span>&gt; &lt;br /&gt; &lt;/ww:<span class="java&#45;keyword">if</span>&gt;&#10;  &lt;br /&gt;&#10;&lt;/ww:iterator&gt;</pre>
+<pre>&lt;ww:iterator status=<span class="java&#45;quote">&quot;status&quot;</span>&gt;&#10;   &lt;ww:<span class="java&#45;keyword">if</span> test=<span class="java&#45;quote">&quot;#status.odd == <span class="java&#45;keyword">true</span>&quot;</span>&gt; &lt;br /&gt; &lt;/ww:<span class="java&#45;keyword">if</span>&gt;&#10;   &lt;br /&gt;&#10;&lt;/ww:iterator&gt; &#10;&#10;Here we use the IteratorStatus determine every fourth row to insert an extra line <span class="java&#45;keyword">break</span>. &#10;&lt;ww:iterator status=<span class="java&#45;quote">&quot;status&quot;</span>&gt;&#10;  &lt;ww:<span class="java&#45;keyword">if</span> test=<span class="java&#45;quote">&quot;#status.modulus(4) == 0&quot;</span>&gt; &lt;br /&gt; &lt;/ww:<span class="java&#45;keyword">if</span>&gt;&#10;  &lt;br /&gt;&#10;&lt;/ww:iterator&gt;</pre>
 </div></div><p class="paragraph">Following are the list of operations available on the status object:
 <ul class="star">
 <li> even : boolean - returns true if the current iteration is even</li>
 </tr>
 </table><p class="paragraph">In this example, two Iterators are created. One for val=&quot;&#039;foo,bar,xyzzy&#039;&quot; and the other for val=&quot;&#039; &#039;&quot;.</p><div class="code"><div class="codeContent">
 <pre>&lt;h1&gt;Testing append, subset, and value generators&lt;/h1&gt;&#10;&#10;&lt;table border=<span class="java&#45;quote">&quot;1&quot;</span>&gt;&#10;  &lt;ww:bean name=<span class="java&#45;quote">&quot;&#039;webwork.util.Counter&#039;&quot;</span>&gt;&#10;    &lt;ww:param name=<span class="java&#45;quote">&quot;&#039;last&#039;&quot;</span> value=<span class="java&#45;quote">&quot;5&quot;</span>/&gt;&#10;    &lt;ww:iterator id=<span class="java&#45;quote">&quot;colcount&quot;</span>&gt;&#10;      &lt;tr&gt;&#10;&#10;        &lt;&#33;&#45;&#45;&#10;           Generator will create an Iterator that has 5 items.&#10;           The first 3 are <span class="java&#45;quote">&quot;foo,bar,xyzzy&quot;</span>. Item 4 and 5 will be&#10;           foo and bar respectively. If the count is more than&#10;           the items, you start over.&#10;        &#45;&#45;&gt;&#10;        &#10;        &lt;ww:generator val=<span class="java&#45;quote">&quot;&#039;foo,bar,xyzzy&#039;&quot;</span> separator=<span class="java&#45;quote">&quot;&#039;,&#039;&quot;</span> count=<span class="java&#45;quote">&quot;#colcount&quot;</span> id=<span class="java&#45;quote">&quot;values&quot;</span>/&gt;&#10;&#10;       &lt;&#33;&#45;&#45;&#10;           Generator will create an Iterator that has infinite&#10;            . Count=&#45;1 means indefinite.&#10;        &#45;&#45;&gt;&#10;        &lt;ww:generator val=<span class="java&#45;quote">&quot;&#039; &#039;&quot;</span> count=<span class="java&#45;quote">&quot;&#45;1&quot;</span> id=<span class="java&#45;quote">&quot;space&quot;</span>/&gt;&#10;        &lt;ww:append&gt;&#10;          &lt;ww:param name=<span class="java&#45;quote">&quot;&#039;source&#039;&quot;</span> value=<span class="java&#45;quote">&quot;#values&quot;</span>/&gt;&#10;          &lt;ww:param name=<span class="java&#45;quote">&quot;&#039;source&#039;&quot;</span> value=<span class="java&#45;quote">&quot;#space&quot;</span>/&gt;&#10;&#10;          &lt;ww:subset count=<span class="java&#45;quote">&quot;6&quot;</span>&gt;&#10;            &lt;ww:iterator&gt;&#10;              &lt;td width=<span class="java&#45;quote">&quot;40&quot;</span>&gt;&lt;ww:property/&gt;&lt;/td&gt;&#10;            &lt;/ww:iterator&gt;&#10;          &lt;/iterator:subset&gt;&#10;        &lt;/iterator:append&gt;&#10;      &lt;/tr&gt;&#10;    &lt;/ww:iterator&gt;&#10;  &lt;/ww:bean&gt;&#10;&lt;/table&gt;</pre>
-</div></div><p class="paragraph"><img src="./icons/emoticons/warning.png" height="16" width="16" align="absmiddle" alt="" border="0"/> This tag is mostly superfluous, now that we can do this in OGNL:
+</div></div><p class="paragraph"><img class="rendericon" src="./icons/emoticons/warning.png" height="16" width="16" align="absmiddle" alt="" border="0"/> This tag is mostly superfluous, now that we can do this in OGNL:
 <div class="code"><div class="codeContent">
 <pre>&lt;ww:iterator value=<span class="java&#45;quote">&quot;&#123;1, 2, 3, 4&#125;&quot;</span>&gt;&#10;&lt;/ww:iterator&gt;</pre>
 </div></div></p>   <a href="#Non-UITags-top" title="top on Non-UI Tags">return to top</a><br/>
 <td>id</td><td>no</td><td>This attribute assigns a unique name to an element (<a href="#Non-UITags-Notes-Id" title="Notes-Id on Non-UI Tags">note</a>).</td>
 </tr>
 </table><p class="paragraph">In this example, #foo, #bar, and #xyzzy iterators are merged together. So, the output will be foo, bar, xyzzy until #foo and #xyzzy iterators run out in which case #bar will finish.</p><div class="code"><div class="codeContent">
-<pre>Three value generators with merge and subset limits:&lt;br&gt;&#10;&lt;ww:generator val=<span class="java&#45;quote">&quot;&#039;foo&#039;&quot;</span> count=<span class="java&#45;quote">&quot;5&quot;</span> id=<span class="java&#45;quote">&quot;foo&quot;</span>/&gt;&#10;&lt;ww:generator val=<span class="java&#45;quote">&quot;&#039;bar&#039;&quot;</span> count=<span class="java&#45;quote">&quot;10&quot;</span> id=<span class="java&#45;quote">&quot;bar&quot;</span>/&gt;&#10;&lt;ww:generator val=<span class="java&#45;quote">&quot;&#039;xyzzy&#039;&quot;</span> count=<span class="java&#45;quote">&quot;5&quot;</span> id=<span class="java&#45;quote">&quot;xyzzy&quot;</span>/&gt;&#10;&lt;ww:merge&gt;&#10;  &lt;ww:param name=<span class="java&#45;quote">&quot;&#039;source&#039;&quot;</span> value=<span class="java&#45;quote">&quot;#foo&quot;</span>/&gt;&#10;  &lt;ww:param name=<span class="java&#45;quote">&quot;&#039;source&#039;&quot;</span> value=<span class="java&#45;quote">&quot;#bar&quot;</span>/&gt;&#10;  &lt;ww:param name=<span class="java&#45;quote">&quot;&#039;source&#039;&quot;</span> value=<span class="java&#45;quote">&quot;#xyzzy&quot;</span>/&gt;&#10;&#10;  &lt;ww:subset count=<span class="java&#45;quote">&quot;30&quot;</span>&gt;&#10;    &lt;ww:iterator status=<span class="java&#45;quote">&quot;&#039;status&#039;&quot;</span>&gt;&#10;      &lt;ww:property value=<span class="java&#45;quote">&quot;#status.count&quot;</span>/&gt;:&lt;ww:property/&gt;&lt;br&gt;&#10;    &lt;/ww:iterator&gt;&#10;  &lt;/iterator:subset&gt;&#10;&lt;/iterator:merge&gt;</pre>
+<pre>Three value generators with merge and subset limits:&lt;br&gt;&#10;&lt;ww:generator val=<span class="java&#45;quote">&quot;&#039;foo&#039;&quot;</span> count=<span class="java&#45;quote">&quot;5&quot;</span> id=<span class="java&#45;quote">&quot;foo&quot;</span>/&gt;&#10;&lt;ww:generator val=<span class="java&#45;quote">&quot;&#039;bar&#039;&quot;</span> count=<span class="java&#45;quote">&quot;10&quot;</span> id=<span class="java&#45;quote">&quot;bar&quot;</span>/&gt;&#10;&lt;ww:generator val=<span class="java&#45;quote">&quot;&#039;xyzzy&#039;&quot;</span> count=<span class="java&#45;quote">&quot;5&quot;</span> id=<span class="java&#45;quote">&quot;xyzzy&quot;</span>/&gt;&#10;&lt;ww:merge&gt;&#10;  &lt;ww:param name=<span class="java&#45;quote">&quot;&#039;source&#039;&quot;</span> value=<span class="java&#45;quote">&quot;#foo&quot;</span>/&gt;&#10;  &lt;ww:param name=<span class="java&#45;quote">&quot;&#039;source&#039;&quot;</span> value=<span class="java&#45;quote">&quot;#bar&quot;</span>/&gt;&#10;  &lt;ww:param name=<span class="java&#45;quote">&quot;&#039;source&#039;&quot;</span> value=<span class="java&#45;quote">&quot;#xyzzy&quot;</span>/&gt;&#10;&#10;  &lt;ww:subset count=<span class="java&#45;quote">&quot;30&quot;</span>&gt;&#10;    &lt;ww:iterator status=<span class="java&#45;quote">&quot;status&quot;</span>&gt;&#10;      &lt;ww:property value=<span class="java&#45;quote">&quot;#status.count&quot;</span>/&gt;:&lt;ww:property/&gt;&lt;br&gt;&#10;    &lt;/ww:iterator&gt;&#10;  &lt;/iterator:subset&gt;&#10;&lt;/iterator:merge&gt;</pre>
 </div></div><p class="paragraph"><a href="#Non-UITags-top" title="top on Non-UI Tags">return to top</a><br/>
 <a name="Non-UITags-sort"></a>
 <h3 class="heading3"><a name="Non-UITags-%3Cfontcolor%3D%22blue%22%3E%26lt%3Bww%3Asort%2F%26gt%3B%3C%2Ffont%3E"><font color="blue"><b class="strong">&lt;ww:sort /&gt;</b></font></a></h3></p>Sort allows you to sort an iterator. It uses Collections.sort() given the comparator you supply. <br/>
 <pre>&lt;ww:bean name=<span class="java&#45;quote">&quot;&#039;webwork.util.Sorter&#039;&quot;</span> id=<span class="java&#45;quote">&quot;sorter&quot;</span>/&gt;&#10;&#10;Sorting strings:&lt;br&gt;&#10;&lt;ww:generator val=<span class="java&#45;quote">&quot;&#039;Rickard,Maurice,Hristo&#039;&quot;</span> separator=<span class="java&#45;quote">&quot;&#039;,&#039;&quot;</span> id=<span class="java&#45;quote">&quot;names&quot;</span>/&gt;&#10;&lt;ww:sort source=<span class="java&#45;quote">&quot;#names&quot;</span> comparator=<span class="java&#45;quote">&quot;#sorter.ascending&quot;</span>&gt;&#10;  &lt;ww:iterator&gt;&#10;    &lt;ww:property/&gt;&lt;br&gt;&#10;  &lt;/ww:iterator&gt;&#10;&lt;/iterator:sort&gt;</pre>
 </div></div><p class="paragraph"><h2 class="heading2"><a name="Non-UITags-Notes">Notes</a></h2>
 <a name="Non-UITags-NotesId"></a><br/>
-<img src="./icons/emoticons/information.png" height="16" width="16" align="absmiddle" alt="" border="0"/>&#160;<b class="strong">Id</b> The &quot;id&quot; attribute assigns a name to an element. This name must be unique in a document. This attribute is the standard id supported by JSP TagSupport and is therefore always a string.         You do not need to indicate a string literal as you would for the rest of WW attributes; i.e. - id=&quot;&#039;age&#039;&quot;.         Instead you should use id=&quot;age&quot;.</p><a name="Non-UITags-NotesScope"></a><br/>
-<img src="./icons/emoticons/information.png" height="16" width="16" align="absmiddle" alt="" border="0"/> It&#039;s very important to note that all tags that insert something into the valuestack (like i18n or bean tags) will remove those objects from the stack on its end tag.<br/>
+<img class="rendericon" src="./icons/emoticons/information.png" height="16" width="16" align="absmiddle" alt="" border="0"/>&#160;<b class="strong">Id</b> The &quot;id&quot; attribute assigns a name to an element. This name must be unique in a document. This attribute is the standard id supported by JSP TagSupport and is therefore always a string.         You do not need to indicate a string literal as you would for the rest of WW attributes; i.e. - id=&quot;&#039;age&#039;&quot;.         Instead you should use id=&quot;age&quot;.</p><a name="Non-UITags-NotesScope"></a><br/>
+<img class="rendericon" src="./icons/emoticons/information.png" height="16" width="16" align="absmiddle" alt="" border="0"/> It&#039;s very important to note that all tags that insert something into the valuestack (like i18n or bean tags) will remove those objects from the stack on its end tag.<br/>
 So, if you instantiate a bean with the bean tag (&lt;ww:bean name=&quot;&#039;br.univap.fcc.sgpw.util.FormattersHelper&#039;&quot;&gt;) that bean will be avaliable on the valuestack only until the &lt;/ww:bean&gt; tag.
 
 				    
 				<td height="12" background="border/border_bottom.gif"><img src="border/spacer.gif" width="1" height="1" border="0"/></td>
 			</tr>
 		    <tr>
-			    <td align="center"><font color="grey">Document generated by Confluence on Aug 27, 2004 11:46</font></td>
+			    <td align="center"><font color="grey">Document generated by Confluence on Oct 15, 2004 01:45</font></td>
 		    </tr>
 	    </table>
     </body>

docs/wikidocs/OGNL Basics.html

 				<td height="12" background="border/border_bottom.gif"><img src="border/spacer.gif" width="1" height="1" border="0"/></td>
 			</tr>
 		    <tr>
-			    <td align="center"><font color="grey">Document generated by Confluence on Aug 27, 2004 11:46</font></td>
+			    <td align="center"><font color="grey">Document generated by Confluence on Oct 15, 2004 01:45</font></td>
 		    </tr>
 	    </table>
     </body>

docs/wikidocs/OGNL.html

 				<td height="12" background="border/border_bottom.gif"><img src="border/spacer.gif" width="1" height="1" border="0"/></td>
 			</tr>
 		    <tr>
-			    <td align="center"><font color="grey">Document generated by Confluence on Aug 27, 2004 11:46</font></td>
+			    <td align="center"><font color="grey">Document generated by Confluence on Oct 15, 2004 01:45</font></td>
 		    </tr>
 	    </table>
     </body>

docs/wikidocs/Packages.html

 				<td height="12" background="border/border_bottom.gif"><img src="border/spacer.gif" width="1" height="1" border="0"/></td>
 			</tr>
 		    <tr>
-			    <td align="center"><font color="grey">Document generated by Confluence on Aug 27, 2004 11:46</font></td>
+			    <td align="center"><font color="grey">Document generated by Confluence on Oct 15, 2004 01:45</font></td>
 		    </tr>
 	    </table>
     </body>

docs/wikidocs/Pico.html

 				<td height="12" background="border/border_bottom.gif"><img src="border/spacer.gif" width="1" height="1" border="0"/></td>
 			</tr>
 		    <tr>
-			    <td align="center"><font color="grey">Document generated by Confluence on Aug 27, 2004 11:46</font></td>
+			    <td align="center"><font color="grey">Document generated by Confluence on Oct 15, 2004 01:45</font></td>
 		    </tr>
 	    </table>
     </body>

docs/wikidocs/Projects Using WebWork.html

                                                     </span>
 				    </div>
 				    <div class="pagesubheading">
-					    This page last changed on Jun 28, 2004 by <font color="#0050B2">botah</font>.
+					    This page last changed on Sep 28, 2004 by <font color="#0050B2">andiyang</font>.
 				    </div>
 
 				    <ul class="star">
 <li> <a href="http://www.teramedica.com" title="Visit page outside Confluence"> TeraMEDICA</a> -  WebWork is used in TeraMEDICA&#039;s commercial TI2m product, which performs intelligent image management for the healthcare enterprise.  Specifically, WebWork is a key component of the system&#039;s management interface.</li>
 <li> <a href="http://www.ebia.com" title="Visit page outside Confluence">EBIA COBRA and 401K Benefits Site</a> provides law reviews for employee benefits like COBRA and 401K.  The site moved from all struts to a current architecture of about 50% WebWork and 50% Struts. We are trying to move it all over to WebWork.  This site is also a great example of porting from Tiles to SiteMesh.</li>
 </ul>
+<ul class="star">
+<li> <a href="http://www.jieesoft.com/midwinter" title="Visit page outside Confluence"> Midwinter<br/>
+</a> - an open source rapid  web application develop system using WebWork 2.0, Hibernate, Spring, and Velocity
+</li>
+</ul>
 
 				    
                     			    </td>
 				<td height="12" background="border/border_bottom.gif"><img src="border/spacer.gif" width="1" height="1" border="0"/></td>
 			</tr>
 		    <tr>
-			    <td align="center"><font color="grey">Document generated by Confluence on Aug 27, 2004 11:46</font></td>
+			    <td align="center"><font color="grey">Document generated by Confluence on Oct 15, 2004 01:45</font></td>
 		    </tr>
 	    </table>
     </body>

docs/wikidocs/Quartz.html

 				<td height="12" background="border/border_bottom.gif"><img src="border/spacer.gif" width="1" height="1" border="0"/></td>
 			</tr>
 		    <tr>
-			    <td align="center"><font color="grey">Document generated by Confluence on Aug 27, 2004 11:46</font></td>
+			    <td align="center"><font color="grey">Document generated by Confluence on Oct 15, 2004 01:45</font></td>
 		    </tr>
 	    </table>
     </body>

docs/wikidocs/QuickStart.html

 				<td height="12" background="border/border_bottom.gif"><img src="border/spacer.gif" width="1" height="1" border="0"/></td>
 			</tr>
 		    <tr>
-			    <td align="center"><font color="grey">Document generated by Confluence on Aug 27, 2004 11:46</font></td>
+			    <td align="center"><font color="grey">Document generated by Confluence on Oct 15, 2004 01:45</font></td>
 		    </tr>
 	    </table>
     </body>

docs/wikidocs/Release Notes - 2.1.1.html

                     </tr>
                                             <tr class="rowNormal">
                                                             <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/WW-648"><img src="http://jira.opensymphony.com/images/icons/bug.gif" alt="Bug" border="0" /></a>
+                                                                                                                                                                                                                                            </td>
+                                <td nowrap="true">
+                                                                <a href="http://jira.opensymphony.com/browse/WW-648">WW-648</a>
+                                                                                                                                                                                                                        </td>
+                                <td >
+                                                                                    <a href="http://jira.opensymphony.com/browse/WW-648">Client-side validation doesn't allow cancelling</a>
+                                                                                                                                                                                                    </td>
+                            </tr>
+                                    <tr class="rowAlternate">
+                                                            <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/WW-647"><img src="http://jira.opensymphony.com/images/icons/improvement.gif" alt="Improvement" border="0" /></a>
+                                                                                                                                                                                                                                            </td>
+                                <td nowrap="true">
+                                                                <a href="http://jira.opensymphony.com/browse/WW-647">WW-647</a>
+                                                                                                                                                                                                                        </td>
+                                <td >
+                                                                                    <a href="http://jira.opensymphony.com/browse/WW-647">Client-side validation: show all validation errors</a>
+                                                                                                                                                                                                    </td>
+                            </tr>
+                                    <tr class="rowNormal">
+                                                            <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/WW-646"><img src="http://jira.opensymphony.com/images/icons/newfeature.gif" alt="New Feature" border="0" /></a>
+                                                                                                                                                                                                                                            </td>
+                                <td nowrap="true">
+                                                                <a href="http://jira.opensymphony.com/browse/WW-646">WW-646</a>
+                                                                                                                                                                                                                        </td>
+                                <td >
+                                                                                    <a href="http://jira.opensymphony.com/browse/WW-646">HTML Editor Component</a>
+                                                                                                                                                                                                    </td>
+                            </tr>
+                                    <tr class="rowAlternate">
+                                                            <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/WW-635"><img src="http://jira.opensymphony.com/images/icons/bug.gif" alt="Bug" border="0" /></a>
+                                                                                                                                                                                                                                            </td>
+                                <td nowrap="true">
+                                                                <a href="http://jira.opensymphony.com/browse/WW-635">WW-635</a>
+                                                                                                                                                                                                                        </td>
+                                <td >
+                                                                                    <a href="http://jira.opensymphony.com/browse/WW-635">Components and HttpSession persistence/distribution</a>
+                                                                                                                                                                                                    </td>
+                            </tr>
+                                    <tr class="rowNormal">
+                                                            <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/WW-598"><img src="http://jira.opensymphony.com/images/icons/newfeature.gif" alt="New Feature" border="0" /></a>
+                                                                                                                                                                                                                                            </td>
+                                <td nowrap="true">
+                                                                <a href="http://jira.opensymphony.com/browse/WW-598">WW-598</a>
+                                                                                                                                                                                                                        </td>
+                                <td >
+                                                                                    <a href="http://jira.opensymphony.com/browse/WW-598">Add ability to map exceptions to pages (or actions)</a>
+                                                                                                                                                                                                    </td>
+                            </tr>
+                                    <tr class="rowAlternate">
+                                                            <td nowrap="true">
                                             <a href="http://jira.opensymphony.com/browse/WW-596"><img src="http://jira.opensymphony.com/images/icons/bug.gif" alt="Bug" border="0" /></a>
                                                                                                                                                                                                                                             </td>
                                 <td nowrap="true">
                                                                                     <a href="http://jira.opensymphony.com/browse/WW-596">IllegalArgumentException when setting an indexed property</a>
                                                                                                                                                                                                     </td>
                             </tr>
-                                    <tr class="rowAlternate">
+                                    <tr class="rowNormal">
                                                             <td nowrap="true">
                                             <a href="http://jira.opensymphony.com/browse/WW-591"><img src="http://jira.opensymphony.com/images/icons/bug.gif" alt="Bug" border="0" /></a>
                                                                                                                                                                                                                                             </td>
                                                                                     <a href="http://jira.opensymphony.com/browse/WW-591">Wrong output when using nesting #bodytags (with a custom tag)</a>
                                                                                                                                                                                                     </td>
                             </tr>
-                                    <tr class="rowNormal">
+                                    <tr class="rowAlternate">
                                                             <td nowrap="true">
                                             <a href="http://jira.opensymphony.com/browse/WW-589"><img src="http://jira.opensymphony.com/images/icons/improvement.gif" alt="Improvement" border="0" /></a>
                                                                                                                                                                                                                                             </td>
                                                                                     <a href="http://jira.opensymphony.com/browse/WW-589">Printer-friendly of all documentatioon</a>
                                                                                                                                                                                                     </td>
                             </tr>
-                                    <tr class="rowAlternate">
+                                    <tr class="rowNormal">
                                                             <td nowrap="true">
                                             <a href="http://jira.opensymphony.com/browse/WW-588"><img src="http://jira.opensymphony.com/images/icons/bug.gif" alt="Bug" border="0" /></a>
                                                                                                                                                                                                                                             </td>
                                                                                     <a href="http://jira.opensymphony.com/browse/WW-588">Unexpected behaviour of SessionMap.clear()</a>
                                                                                                                                                                                                     </td>
                             </tr>
-                                    <tr class="rowNormal">
+                                    <tr class="rowAlternate">
                                                             <td nowrap="true">
                                             <a href="http://jira.opensymphony.com/browse/WW-585"><img src="http://jira.opensymphony.com/images/icons/improvement.gif" alt="Improvement" border="0" /></a>
                                                                                                                                                                                                                                             </td>
                                                                                     <a href="http://jira.opensymphony.com/browse/WW-585">ComboBoxTag should sublass TextFieldTag</a>
                                                                                                                                                                                                     </td>
                             </tr>
-                                    <tr class="rowAlternate">
+                                    <tr class="rowNormal">
                                                             <td nowrap="true">
                                             <a href="http://jira.opensymphony.com/browse/WW-581"><img src="http://jira.opensymphony.com/images/icons/improvement.gif" alt="Improvement" border="0" /></a>
                                                                                                                                                                                                                                             </td>
                                                                                     <a href="http://jira.opensymphony.com/browse/WW-581">JSP Tags should support better syntax</a>
                                                                                                                                                                                                     </td>
                             </tr>
-                                    <tr class="rowNormal">
+                                    <tr class="rowAlternate">
                                                             <td nowrap="true">
                                             <a href="http://jira.opensymphony.com/browse/WW-574"><img src="http://jira.opensymphony.com/images/icons/newfeature.gif" alt="New Feature" border="0" /></a>
                                                                                                                                                                                                                                             </td>
                                                                                     <a href="http://jira.opensymphony.com/browse/WW-574">ActionButton and ActionLink UI tags</a>
                                                                                                                                                                                                     </td>
                             </tr>
-                                    <tr class="rowAlternate">
-                                                            <td nowrap="true">
-                                            <a href="http://jira.opensymphony.com/browse/WW-572"><img src="http://jira.opensymphony.com/images/icons/bug.gif" alt="Bug" border="0" /></a>
-                                                                                                                                                                                                                                            </td>
-                                <td nowrap="true">
-                                                                <a href="http://jira.opensymphony.com/browse/WW-572">WW-572</a>
-                                                                                                                                                                                                                        </td>
-                                <td >
-                                                                                    <a href="http://jira.opensymphony.com/browse/WW-572">Lesson 2 incorrectly references the xwork-validator-1.0.dtd for validators.xml</a>
-                                                                                                                                                                                                    </td>
-                            </tr>
                                     <tr class="rowNormal">
                                                             <td nowrap="true">
                                             <a href="http://jira.opensymphony.com/browse/WW-570"><img src="http://jira.opensymphony.com/images/icons/bug.gif" alt="Bug" border="0" /></a>
                                                                                     <a href="http://jira.opensymphony.com/browse/WW-520">Wrong &amp;amp; management in XML based output (WML and XHTML)</a>
                                                                                                                                                                                                     </td>
                             </tr>
-                                    <tr class="rowAlternate">
-                                                            <td nowrap="true">
-                                            <a href="http://jira.opensymphony.com/browse/WW-513"><img src="http://jira.opensymphony.com/images/icons/bug.gif" alt="Bug" border="0" /></a>
-                                                                                                                                                                                                                                            </td>
-                                <td nowrap="true">
-                                                                <a href="http://jira.opensymphony.com/browse/WW-513">WW-513</a>
-                                                                                                                                                                                                                        </td>
-                                <td >
-                                                                                    <a href="http://jira.opensymphony.com/browse/WW-513">IOC Application and Session scopes do not work in Tomcat 5</a>
-                                                                                                                                                                                                    </td>
-                            </tr>
-                                    <tr class="rowNormal">
-                                                            <td nowrap="true">
-                                            <a href="http://jira.opensymphony.com/browse/WW-511"><img src="http://jira.opensymphony.com/images/icons/improvement.gif" alt="Improvement" border="0" /></a>
-                                                                                                                                                                                                                                            </td>
-                                <td nowrap="true">
-                                                                <a href="http://jira.opensymphony.com/browse/WW-511">WW-511</a>
-                                                                                                                                                                                                                        </td>
-                                <td >
-                                                                                    <a href="http://jira.opensymphony.com/browse/WW-511">Support a list of resource bundles on i18n tag</a>
-                                                                                                                                                                                                    </td>
-                            </tr>
-                                    <tr class="rowAlternate">
-                                                            <td nowrap="true">
-                                            <a href="http://jira.opensymphony.com/browse/WW-507"><img src="http://jira.opensymphony.com/images/icons/bug.gif" alt="Bug" border="0" /></a>
-                                                                                                                                                                                                                                            </td>
-                                <td nowrap="true">
-                                                                <a href="http://jira.opensymphony.com/browse/WW-507">WW-507</a>
-                                                                                                                                                                                                                        </td>
-                                <td >
-                                                                                    <a href="http://jira.opensymphony.com/browse/WW-507">&quot;command&quot; parameter isn't honored for command driven actions</a>
-                                                                                                                                                                                                    </td>
-                            </tr>
-                                    <tr class="rowNormal">
-                                                            <td nowrap="true">
-                                            <a href="http://jira.opensymphony.com/browse/WW-506"><img src="http://jira.opensymphony.com/images/icons/newfeature.gif" alt="New Feature" border="0" /></a>
-                                                                                                                                                                                                                                            </td>
-                                <td nowrap="true">
-                                                                <a href="http://jira.opensymphony.com/browse/WW-506">WW-506</a>
-                                                                                                                                                                                                                        </td>
-                                <td >
-                                                                                    <a href="http://jira.opensymphony.com/browse/WW-506">Param tag should try to get parameters from the original request as well</a>
-                                                                                                                                                                                                    </td>
-                            </tr>
             </table>
 </p>
 <p class="paragraph"><h4 class="heading4"><a name="ReleaseNotes-2.1.1-Xwork1.0.2"> Xwork 1.0.2</a></h4>
 				<td height="12" background="border/border_bottom.gif"><img src="border/spacer.gif" width="1" height="1" border="0"/></td>
 			</tr>
 		    <tr>
-			    <td align="center"><font color="grey">Document generated by Confluence on Aug 27, 2004 11:46</font></td>
+			    <td align="center"><font color="grey">Document generated by Confluence on Oct 15, 2004 01:45</font></td>
 		    </tr>
 	    </table>
     </body>

docs/wikidocs/Release Notes - 2.1.2.html

+<html>
+    <head>
+        <title>WebWork 2 : Release Notes - 2.1.2</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">
+				    <div class="pageheader">
+					    <span class="pagetitle">
+                            WebWork 2 : Release Notes - 2.1.2
+                                                    </span>
+				    </div>
+				    <div class="pagesubheading">
+					    This page last changed on Oct 15, 2004 by <font color="#0050B2">plightbo</font>.
+				    </div>
+
+				    <p class="paragraph"><h2 style="margin: 4px 0px 4px 0px;" class="heading2"><a name="ReleaseNotes-2.1.2-WebWork2.1.2ReleaseNotes"> WebWork 2.1.2 Release Notes</a></h2></p><h3 class="heading3"><a name="ReleaseNotes-2.1.2-KeyChanges"> Key Changes</a></h3>
+<ul class="star">
+<li> This version ships with XWork 1.0.3 &#8211; we recommend you make sure you are running this version (or later) of XWork.</li>
+<li> Minor bug fixes for file upload support with Jakarta</li>
+<li> New StreamResult type which allows you to stream content directly back from an action</li>
+<li> UI tags may now be written in languages other than Velocity. JSP is supported, though you currently must write your own templates similar to the Velocity templates. Future versions of WebWork will include more languages supported as well as templates shippped out of the box.</li>
+</ul>
+<h3 class="heading3"><a name="ReleaseNotes-2.1.2-MigrationNotes"> Migration Notes</a></h3><p class="paragraph">Migration should require nothing more than copying over the new libs. Specifically note that XWork 1.0.3 and WebWork 2.1.2 should be copied over.</p><h3 class="heading3"><a name="ReleaseNotes-2.1.2-Changelog"> Changelog</a></h3><p class="paragraph"><p>
+    <table  width="100%" cellspacing="0" class="grid">
+        <tr>
+            <th colspan="3" style="text-align: left;">
+                <a href="http://jira.opensymphony.com">OpenSymphony JIRA</a>
+                <span class="smalltext">(14 issues)</span>
+            </th>
+        </tr>
+        <tr>
+                        <th style="text-align: left;">
+                T                                                                                                                                                                            </th>
+                        <th style="text-align: left;">
+                                Key                                                                                                                                                            </th>
+                        <th style="text-align: left;">
+                                                Summary                                                                                                                                            </th>
+                    </tr>
+                                            <tr class="rowNormal">
+                                                            <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/WW-642"><img src="http://jira.opensymphony.com/images/icons/improvement.gif" alt="Improvement" border="0" /></a>
+                                                                                                                                                                                                                                            </td>
+                                <td nowrap="true">
+                                                                <a href="http://jira.opensymphony.com/browse/WW-642">WW-642</a>
+                                                                                                                                                                                                                        </td>
+                                <td >
+                                                                                    <a href="http://jira.opensymphony.com/browse/WW-642">Allow the 'name' attribute of the TextTag to be evaluated at runtime</a>
+                                                                                                                                                                                                    </td>
+                            </tr>
+                                    <tr class="rowAlternate">
+                                                            <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/WW-639"><img src="http://jira.opensymphony.com/images/icons/bug.gif" alt="Bug" border="0" /></a>
+                                                                                                                                                                                                                                            </td>
+                                <td nowrap="true">
+                                                                <a href="http://jira.opensymphony.com/browse/WW-639">WW-639</a>
+                                                                                                                                                                                                                        </td>
+                                <td >
+                                                                                    <a href="http://jira.opensymphony.com/browse/WW-639">&quot;Could not open template &quot;, possible a bug</a>
+                                                                                                                                                                                                    </td>
+                            </tr>
+                                    <tr class="rowNormal">
+                                                            <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/WW-634"><img src="http://jira.opensymphony.com/images/icons/improvement.gif" alt="Improvement" border="0" /></a>
+                                                                                                                                                                                                                                            </td>
+                                <td nowrap="true">
+                                                                <a href="http://jira.opensymphony.com/browse/WW-634">WW-634</a>
+                                                                                                                                                                                                                        </td>
+                                <td >
+                                                                                    <a href="http://jira.opensymphony.com/browse/WW-634">File Upload Interceptor stack</a>
+                                                                                                                                                                                                    </td>
+                            </tr>
+                                    <tr class="rowAlternate">
+                                                            <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/WW-633"><img src="http://jira.opensymphony.com/images/icons/bug.gif" alt="Bug" border="0" /></a>
+                                                                                                                                                                                                                                            </td>
+                                <td nowrap="true">
+                                                                <a href="http://jira.opensymphony.com/browse/WW-633">WW-633</a>
+                                                                                                                                                                                                                        </td>
+                                <td >
+                                                                                    <a href="http://jira.opensymphony.com/browse/WW-633">Jakarta File Upload fails with mixed content (normal and file)</a>
+                                                                                                                                                                                                    </td>
+                            </tr>
+                                    <tr class="rowNormal">
+                                                            <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/WW-630"><img src="http://jira.opensymphony.com/images/icons/newfeature.gif" alt="New Feature" border="0" /></a>
+                                                                                                                                                                                                                                            </td>
+                                <td nowrap="true">
+                                                                <a href="http://jira.opensymphony.com/browse/WW-630">WW-630</a>
+                                                                                                                                                                                                                        </td>
+                                <td >
+                                                                                    <a href="http://jira.opensymphony.com/browse/WW-630">upload newest webwork files to ibiblio</a>
+                                                                                                                                                                                                    </td>
+                            </tr>
+                                    <tr class="rowAlternate">
+                                                            <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/WW-629"><img src="http://jira.opensymphony.com/images/icons/improvement.gif" alt="Improvement" border="0" /></a>
+                                                                                                                                                                                                                                            </td>
+                                <td nowrap="true">
+                                                                <a href="http://jira.opensymphony.com/browse/WW-629">WW-629</a>
+                                                                                                                                                                                                                        </td>
+                                <td >
+                                                                                    <a href="http://jira.opensymphony.com/browse/WW-629">checkboxlist doesn't have a disabled attribute tag</a>
+                                                                                                                                                                                                    </td>
+                            </tr>
+                                    <tr class="rowNormal">
+                                                            <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/WW-628"><img src="http://jira.opensymphony.com/images/icons/bug.gif" alt="Bug" border="0" /></a>
+                                                                                                                                                                                                                                            </td>
+                                <td nowrap="true">
+                                                                <a href="http://jira.opensymphony.com/browse/WW-628">WW-628</a>
+                                                                                                                                                                                                                        </td>
+                                <td >
+                                                                                    <a href="http://jira.opensymphony.com/browse/WW-628">Bug with request parameter handling with WebLogic 8.1sp3</a>
+                                                                                                                                                                                                    </td>
+                            </tr>
+                                    <tr class="rowAlternate">
+                                                            <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/WW-624"><img src="http://jira.opensymphony.com/images/icons/bug.gif" alt="Bug" border="0" /></a>
+                                                                                                                                                                                                                                            </td>
+                                <td nowrap="true">
+                                                                <a href="http://jira.opensymphony.com/browse/WW-624">WW-624</a>
+                                                                                                                                                                                                                        </td>
+                                <td >
+                                                                                    <a href="http://jira.opensymphony.com/browse/WW-624">If/Else tag do not render body</a>
+                                                                                                                                                                                                    </td>
+                            </tr>
+                                    <tr class="rowNormal">
+                                                            <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/WW-622"><img src="http://jira.opensymphony.com/images/icons/bug.gif" alt="Bug" border="0" /></a>
+                                                                                                                                                                                                                                            </td>
+                                <td nowrap="true">
+                                                                <a href="http://jira.opensymphony.com/browse/WW-622">WW-622</a>
+                                                                                                                                                                                                                        </td>
+                                <td >
+                                                                                    <a href="http://jira.opensymphony.com/browse/WW-622">The changelog for WW2.1.1 shows open issues not the closed ones!</a>
+                                                                                                                                                                                                    </td>
+                            </tr>
+                                    <tr class="rowAlternate">
+                                                            <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/WW-616"><img src="http://jira.opensymphony.com/images/icons/bug.gif" alt="Bug" border="0" /></a>
+                                                                                                                                                                                                                                            </td>
+                                <td nowrap="true">
+                                                                <a href="http://jira.opensymphony.com/browse/WW-616">WW-616</a>
+                                                                                                                                                                                                                        </td>
+                                <td >
+                                                                                    <a href="http://jira.opensymphony.com/browse/WW-616">ww:label and ww:textarea problem with null values</a>
+                                                                                                                                                                                                    </td>
+                            </tr>
+                                    <tr class="rowNormal">
+                                                            <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/WW-612"><img src="http://jira.opensymphony.com/images/icons/bug.gif" alt="Bug" border="0" /></a>
+                                                                                                                                                                                                                                            </td>
+                                <td nowrap="true">
+                                                                <a href="http://jira.opensymphony.com/browse/WW-612">WW-612</a>
+                                                                                                                                                                                                                        </td>
+                                <td >
+                                                                                    <a href="http://jira.opensymphony.com/browse/WW-612">WebworkStatistics.SERVLET_DISPATCHER is spelled incorrectly</a>
+                                                                                                                                                                                                    </td>
+                            </tr>
+                                    <tr class="rowAlternate">
+                                                            <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/WW-611"><img src="http://jira.opensymphony.com/images/icons/bug.gif" alt="Bug" border="0" /></a>
+                                                                                                                                                                                                                                            </td>
+                                <td nowrap="true">
+                                                                <a href="http://jira.opensymphony.com/browse/WW-611">WW-611</a>
+                                                                                                                                                                                                                        </td>
+                                <td >
+                                                                                    <a href="http://jira.opensymphony.com/browse/WW-611">Error in Freemarker docs</a>
+                                                                                                                                                                                                    </td>
+                            </tr>
+                                    <tr class="rowNormal">
+                                                            <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/WW-602"><img src="http://jira.opensymphony.com/images/icons/newfeature.gif" alt="New Feature" border="0" /></a>
+                                                                                                                                                                                                                                            </td>
+                                <td nowrap="true">
+                                                                <a href="http://jira.opensymphony.com/browse/WW-602">WW-602</a>
+                                                                                                                                                                                                                        </td>
+                                <td >
+                                                                                    <a href="http://jira.opensymphony.com/browse/WW-602">Stream Result Type</a>
+                                                                                                                                                                                                    </td>
+                            </tr>
+                                    <tr class="rowAlternate">
+                                                            <td nowrap="true">
+                                            <a href="http://jira.opensymphony.com/browse/WW-485"><img src="http://jira.opensymphony.com/images/icons/task.gif" alt="Task" border="0" /></a>
+                                                                                                                                                                                                                                            </td>
+                                <td nowrap="true">
+                                                                <a href="http://jira.opensymphony.com/browse/WW-485">WW-485</a>
+                                                                                                                                                                                                                        </td>
+                                <td >
+                                                                                    <a href="http://jira.opensymphony.com/browse/WW-485">Add docs for WebWork2 tags</a>
+                                                                                                                                                                                                    </td>
+                            </tr>
+            </table>
+</p>
+</p>
+
+				    
+                    			    </td>
+		    </tr>
+	    </table>
+	    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+			<tr>
+				<td height="12" background="border/border_bottom.gif"><img src="border/spacer.gif" width="1" height="1" border="0"/></td>
+			</tr>
+		    <tr>
+			    <td align="center"><font color="grey">Document generated by Confluence on Oct 15, 2004 01:45</font></td>
+		    </tr>
+	    </table>
+    </body>
+</html>

docs/wikidocs/Release Notes - 2.1.html

 				<td height="12" background="border/border_bottom.gif"><img src="border/spacer.gif" width="1" height="1" border="0"/></td>
 			</tr>
 		    <tr>
-			    <td align="center"><font color="grey">Document generated by Confluence on Aug 27, 2004 11:46</font></td>
+			    <td align="center"><font color="grey">Document generated by Confluence on Oct 15, 2004 01:45</font></td>
 		    </tr>
 	    </table>
     </body>

docs/wikidocs/Reloading configuration.html

 				<td height="12" background="border/border_bottom.gif"><img src="border/spacer.gif" width="1" height="1" border="0"/></td>
 			</tr>
 		    <tr>
-			    <td align="center"><font color="grey">Document generated by Confluence on Aug 27, 2004 11:46</font></td>
+			    <td align="center"><font color="grey">Document generated by Confluence on Oct 15, 2004 01:45</font></td>
 		    </tr>
 	    </table>
     </body>

docs/wikidocs/Result Types.html

                                                     </span>
 				    </div>
 				    <div class="pagesubheading">
-					    This page last changed on Jun 11, 2004 by <font color="#0050B2">mbogaert</font>.
+					    This page last changed on Sep 10, 2004 by <font color="#0050B2">casey</font>.
 				    </div>
 
 				    <p class="paragraph"><h2 style="margin: 4px 0px 4px 0px;" class="heading2"><a name="ResultTypes-Overview">  Overview</a></h2></p><b class="strong">Result Types</b> are classes that determine what happens after an Action executes and a Result is returned. Developers are free to create their own Result Types according to the needs of their application or environment. In WebWork 2 for example, Servlet and Velocity Result Types have been created to handle rendering views in web applications.<p class="paragraph"><ins class="inserted">Note:</ins> All built in webwork result types implement the <tt class="monospaced">com.opensymphony.xwork.Result</tt> interface, which represents a generic interface for all action execution results, whether that be displaying a webpage, generating an email, sending a JMS message, etc.</p>Result types define classes and map them to names to be referred in the action configuration results. This serves as a shorthand name-value pair for these classes. 
 </tr><tr>
 <td> actionName </td><td> <b class="strong">yes</b> </td><td> the name of the action that will be chained to</td>
 </tr><tr>
-<td> namespace </td><td> no </td><td> sets the namespace of the Action that we&#039;re chaining to.  If namespace is null, this defaults to the current namespace. </td><td>
+<td> namespace </td><td> no </td><td> sets the namespace of the Action that we&#039;re chaining to.  If namespace is null, this defaults to the current namespace. </td>
+</tr>
+</table>
 <div class="code"><div class="codeContent">
 <pre>&lt;result name=<span class="java&#45;quote">&quot;success&quot;</span> type=<span class="java&#45;quote">&quot;chain&quot;</span>&gt;&#10;    &lt;param name=<span class="java&#45;quote">&quot;actionName&quot;</span>&gt;bar&lt;/param&gt;&#10;    &lt;param name=<span class="java&#45;quote">&quot;namespace&quot;</span>&gt;/foo&lt;/param&gt;&#10;&lt;/result&gt;</pre>
 </div></div><br/>
 invokes this
 <div class="code"><div class="codeContent">
 <pre>&lt;action name=<span class="java&#45;quote">&quot;bar&quot;</span> class=<span class="java&#45;quote">&quot;myPackage.barAction&quot;</span>&gt;&#10;    ...&#10;&lt;/action&gt;</pre>
-</div></div></td>
-</tr>
-</table>
-<h4 class="heading4"><a name="ResultTypes-Velocity%3Caname%3D%22ResultTypesVelocity%22%3E%3C%2Fa%3E"> Velocity <a name="ResultTypes-Velocity"></a></a></h4><p class="paragraph">This result mocks a JSP execution environment and then displays a Velocity template that will be streamed directly to the servlet output.</p><table class="wikitable">
+</div></div><p class="paragraph"><h4 class="heading4"><a name="ResultTypes-Velocity%3Caname%3D%22ResultTypesVelocity%22%3E%3C%2Fa%3E"> Velocity <a name="ResultTypes-Velocity"></a></a></h4></p>This result mocks a JSP execution environment and then displays a Velocity template that will be streamed directly to the servlet output.<br/>
+
+<table class="wikitable">
 <tr>
 <th>Parameters </th><th> Required </th><th> Description </th>
 </tr><tr>
 </tr><tr>
 <td> parse </td><td> no </td><td> true by default. If set to false, the location param will not be parsed for Ognl expressions </td>
 </tr><tr>
-<td> contentType </td><td> no </td><td> defaults to &quot;text/html&quot; unless specified </td><td>
-<div class="code"><div class="codeContent">
-<pre>&lt;result name=<span class="java&#45;quote">&quot;success&quot;</span> type=<span class="java&#45;quote">&quot;freemarker&quot;</span>&gt;foo.ftl&lt;/result&gt;</pre>
-</div></div></td>
+<td> contentType </td><td> no </td><td> defaults to &quot;text/html&quot; unless specified </td>
 </tr>
 </table>
-<h4 class="heading4"><a name="ResultTypes-JasperReports%3Caname%3D%22ResultTypesJasperReports%22%3E%3C%2Fa%3E"> JasperReports <a name="ResultTypes-JasperReports"></a></a></h4><p class="paragraph">Generates a JasperReports report using the specified format or PDF if no format is specified.</p><table class="wikitable">
+<div class="code"><div class="codeContent">
+<pre>&lt;result name=<span class="java&#45;quote">&quot;success&quot;</span> type=<span class="java&#45;quote">&quot;freemarker&quot;</span>&gt;foo.ftl&lt;/result&gt;</pre>
+</div></div><p class="paragraph"><h4 class="heading4"><a name="ResultTypes-JasperReports%3Caname%3D%22ResultTypesJasperReports%22%3E%3C%2Fa%3E"> JasperReports <a name="ResultTypes-JasperReports"></a></a></h4></p>Generates a JasperReports report using the specified format or PDF if no format is specified.<br/>
+
+<table class="wikitable">
 <tr>
 <th>Parameters </th><th> Required </th><th> Description </th>
 </tr><tr>
 				<td height="12" background="border/border_bottom.gif"><img src="border/spacer.gif" width="1" height="1" border="0"/></td>
 			</tr>
 		    <tr>
-			    <td align="center"><font color="grey">Document generated by Confluence on Aug 27, 2004 11:46</font></td>
+			    <td align="center"><font color="grey">Document generated by Confluence on Oct 15, 2004 01:45</font></td>
 		    </tr>
 	    </table>
     </body>

docs/wikidocs/Results.html

 				<td height="12" background="border/border_bottom.gif"><img src="border/spacer.gif" width="1" height="1" border="0"/></td>
 			</tr>
 		    <tr>
-			    <td align="center"><font color="grey">Document generated by Confluence on Aug 27, 2004 11:46</font></td>
+			    <td align="center"><font color="grey">Document generated by Confluence on Oct 15, 2004 01:45</font></td>
 		    </tr>
 	    </table>
     </body>

docs/wikidocs/Simple validators.html

 				<td height="12" background="border/border_bottom.gif"><img src="border/spacer.gif" width="1" height="1" border="0"/></td>
 			</tr>
 		    <tr>
-			    <td align="center"><font color="grey">Document generated by Confluence on Aug 27, 2004 11:46</font></td>
+			    <td align="center"><font color="grey">Document generated by Confluence on Oct 15, 2004 01:45</font></td>
 		    </tr>
 	    </table>
     </body>

docs/wikidocs/Sitemesh.html

 				<td height="12" background="border/border_bottom.gif"><img src="border/spacer.gif" width="1" height="1" border="0"/></td>
 			</tr>
 		    <tr>
-			    <td align="center"><font color="grey">Document generated by Confluence on Aug 27, 2004 11:46</font></td>
+			    <td align="center"><font color="grey">Document generated by Confluence on Oct 15, 2004 01:45</font></td>
 		    </tr>
 	    </table>
     </body>

docs/wikidocs/Spring.html

 				<td height="12" background="border/border_bottom.gif"><img src="border/spacer.gif" width="1" height="1" border="0"/></td>
 			</tr>
 		    <tr>
-			    <td align="center"><font color="grey">Document generated by Confluence on Aug 27, 2004 11:46</font></td>
+			    <td align="center"><font color="grey">Document generated by Confluence on Oct 15, 2004 01:45</font></td>
 		    </tr>
 	    </table>
     </body>

docs/wikidocs/Templates.html

                                                     </span>
 				    </div>
 				    <div class="pagesubheading">
-					    This page last changed on Jun 16, 2004 by <font color="#0050B2">casey</font>.
+					    This page last changed on Sep 10, 2004 by <font color="#0050B2">casey</font>.
 				    </div>
 
 				    <p class="paragraph"><h3 style="margin: 4px 0px 4px 0px;" class="heading3"><a name="Templates-Overview"> Overview</a></h3></p>In WebWork, the UI tags wrap generic HTML controls while providing tight integration with the core framework. The tags have been designed to minimize the amount of logic in compiled code and delegate the actual rendering of HTML to a template system. Templates can be grouped together and seperated into different <a href="themes.html" title="Themes">themes</a>.  The UI tags attempt to cover the most common scenarios, while providing a Component Tag for creating custom components. The UI tags also provide built-in support for displaying inline error messages.
-<h4 class="heading4"><a name="Templates-Templates"> Templates</a></h4><p class="paragraph">WebWork uses the Velocity template system to render the actual HTML output for all UI tags (jsp and velocity). A default implementation of all templates has been included with the core distribution allowing users to use WebWork&#039;s UI tags &quot;out of the box&quot;. Templates can be edited individually or replaced entirely allowing for complete customization of the resulting HTML output. In addition, the default template can be overridden on a per tag basis allowing for a very fine level of control.</p>The templates can be found in the distribution package in a directory called <tt class="monospaced">template</tt> under the <tt class="monospaced">src</tt> directory or in the webwork-x.x.jar file.  Copy the template directory into the root directory of your application.  Otherwise, webwork will load the templates in the jar file.
+<h4 class="heading4"><a name="Templates-Templates"> Templates</a></h4><p class="paragraph">WebWork uses the Velocity template system to render the actual HTML output for all UI tags (jsp and velocity). A default implementation of all templates has been included with the core distribution allowing users to use WebWork&#039;s UI tags &quot;out of the box&quot;. Templates can be edited individually or replaced entirely allowing for complete customization of the resulting HTML output. In addition, the default template can be overridden on a per tag basis allowing for a very fine level of control.</p>The templates can be found in the distribution package in a directory called <tt class="monospaced">template</tt> under the <tt class="monospaced">src/java</tt> directory or in the webwork-x.x.jar file.  For template customization, copy the <tt class="monospaced">template</tt> directory into the root directory of your application or place it in the classpath.  Webwork will attempt to load the templates from those two places first. Otherwise, the templates will be loaded from the webwork jar file.
 <div class="code"><div class="codeContent">
 <pre>/myApp&#10;      /META&#45;INF&#10;      /WEB&#45;INF&#10;      /template</pre>
 </div></div><p class="paragraph">Inside the <tt class="monospaced">template</tt> directory, you will find two template sets called <a href="Themes.html" title="Themes">Themes</a> (xhtml and simple).  The default template set that is used with UI tags is <a href="Themes.html#Themes-xhtml" title="xhtml on Themes">xhtml</a> unless specified by the theme attribute in your UI tag or in the <a href="webwork.properties.html" title="webwork.properties">webwork.properties</a> file with the webwork.ui.theme variable.  You can modify the pre-existing templates or create your own.</p>The AbstractUI class is the base class that other UI tags extend. It provides a set of attributes that are common across UI components. The AbstractUI class defines an abstract method:<br/>
 				<td height="12" background="border/border_bottom.gif"><img src="border/spacer.gif" width="1" height="1" border="0"/></td>
 			</tr>
 		    <tr>
-			    <td align="center"><font color="grey">Document generated by Confluence on Aug 27, 2004 11:46</font></td>
+			    <td align="center"><font color="grey">Document generated by Confluence on Oct 15, 2004 01:45</font></td>
 		    </tr>
 	    </table>
     </body>

docs/wikidocs/Testimonials.html

+<html>
+    <head>
+        <title>WebWork 2 : Testimonials</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">
+				    <div class="pageheader">
+					    <span class="pagetitle">
+                            WebWork 2 : Testimonials
+                                                    </span>
+				    </div>
+				    <div class="pagesubheading">
+					    This page last changed on Sep 30, 2004 by <font color="#0050B2">botah</font>.
+				    </div>
+
+				    <p class="paragraph">&quot;WebWork rocks! We use it for our <a href="http://www.agileedge.com" title="Visit page outside Confluence">Bug Tracker</a> and for several of our clients.  We have moved several sites from Struts to WebWork. I love it.  Another site we work with for <a href="http://www.surveyconsole.com" title="Visit page outside Confluence">Survey Software</a> is also moving off of Struts to WebWork.  Everything is easier in WW, especially with the power of Interceptors!!!&quot;</p><b class="strong">Mike Porter, Architect, eSage Group</b><br/>
+<a href="http://www.esagegroup.com" title="Visit page outside Confluence">&#104;ttp://www.esagegroup.com</a>&#160;<br/>
+
+<p class="paragraph">&quot;<em class="emphasis">Two years ago we dediced to use WebWork instead of Struts because of it&#039;s technical superiority and it proved to be an excellent decision. WebWork is successfully used by productive customer applications running with WebLogic and Tomcat. A major project will be migrated to the newest XWork/WebWork versions in the next 6 months. Besides it&#039;s technical advantages, XWork/WebWork has a smart and extremely skilled developer team and a healthy community.</em>&quot;</p><b class="strong">Lars Fischer, Project Manager, Compudata AG Switzerland</b><br/>
+<a href="http://www.compudata.ch" title="Visit page outside Confluence">&#104;ttp://www.compudata.ch</a>
+
+				    
+                    			    </td>
+		    </tr>
+	    </table>
+	    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+			<tr>
+				<td height="12" background="border/border_bottom.gif"><img src="border/spacer.gif" width="1" height="1" border="0"/></td>
+			</tr>
+		    <tr>
+			    <td align="center"><font color="grey">Document generated by Confluence on Oct 15, 2004 01:45</font></td>
+		    </tr>
+	    </table>
+    </body>
+</html>

docs/wikidocs/Themes.html

 				<td height="12" background="border/border_bottom.gif"><img src="border/spacer.gif" width="1" height="1" border="0"/></td>
 			</tr>
 		    <tr>
-			    <td align="center"><font color="grey">Document generated by Confluence on Aug 27, 2004 11:46</font></td>
+			    <td align="center"><font color="grey">Document generated by Confluence on Oct 15, 2004 01:45</font></td>
 		    </tr>
 	    </table>
     </body>

docs/wikidocs/TutorialEnd.html

 				<td height="12" background="border/border_bottom.gif"><img src="border/spacer.gif" width="1" height="1" border="0"/></td>
 			</tr>
 		    <tr>
-			    <td align="center"><font color="grey">Document generated by Confluence on Aug 27, 2004 11:46</font></td>
+			    <td align="center"><font color="grey">Document generated by Confluence on Oct 15, 2004 01:45</font></td>
 		    </tr>
 	    </table>
     </body>

docs/wikidocs/TutorialExamples.html

                                                     </span>
 				    </div>
 				    <div class="pagesubheading">
-					    This page last changed on Jun 09, 2004 by <font color="#0050B2">vitorsouza</font>.
+					    This page last changed on Sep 16, 2004 by <font color="#0050B2">vitorsouza</font>.
 				    </div>
 
-				    <p class="paragraph"><h1 style="margin: 4px 0px 4px 0px;" class="heading1"><a name="TutorialExamples-WebWorkTutorial%26%23039%3BsExamples"> WebWork Tutorial&#039;s Examples</a></h1></p>The examples supplied in this tutorial are available as a Web Application for you to deploy and run. Download <tt class="monospaced">wwtutorialexamples.war</tt> below and install it in your Servlet Container. You can also extract the files from the archive using your favorite Zip software.<p class="paragraph"><a href="" title="wwtutorialexamples.war attached to TutorialExamples">wwtutorialexamples.war</a></p>
+				    <p class="paragraph"><h1 style="margin: 4px 0px 4px 0px;" class="heading1"><a name="TutorialExamples-WebWorkTutorial%26%23039%3BsExamples"> WebWork Tutorial&#039;s Examples</a></h1></p>The examples supplied in this tutorial are available as a Web Application for you to deploy and run. The file is included in WebWork&#039;s binary distribution under the <tt class="monospaced">/docs/tutorial</tt> folder. You can either deploy it on your Servlet Container or extract the files from the archive using your favorite Zip software.
 
-				    					    <br/>
-                        <div class="tabletitle">
-                            <a name="attachments">Attachments:</a>
-                        </div>
 
-                        <div class="greybox" align="left">
-                                                            <img src="icons/bullet_blue.gif" height="8" width="8" alt=""/>
-                                <a href="TutorialExamples_attachments/wwtutorialexamples.war">wwtutorialexamples.war</a> (application/x-zip-compressed)
-                                <br/>
-                                                    </div>
 				    
                     			    </td>
 		    </tr>
 				<td height="12" background="border/border_bottom.gif"><img src="border/spacer.gif" width="1" height="1" border="0"/></td>
 			</tr>
 		    <tr>
-			    <td align="center"><font color="grey">Document generated by Confluence on Aug 27, 2004 11:46</font></td>
+			    <td align="center"><font color="grey">Document generated by Confluence on Oct 15, 2004 01:45</font></td>
 		    </tr>
 	    </table>
     </body>

docs/wikidocs/TutorialLesson01.html

                                                     </span>
 				    </div>
 				    <div class="pagesubheading">
-					    This page last changed on Jun 14, 2004 by <font color="#0050B2">vitorsouza</font>.
+					    This page last changed on Sep 15, 2004 by <font color="#0050B2">vitorsouza</font>.
 				    </div>
 
-				    <p class="paragraph"><h1 style="margin: 4px 0px 4px 0px;" class="heading1"><a name="TutorialLesson01-Lesson1%3ADownloadingandInstallingWebWork"> Lesson 1: Downloading and Installing WebWork</a></h1></p>The first step to use WebWork is installing it. The current version can be found at <a href="https://webwork.dev.java.net/servlets/ProjectDocumentList" title="Visit page outside Confluence">webwork.dev.java.net</a>. This tutorial is based on version 2.1, which was the latest version at the time it was written.<p class="paragraph">After downloading <em class="emphasis"><tt class="monospaced">webwork-2.1.zip</tt></em>, unpack it anywhere you like. The libraries that are needed to use WebWork are <tt class="monospaced">webwork-2.1.jar</tt> and all the JAR files inside the <tt class="monospaced">lib/core</tt> folder.</p>The next lesson will use these libraries to set up the web application.<p class="paragraph"><hr class="line"/></p><a href="TutorialLesson02.html" title="TutorialLesson02">Next Lesson</a>
+				    <p class="paragraph"><h1 style="margin: 4px 0px 4px 0px;" class="heading1"><a name="TutorialLesson01-Lesson1%3ADownloadingandInstallingWebWork"> Lesson 1: Downloading and Installing WebWork</a></h1></p>The first step to use WebWork is installing it. The current version can be found at <a href="http://www.opensymphony.com/webwork/" title="Visit page outside Confluence">WebWork's home page</a>. This tutorial is based on version 2.1.1, which was the latest version at the time it was written.<p class="paragraph">After downloading <em class="emphasis"><tt class="monospaced">webwork-2.1.1.zip</tt></em>, unpack it anywhere you like. The libraries that are needed to use WebWork are <tt class="monospaced">webwork-2.1.1.jar</tt> and all the JAR files inside the <tt class="monospaced">lib/core</tt> folder.</p>The next lesson will use these libraries to set up the web application.<p class="paragraph"><hr class="line"/></p><a href="TutorialLesson02.html" title="TutorialLesson02">Next Lesson</a>
 
 
 				    
 				<td height="12" background="border/border_bottom.gif"><img src="border/spacer.gif" width="1" height="1" border="0"/></td>
 			</tr>
 		    <tr>
-			    <td align="center"><font color="grey">Document generated by Confluence on Aug 27, 2004 11:46</font></td>
+			    <td align="center"><font color="grey">Document generated by Confluence on Oct 15, 2004 01:45</font></td>
 		    </tr>
 	    </table>
     </body>

docs/wikidocs/TutorialLesson02.html

                                                     </span>
 				    </div>
 				    <div class="pagesubheading">
-					    This page last changed on Jun 14, 2004 by <font color="#0050B2">vitorsouza</font>.
+					    This page last changed on Sep 16, 2004 by <font color="#0050B2">vitorsouza</font>.
 				    </div>
 
-				    <p class="paragraph"><h1 style="margin: 4px 0px 4px 0px;" class="heading1"><a name="TutorialLesson02-Lesson2%3ASettinguptheWebApplication"> Lesson 2: Setting up the Web Application</a></h1></p>It is assumed that you have a Servlet container set up and you know how to create a web application. If you don&#039;t, we suggest you learn about  <a href="http://jakarta.apache.org/tomcat/" title="Visit page outside Confluence">Apache Tomcat</a>, which is a free Servlet container from the Apache Jakarta Project, or Resin, from <a href="http://www.caucho.com/" title="Visit page outside Confluence">Caucho Technology</a>, which is free for non-comercial use.<p class="paragraph">To use WebWork, copy the required libraries, described in the previous lesson (<tt class="monospaced">webwork-2.1.jar</tt> and <tt class="monospaced">lib/core/&#42;.jar</tt>), to the directory <tt class="monospaced">WEB-INF/lib</tt> of the Web Application. Then, configure <tt class="monospaced">web.xml</tt> and create other two XML files: <tt class="monospaced">xwork.xml</tt> and <tt class="monospaced">validators.xml</tt>. These three files will be explained below.</p><h3 class="heading3"><a name="TutorialLesson02-web.xml%3A"> web.xml:</a></h3><p class="paragraph">Change your web application&#039;s web.xml file to look somewhat like this:</p><div class="code"><div class="codeContent">
-<pre><span class="xml&#45;tag">&lt;&#63;xml version=<span class="xml&#45;quote">&quot;1.0&quot;</span>&#63;&gt;</span>&#10;<span class="xml&#45;tag">&lt;&#33;DOCTYPE web&#45;app PUBLIC <span class="xml&#45;quote">&quot;&#45;//Sun Microsystems, Inc.//DTD Web Application 2.3//EN&quot;</span>&#10;<span class="xml&#45;quote">&quot;&#104;ttp://java.sun.com/dtd/web&#45;app&#95;2&#95;3.dtd&quot;</span>&gt;</span>&#10;&#10;<span class="xml&#45;tag">&lt;web&#45;app&gt;</span>&#10;	<span class="xml&#45;tag">&lt;display&#45;name&gt;</span>My WebWork Application<span class="xml&#45;tag">&lt;/display&#45;name&gt;</span>&#10;	<span class="xml&#45;tag">&lt;servlet&gt;</span>&#10;		<span class="xml&#45;tag">&lt;servlet&#45;name&gt;</span>webwork<span class="xml&#45;tag">&lt;/servlet&#45;name&gt;</span>&#10;		<span class="xml&#45;tag">&lt;servlet&#45;class&gt;</span>com.opensymphony.webwork.dispatcher.ServletDispatcher<span class="xml&#45;tag">&lt;/servlet&#45;class&gt;</span>&#10;		<span class="xml&#45;tag">&lt;load&#45;on&#45;startup&gt;</span>1<span class="xml&#45;tag">&lt;/load&#45;on&#45;startup&gt;</span>&#10;	<span class="xml&#45;tag">&lt;/servlet&gt;</span>&#10;	<span class="xml&#45;tag">&lt;servlet&#45;mapping&gt;</span>&#10;		<span class="xml&#45;tag">&lt;servlet&#45;name&gt;</span>webwork<span class="xml&#45;tag">&lt;/servlet&#45;name&gt;</span>&#10;		<span class="xml&#45;tag">&lt;url&#45;pattern&gt;</span>&#42;.action<span class="xml&#45;tag">&lt;/url&#45;pattern&gt;</span>&#10;	<span class="xml&#45;tag">&lt;/servlet&#45;mapping&gt;</span>&#10;	<span class="xml&#45;tag">&lt;taglib&gt;</span>&#10;		<span class="xml&#45;tag">&lt;taglib&#45;uri&gt;</span>webwork<span class="xml&#45;tag">&lt;/taglib&#45;uri&gt;</span>&#10;		<span class="xml&#45;tag">&lt;taglib&#45;location&gt;</span>/WEB&#45;INF/lib/webwork&#45;2.1.jar<span class="xml&#45;tag">&lt;/taglib&#45;location&gt;</span>&#10;	<span class="xml&#45;tag">&lt;/taglib&gt;</span>&#10;<span class="xml&#45;tag">&lt;/web&#45;app&gt;</span></pre>
+				    <p class="paragraph"><h1 style="margin: 4px 0px 4px 0px;" class="heading1"><a name="TutorialLesson02-Lesson2%3ASettinguptheWebApplication"> Lesson 2: Setting up the Web Application</a></h1></p>It is assumed that you have a Servlet container set up and you know how to create a web application. If you don&#039;t, we suggest you learn about  <a href="http://jakarta.apache.org/tomcat/" title="Visit page outside Confluence">Apache Tomcat</a>, which is a free Servlet container from the Apache Jakarta Project, or Resin, from <a href="http://www.caucho.com/" title="Visit page outside Confluence">Caucho Technology</a>, which is free for non-comercial use.<p class="paragraph">To use WebWork, copy the required libraries, described in the previous lesson (<tt class="monospaced">webwork-2.1.1.jar</tt> and <tt class="monospaced">lib/core/&#42;.jar</tt>), to the directory <tt class="monospaced">WEB-INF/lib</tt> of the Web Application. Then, configure <tt class="monospaced">web.xml</tt> and create other two XML files: <tt class="monospaced">xwork.xml</tt> and <tt class="monospaced">validators.xml</tt>. These three files will be explained below.</p><h3 class="heading3"><a name="TutorialLesson02-web.xml%3A"> web.xml:</a></h3><p class="paragraph">Change your web application&#039;s web.xml file to look somewhat like this:</p><div class="code"><div class="codeContent">
+<pre><span class="xml&#45;tag">&lt;&#63;xml version=<span class="xml&#45;quote">&quot;1.0&quot;</span>&#63;&gt;</span>&#10;<span class="xml&#45;tag">&lt;&#33;DOCTYPE web&#45;app PUBLIC <span class="xml&#45;quote">&quot;&#45;//Sun Microsystems, Inc.//DTD Web Application 2.3//EN&quot;</span>&#10;<span class="xml&#45;quote">&quot;&#104;ttp://java.sun.com/dtd/web&#45;app&#95;2&#95;3.dtd&quot;</span>&gt;</span>&#10;&#10;<span class="xml&#45;tag">&lt;web&#45;app&gt;</span>&#10;	<span class="xml&#45;tag">&lt;display&#45;name&gt;</span>My WebWork Application<span class="xml&#45;tag">&lt;/display&#45;name&gt;</span>&#10;	<span class="xml&#45;tag">&lt;servlet&gt;</span>&#10;		<span class="xml&#45;tag">&lt;servlet&#45;name&gt;</span>webwork<span class="xml&#45;tag">&lt;/servlet&#45;name&gt;</span>&#10;		<span class="xml&#45;tag">&lt;servlet&#45;class&gt;</span>com.opensymphony.webwork.dispatcher.ServletDispatcher<span class="xml&#45;tag">&lt;/servlet&#45;class&gt;</span>&#10;		<span class="xml&#45;tag">&lt;load&#45;on&#45;startup&gt;</span>1<span class="xml&#45;tag">&lt;/load&#45;on&#45;startup&gt;</span>&#10;	<span class="xml&#45;tag">&lt;/servlet&gt;</span>&#10;	<span class="xml&#45;tag">&lt;servlet&#45;mapping&gt;</span>&#10;		<span class="xml&#45;tag">&lt;servlet&#45;name&gt;</span>webwork<span class="xml&#45;tag">&lt;/servlet&#45;name&gt;</span>&#10;		<span class="xml&#45;tag">&lt;url&#45;pattern&gt;</span>&#42;.action<span class="xml&#45;tag">&lt;/url&#45;pattern&gt;</span>&#10;	<span class="xml&#45;tag">&lt;/servlet&#45;mapping&gt;</span>&#10;	<span class="xml&#45;tag">&lt;taglib&gt;</span>&#10;		<span class="xml&#45;tag">&lt;taglib&#45;uri&gt;</span>webwork<span class="xml&#45;tag">&lt;/taglib&#45;uri&gt;</span>&#10;		<span class="xml&#45;tag">&lt;taglib&#45;location&gt;</span>/WEB&#45;INF/lib/webwork&#45;2.1.1.jar<span class="xml&#45;tag">&lt;/taglib&#45;location&gt;</span>&#10;	<span class="xml&#45;tag">&lt;/taglib&gt;</span>&#10;<span class="xml&#45;tag">&lt;/web&#45;app&gt;</span></pre>
 </div></div><p class="paragraph">To use WebWork you must register <tt class="monospaced">ServletDispatcher</tt> and its mapping to <tt class="monospaced">&#42;.action</tt>. It will be explained why those lines are important in the section about Actions in the <a href="TutorialLesson03.html" title="TutorialLesson03">next lesson</a>. In the example above WebWork&#039;s taglib descriptor is also declared to allow the usage of WebWork tags (more about WebWork tags on <a href="TutorialLesson04-01.html" title="TutorialLesson04-01">lesson 4.1</a>) &#8211; it is safe to remove it if WebWork tags are not being used.</p><blockquote class="blockquote"> Read more: <a href="web.xml.html" title="web.xml">web.xml</a></blockquote>
 <p class="paragraph"><h3 class="heading3"><a name="TutorialLesson02-xwork.xml%3A"> xwork.xml:</a></h3></p>At the root of the classpath (namely, <tt class="monospaced">WEB-INF/classes</tt>) create a file called <tt class="monospaced">xwork.xml</tt>, which WebWork uses to configure itself. For now, place the following content in it:<br/>
 
 <div class="code"><div class="codeContent">
-<pre><span class="xml&#45;tag">&lt;&#33;DOCTYPE xwork PUBLIC <span class="xml&#45;quote">&quot;&#45;//OpenSymphony Group//XWork 1.0//EN&quot;</span> &#10;<span class="xml&#45;quote">&quot;&#104;ttp://www.opensymphony.com/xwork/xwork&#45;1.0.dtd&quot;</span>&gt;</span>&#10;&#10;<span class="xml&#45;tag">&lt;xwork&gt;</span>&#10;	<span class="xml&#45;tag"><span class="xml&#45;comment">&lt;&#33;&#45;&#45; Include webwork defaults (from WebWork&#45;2.1 JAR). &#45;&#45;&gt;</span></span>&#10;	<span class="xml&#45;tag">&lt;include file=<span class="xml&#45;quote">&quot;webwork&#45;default.xml&quot;</span> /&gt;</span>&#10;	&#10;	<span class="xml&#45;tag"><span class="xml&#45;comment">&lt;&#33;&#45;&#45; Configuration for the default package. &#45;&#45;&gt;</span></span>&#10;	<span class="xml&#45;tag">&lt;package name=<span class="xml&#45;quote">&quot;default&quot;</span> extends=<span class="xml&#45;quote">&quot;webwork&#45;default&quot;</span>&gt;</span>&#10;	<span class="xml&#45;tag">&lt;/package&gt;</span>&#10;<span class="xml&#45;tag">&lt;/xwork&gt;</span></pre>
+<pre><span class="xml&#45;tag">&lt;&#33;DOCTYPE xwork PUBLIC <span class="xml&#45;quote">&quot;&#45;//OpenSymphony Group//XWork 1.0//EN&quot;</span> &#10;<span class="xml&#45;quote">&quot;&#104;ttp://www.opensymphony.com/xwork/xwork&#45;1.0.dtd&quot;</span>&gt;</span>&#10;&#10;<span class="xml&#45;tag">&lt;xwork&gt;</span>&#10;	<span class="xml&#45;tag"><span class="xml&#45;comment">&lt;&#33;&#45;&#45; Include webwork defaults (from WebWork JAR). &#45;&#45;&gt;</span></span>&#10;	<span class="xml&#45;tag">&lt;include file=<span class="xml&#45;quote">&quot;webwork&#45;default.xml&quot;</span> /&gt;</span>&#10;	&#10;	<span class="xml&#45;tag"><span class="xml&#45;comment">&lt;&#33;&#45;&#45; Configuration for the default package. &#45;&#45;&gt;</span></span>&#10;	<span class="xml&#45;tag">&lt;package name=<span class="xml&#45;quote">&quot;default&quot;</span> extends=<span class="xml&#45;quote">&quot;webwork&#45;default&quot;</span>&gt;</span>&#10;	<span class="xml&#45;tag">&lt;/package&gt;</span>&#10;<span class="xml&#45;tag">&lt;/xwork&gt;</span></pre>
 </div></div><p class="paragraph">This is just a skeleton of a configuration file, which will be incremented as we go through the lessons. As of now, it is only doing two things:</p><ul class="star">
-<li> informing WebWork that it should import the configuration information from <tt class="monospaced">webwork-default.xml</tt> (which is located at the root of <tt class="monospaced">webwork-2.1.jar</tt> and thus available for use) &#8211; this file defines the <tt class="monospaced">webwork-default</tt> package, which contains the <em class="emphasis">default</em> configuration for WebWork applications;</li>
+<li> informing WebWork that it should import the configuration information from <tt class="monospaced">webwork-default.xml</tt> (which is located at the root of <tt class="monospaced">webwork-2.1.1.jar</tt> and thus available for use) &#8211; this file defines the <tt class="monospaced">webwork-default</tt> package, which contains the <em class="emphasis">default</em> configuration for WebWork applications;</li>
 </ul>
 <ul class="star">
 <li> defining a <tt class="monospaced">default</tt> package, which is where the actions, results and interceptors are registered. This package extends <tt class="monospaced">webwork-default</tt>, i.e., the <tt class="monospaced">default</tt> package will inherit all the configuration defined in <tt class="monospaced">webwork-default</tt>.</li>
 				<td height="12" background="border/border_bottom.gif"><img src="border/spacer.gif" width="1" height="1" border="0"/></td>
 			</tr>
 		    <tr>
-			    <td align="center"><font color="grey">Document generated by Confluence on Aug 27, 2004 11:46</font></td>
+			    <td align="center"><font color="grey">Document generated by Confluence on Oct 15, 2004 01:45</font></td>
 		    </tr>
 	    </table>
     </body>

docs/wikidocs/TutorialLesson03.html

                                                     </span>
 				    </div>
 				    <div class="pagesubheading">
-					    This page last changed on Jun 14, 2004 by <font color="#0050B2">vitorsouza</font>.
+					    This page last changed on Sep 16, 2004 by <font color="#0050B2">vitorsouza</font>.
 				    </div>
 
 				    <p class="paragraph"><h1 style="margin: 4px 0px 4px 0px;" class="heading1"><a name="TutorialLesson03-Lesson3%3AActionsandResults"> Lesson 3: Actions and Results</a></h1></p>Actions are the basic unit of execution. An action is a class that is registered under WebWork&#039;s configuration to respond to a specific request. In a Model-View-Controller approach, the Action is part of the Controller, leaving to JSP pages what they do best: being the View.<p class="paragraph">The following steps are a possible way of creating an action in WebWork:</p><ol>
 The first example of this tutorial could be no other than <em class="emphasis">&quot;Hello, WebWorld!&quot;</em>. The code below displays WebWork&#039;s configuration file <tt class="monospaced">xwork.xml</tt> with configuration for an action under the <tt class="monospaced">default</tt> package.
 <p class="paragraph"><h3 class="heading3"><a name="TutorialLesson03-xwork.xml%3A"> xwork.xml:</a></h3>
 <div class="code"><div class="codeContent">
-<pre><span class="xml&#45;tag">&lt;&#33;DOCTYPE xwork PUBLIC <span class="xml&#45;quote">&quot;&#45;//OpenSymphony Group//XWork 1.0//EN&quot;</span>&#10;<span class="xml&#45;quote">&quot;&#104;ttp://www.opensymphony.com/xwork/xwork&#45;1.0.dtd&quot;</span>&gt;</span>&#10;&#10;<span class="xml&#45;tag">&lt;xwork&gt;</span>&#10;	<span class="xml&#45;tag"><span class="xml&#45;comment">&lt;&#33;&#45;&#45; Include webwork defaults (from WebWork&#45;2.1 JAR). &#45;&#45;&gt;</span></span>&#10;	<span class="xml&#45;tag">&lt;include file=<span class="xml&#45;quote">&quot;webwork&#45;default.xml&quot;</span> /&gt;</span>&#10;	&#10;	<span class="xml&#45;tag"><span class="xml&#45;comment">&lt;&#33;&#45;&#45; Configuration for the default package. &#45;&#45;&gt;</span></span>&#10;	<span class="xml&#45;tag">&lt;package name=<span class="xml&#45;quote">&quot;default&quot;</span> extends=<span class="xml&#45;quote">&quot;webwork&#45;default&quot;</span>&gt;</span>&#10;		<span class="xml&#45;tag"><span class="xml&#45;comment">&lt;&#33;&#45;&#45; Default interceptor stack. &#45;&#45;&gt;</span></span> &#10;		<span class="xml&#45;tag">&lt;default&#45;interceptor&#45;ref name=<span class="xml&#45;quote">&quot;defaultStack&quot;</span> /&gt;</span> &#10;		&#10;		<span class="xml&#45;tag"><span class="xml&#45;comment">&lt;&#33;&#45;&#45; Action: Lesson 03: HelloWebWorldAction. &#45;&#45;&gt;</span></span> &#10;		<span class="xml&#45;tag">&lt;action name=<span class="xml&#45;quote">&quot;helloWebWorld&quot;</span> class=<span class="xml&#45;quote">&quot;lesson03.HelloWebWorldAction&quot;</span>&gt;</span> &#10;			<span class="xml&#45;tag">&lt;result name=<span class="xml&#45;quote">&quot;success&quot;</span> type=<span class="xml&#45;quote">&quot;dispatcher&quot;</span>&gt;</span>ex01&#45;success.jsp<span class="xml&#45;tag">&lt;/result&gt;</span> &#10;		<span class="xml&#45;tag">&lt;/action&gt;</span> &#10;	<span class="xml&#45;tag">&lt;/package&gt;</span>&#10;<span class="xml&#45;tag">&lt;/xwork&gt;</span></pre>
+<pre><span class="xml&#45;tag">&lt;&#33;DOCTYPE xwork PUBLIC <span class="xml&#45;quote">&quot;&#45;//OpenSymphony Group//XWork 1.0//EN&quot;</span>&#10;<span class="xml&#45;quote">&quot;&#104;ttp://www.opensymphony.com/xwork/xwork&#45;1.0.dtd&quot;</span>&gt;</span>&#10;&#10;<span class="xml&#45;tag">&lt;xwork&gt;</span>&#10;	<span class="xml&#45;tag"><span class="xml&#45;comment">&lt;&#33;&#45;&#45; Include webwork defaults (from WebWork JAR). &#45;&#45;&gt;</span></span>&#10;	<span class="xml&#45;tag">&lt;include file=<span class="xml&#45;quote">&quot;webwork&#45;default.xml&quot;</span> /&gt;</span>&#10;	&#10;	<span class="xml&#45;tag"><span class="xml&#45;comment">&lt;&#33;&#45;&#45; Configuration for the default package. &#45;&#45;&gt;</span></span>&#10;	<span class="xml&#45;tag">&lt;package name=<span class="xml&#45;quote">&quot;default&quot;</span> extends=<span class="xml&#45;quote">&quot;webwork&#45;default&quot;</span>&gt;</span>&#10;		<span class="xml&#45;tag"><span class="xml&#45;comment">&lt;&#33;&#45;&#45; Default interceptor stack. &#45;&#45;&gt;</span></span> &#10;		<span class="xml&#45;tag">&lt;default&#45;interceptor&#45;ref name=<span class="xml&#45;quote">&quot;defaultStack&quot;</span> /&gt;</span> &#10;		&#10;		<span class="xml&#45;tag"><span class="xml&#45;comment">&lt;&#33;&#45;&#45; Action: Lesson 03: HelloWebWorldAction. &#45;&#45;&gt;</span></span> &#10;		<span class="xml&#45;tag">&lt;action name=<span class="xml&#45;quote">&quot;helloWebWorld&quot;</span> class=<span class="xml&#45;quote">&quot;lesson03.HelloWebWorldAction&quot;</span>&gt;</span> &#10;			<span class="xml&#45;tag">&lt;result name=<span class="xml&#45;quote">&quot;success&quot;</span> type=<span class="xml&#45;quote">&quot;dispatcher&quot;</span>&gt;</span>ex01&#45;success.jsp<span class="xml&#45;tag">&lt;/result&gt;</span> &#10;		<span class="xml&#45;tag">&lt;/action&gt;</span> &#10;	<span class="xml&#45;tag">&lt;/package&gt;</span>&#10;<span class="xml&#45;tag">&lt;/xwork&gt;</span></pre>
 </div></div></p>Don&#039;t worry about the <tt class="monospaced">default-interceptor-ref</tt> yet. For now we are interested in the action only. This configuration file is telling WebWork that there is an action called <tt class="monospaced">helloWebWorld</tt> which is implemented by the class <tt class="monospaced">lesson03.HelloWebWorldAction</tt>. For this action, we define a result under the name <tt class="monospaced">success</tt> which points to the web page <tt class="monospaced">ex01-success.jsp</tt>.<br/>
 
 <blockquote class="blockquote"> Read more: <a href="xwork.xml.html" title="xwork.xml">xwork.xml</a></blockquote><p class="paragraph">Things should get clearer once we take a look at the code that calls the action:</p><h3 class="heading3"><a name="TutorialLesson03-ex01index.jsp%3A"> ex01-index.jsp:</a></h3>
 <p class="paragraph"><h2 class="heading2"><a name="TutorialLesson03-SupplyingDatatotheAction"> Supplying Data to the Action</a></h2></p>The previous example demonstrated how WebWork&#039;s actions work, but we can&#039;t do much if we&#039;re not able to supply data to our action. Let&#039;s see an example that does just that:
 <p class="paragraph"><h3 class="heading3"><a name="TutorialLesson03-xwork.xml%3A"> xwork.xml:</a></h3>
 <div class="code"><div class="codeContent">
-<pre><span class="xml&#45;tag">&lt;&#33;DOCTYPE xwork PUBLIC <span class="xml&#45;quote">&quot;&#45;//OpenSymphony Group//XWork 1.0//EN&quot;</span>&#10;<span class="xml&#45;quote">&quot;&#104;ttp://www.opensymphony.com/xwork/xwork&#45;1.0.dtd&quot;</span>&gt;</span>&#10;&#10;<span class="xml&#45;tag">&lt;xwork&gt;</span>&#10;	<span class="xml&#45;tag"><span class="xml&#45;comment">&lt;&#33;&#45;&#45; Include webwork defaults (from WebWork&#45;2.1 JAR). &#45;&#45;&gt;</span></span>&#10;	<span class="xml&#45;tag">&lt;include file=<span class="xml&#45;quote">&quot;webwork&#45;default.xml&quot;</span> /&gt;</span>&#10;	&#10;	<span class="xml&#45;tag"><span class="xml&#45;comment">&lt;&#33;&#45;&#45; Configuration for the default package. &#45;&#45;&gt;</span></span>&#10;	<span class="xml&#45;tag">&lt;package name=<span class="xml&#45;quote">&quot;default&quot;</span> extends=<span class="xml&#45;quote">&quot;webwork&#45;default&quot;</span>&gt;</span>&#10;		<span class="xml&#45;tag"><span class="xml&#45;comment">&lt;&#33;&#45;&#45; Default interceptor stack. &#45;&#45;&gt;</span></span> &#10;		<span class="xml&#45;tag">&lt;default&#45;interceptor&#45;ref name=<span class="xml&#45;quote">&quot;defaultStack&quot;</span> /&gt;</span> &#10;		&#10;		<span class="xml&#45;tag"><span class="xml&#45;comment">&lt;&#33;&#45;&#45; Action: Lesson 03: HelloAction. &#45;&#45;&gt;</span></span>&#10;		<span class="xml&#45;tag">&lt;action name=<span class="xml&#45;quote">&quot;hello&quot;</span> class=<span class="xml&#45;quote">&quot;lesson03.HelloAction&quot;</span>&gt;</span>&#10;			<span class="xml&#45;tag">&lt;result name=<span class="xml&#45;quote">&quot;error&quot;</span> type=<span class="xml&#45;quote">&quot;dispatcher&quot;</span>&gt;</span>ex02&#45;index.jsp<span class="xml&#45;tag">&lt;/result&gt;</span>&#10;			<span class="xml&#45;tag">&lt;result name=<span class="xml&#45;quote">&quot;success&quot;</span> type=<span class="xml&#45;quote">&quot;dispatcher&quot;</span>&gt;</span>ex02&#45;success.jsp<span class="xml&#45;tag">&lt;/result&gt;</span>&#10;		<span class="xml&#45;tag">&lt;/action&gt;</span>&#10;	<span class="xml&#45;tag">&lt;/package&gt;</span>&#10;<span class="xml&#45;tag">&lt;/xwork&gt;</span></pre>
+<pre><span class="xml&#45;tag">&lt;&#33;DOCTYPE xwork PUBLIC <span class="xml&#45;quote">&quot;&#45;//OpenSymphony Group//XWork 1.0//EN&quot;</span>&#10;<span class="xml&#45;quote">&quot;&#104;ttp://www.opensymphony.com/xwork/xwork&#45;1.0.dtd&quot;</span>&gt;</span>&#10;&#10;<span class="xml&#45;tag">&lt;xwork&gt;</span>&#10;	<span class="xml&#45;tag"><span class="xml&#45;comment">&lt;&#33;&#45;&#45; Include webwork defaults (from WebWork JAR). &#45;&#45;&gt;</span></span>&#10;	<span class="xml&#45;tag">&lt;include file=<span class="xml&#45;quote">&quot;webwork&#45;default.xml&quot;</span> /&gt;</span>&#10;	&#10;	<span class="xml&#45;tag"><span class="xml&#45;comment">&lt;&#33;&#45;&#45; Configuration for the default package. &#45;&#45;&gt;</span></span>&#10;	<span class="xml&#45;tag">&lt;package name=<span class="xml&#45;quote">&quot;default&quot;</span> extends=<span class="xml&#45;quote">&quot;webwork&#45;default&quot;</span>&gt;</span>&#10;		<span class="xml&#45;tag"><span class="xml&#45;comment">&lt;&#33;&#45;&#45; Default interceptor stack. &#45;&#45;&gt;</span></span> &#10;		<span class="xml&#45;tag">&lt;default&#45;interceptor&#45;ref name=<span class="xml&#45;quote">&quot;defaultStack&quot;</span> /&gt;</span> &#10;		&#10;		<span class="xml&#45;tag"><span class="xml&#45;comment">&lt;&#33;&#45;&#45; Action: Lesson 03: HelloAction. &#45;&#45;&gt;</span></span>&#10;		<span class="xml&#45;tag">&lt;action name=<span class="xml&#45;quote">&quot;hello&quot;</span> class=<span class="xml&#45;quote">&quot;lesson03.HelloAction&quot;</span>&gt;</span>&#10;			<span class="xml&#45;tag">&lt;result name=<span class="xml&#45;quote">&quot;error&quot;</span> type=<span class="xml&#45;quote">&quot;dispatcher&quot;</span>&gt;</span>ex02&#45;index.jsp<span class="xml&#45;tag">&lt;/result&gt;</span>&#10;			<span class="xml&#45;tag">&lt;result name=<span class="xml&#45;quote">&quot;success&quot;</span> type=<span class="xml&#45;quote">&quot;dispatcher&quot;</span>&gt;</span>ex02&#45;success.jsp<span class="xml&#45;tag">&lt;/result&gt;</span>&#10;		<span class="xml&#45;tag">&lt;/action&gt;</span>&#10;	<span class="xml&#45;tag">&lt;/package&gt;</span>&#10;<span class="xml&#45;tag">&lt;/xwork&gt;</span></pre>
 </div></div></p><h3 class="heading3"><a name="TutorialLesson03-HelloAction.java%3A"> HelloAction.java:</a></h3>
 <div class="code"><div class="codeContent">
 <pre><span class="java&#45;keyword">package</span> lesson03;&#10;&#10;<span class="java&#45;keyword">import</span> com.opensymphony.xwork.ActionSupport;&#10;&#10;<span class="java&#45;keyword">public</span> class HelloAction <span class="java&#45;keyword">extends</span> ActionSupport &#123;&#10;	<span class="java&#45;object">String</span> person;&#10;	<span class="java&#45;keyword">public</span>&#160;<span class="java&#45;object">String</span> getPerson() &#123;&#10;		<span class="java&#45;keyword">return</span> person;&#10;	&#125;&#10;	<span class="java&#45;keyword">public</span> void setPerson(<span class="java&#45;object">String</span> person) &#123;&#10;		<span class="java&#45;keyword">this</span>.person = person;&#10;	&#125;&#10;	<span class="java&#45;keyword">public</span>&#160;<span class="java&#45;object">String</span> execute() <span class="java&#45;keyword">throws</span> Exception &#123;&#10;		<span class="java&#45;keyword">if</span> ((person == <span class="java&#45;keyword">null</span>) || (person.length() == 0)) <span class="java&#45;keyword">return</span> ERROR;&#10;		<span class="java&#45;keyword">else</span>&#160;<span class="java&#45;keyword">return</span> SUCCESS;&#10;	&#125;&#10;&#125;</pre>
 				<td height="12" background="border/border_bottom.gif"><img src="border/spacer.gif" width="1" height="1" border="0"/></td>
 			</tr>
 		    <tr>
-			    <td align="center"><font color="grey">Document generated by Confluence on Aug 27, 2004 11:46</font></td>
+			    <td align="center"><font color="grey">Document generated by Confluence on Oct 15, 2004 01:45</font></td>
 		    </tr>
 	    </table>
     </body>

docs/wikidocs/TutorialLesson04-01-01.html

                                                     </span>
 				    </div>
 				    <div class="pagesubheading">
-					    This page last changed on Jun 14, 2004 by <font color="#0050B2">vitorsouza</font>.
+					    This page last changed on Sep 16, 2004 by <font color="#0050B2">vitorsouza</font>.
 				    </div>
 
 				    <p class="paragraph"><h1 style="margin: 4px 0px 4px 0px;" class="heading1"><a name="TutorialLesson04-01-01-Lesson4.1.1%3AWebWorkUITags"> Lesson 4.1.1: WebWork UI Tags</a></h1></p>In WebWork, the UI tags wrap generic HTML controls while providing tight integration with the core framework. The tags have been designed to minimize the amount of logic in compiled code and delegate the actual rendering of HTML to a template system. The UI tags attempt to cover the most common scenarios, while providing a Component Tag for creating custom components. The UI tags also provide built-in support for displaying inline error messages.<p class="paragraph">This lesson tries to explain how to take advantage of the UI tags to build forms and other graphical controls and, by explaining how the template system works, teaches you how to change the look of existing components and create your own UI components.</p><h2 class="heading2"><a name="TutorialLesson04-01-01-Buildingforms%3A"> Building forms:</a></h2><p class="paragraph">WebWork comes with ready-to-use tags to construct forms. Some of these tags relate directly to HTML tags that are used to make forms and you probably can figure them out by their names: <tt class="monospaced">&lt;ww:checkbox /&gt;</tt>, <tt class="monospaced">&lt;ww:file /&gt;</tt>, <tt class="monospaced">&lt;ww:form /&gt;</tt>, <tt class="monospaced">&lt;ww:hidden /&gt;</tt>, <tt class="monospaced">&lt;ww:label /&gt;</tt>, <tt class="monospaced">&lt;ww:password /&gt;</tt>, <tt class="monospaced">&lt;ww:radio /&gt;</tt>, <tt class="monospaced">&lt;ww:select /&gt;</tt>, <tt class="monospaced">&lt;ww:submit /&gt;</tt>, <tt class="monospaced">&lt;ww:textarea /&gt;</tt> and <tt class="monospaced">&lt;ww:textfield /&gt;</tt>.</p>To build forms with these tags, place them in your page as you would do with the HTML tags. The only difference is that the parameters should be enclosed in double quotes and single quotes (<tt class="monospaced">key=&quot;&#039;value&#039;&quot;</tt>). That&#039;s because names that are not single-quoted are evaluated against the Value Stack.<p class="paragraph">Let&#039;s check out an example:</p><h3 class="heading3"><a name="TutorialLesson04-01-01-ex01index.jsp%3A"> ex01-index.jsp:</a></h3>
 <pre>&lt;html&gt; &#10;&lt;head&gt; &#10;&lt;title&gt;WebWork Tutorial &#45; Lesson 4.1.1 &#45; Example 1&lt;/title&gt;&#10;&lt;style type=<span class="java&#45;quote">&quot;text/css&quot;</span>&gt; &#10;  .errorMessage &#123; color: red; &#125; &#10;&lt;/style&gt;   &#10;&lt;/head&gt; &#10;&#10;&lt;body&gt; &#10;&#10;&lt;p&gt;UI Form Tags Example:&lt;/p&gt; &#10;&#10;&lt;table&gt; &#10;&lt;form &#10;action=<span class="java&#45;quote">&quot;formProcessing.action&quot;</span> method=<span class="java&#45;quote">&quot;post&quot;</span> &gt; &#10;&#10;   &#10;&#10;&#10;&lt;tr&gt; &#10;&lt;td valign=<span class="java&#45;quote">&quot;top&quot;</span> colspan=<span class="java&#45;quote">&quot;2&quot;</span>&gt; &#10;&#10;&lt;table width=<span class="java&#45;quote">&quot;100&#37;&quot;</span> border=<span class="java&#45;quote">&quot;0&quot;</span> cellpadding=<span class="java&#45;quote">&quot;0&quot;</span> cellspacing=<span class="java&#45;quote">&quot;0&quot;</span>&gt; &#10;&lt;tr&gt;&lt;td valign=<span class="java&#45;quote">&quot;top&quot;</span>&gt; &#10;&lt;input type=<span class="java&#45;quote">&quot;checkbox&quot;</span> &#10;name=<span class="java&#45;quote">&quot;checkbox&quot;</span> &#10;value=<span class="java&#45;quote">&quot;checkbox&#95;value&quot;</span> &#10;/&gt; &#10;&lt;/td&gt; &#10;&lt;td width=<span class="java&#45;quote">&quot;100&#37;&quot;</span> valign=<span class="java&#45;quote">&quot;top&quot;</span>&gt; &#10;&lt;span class=<span class="java&#45;quote">&quot;checkboxLabel&quot;</span>&gt; &#10;A checkbox &#10;&lt;/span&gt; &#10;&lt;/td&gt; &#10;&lt;/tr&gt; &#10;&lt;/table&gt; &#10;&lt;/td&gt; &#10;&lt;/tr&gt; &#10;&#10;   &#10;&#10;&#10;&#10;&lt;tr&gt; &#10;&lt;td align=<span class="java&#45;quote">&quot;right&quot;</span> valign=<span class="java&#45;quote">&quot;top&quot;</span>&gt; &#10;&#10;&lt;span class=<span class="java&#45;quote">&quot;label&quot;</span>&gt; &#10;&#10;A file field: &#10;&lt;/span&gt; &#10;&lt;/td&gt; &#10;&#10;&lt;td&gt; &#10;&#10;&lt;input type=<span class="java&#45;quote">&quot;file&quot;</span> &#10;name=<span class="java&#45;quote">&quot;file&quot;</span> &#10;/&gt; &#10;&#10;&lt;/td&gt; &#10;&lt;/tr&gt; &#10;&#10;  &lt;input &#10;type=<span class="java&#45;quote">&quot;hidden&quot;</span> &#10;name=<span class="java&#45;quote">&quot;hidden&quot;</span> value=<span class="java&#45;quote">&quot;hidden&#95;value&quot;</span> /&gt; &#10;   &#10;&#10;&#10;&#10;&lt;tr&gt; &#10;&lt;td align=<span class="java&#45;quote">&quot;right&quot;</span> valign=<span class="java&#45;quote">&quot;top&quot;</span>&gt; &#10;&#10;&lt;span class=<span class="java&#45;quote">&quot;label&quot;</span>&gt; &#10;&#10;A label: &#10;&lt;/span&gt; &#10;&lt;/td&gt; &#10;&#10;&lt;td&gt; &#10;&lt;label&gt; &lt;/label&gt; &#10;&lt;/td&gt; &#10;&lt;/tr&gt; &#10;&#10;   &#10;&#10;&#10;&#10;&#10;&lt;tr&gt; &#10;&lt;td align=<span class="java&#45;quote">&quot;right&quot;</span> valign=<span class="java&#45;quote">&quot;top&quot;</span>&gt; &#10;&#10;&lt;span class=<span class="java&#45;quote">&quot;label&quot;</span>&gt; &#10;&#10;A password field: &#10;&lt;/span&gt; &#10;&lt;/td&gt; &#10;&#10;&lt;td&gt; &#10;&#10;&lt;input type=<span class="java&#45;quote">&quot;password&quot;</span> &#10;name=<span class="java&#45;quote">&quot;password&quot;</span> &#10;&#10;&#10;/&gt; &#10;&#10;&lt;/td&gt; &#10;&lt;/tr&gt; &#10;&#10;   &#10;&#10;&#10;&#10;&lt;tr&gt; &#10;&lt;td align=<span class="java&#45;quote">&quot;right&quot;</span> valign=<span class="java&#45;quote">&quot;top&quot;</span>&gt; &#10;&#10;&lt;span class=<span class="java&#45;quote">&quot;label&quot;</span>&gt; &#10;&#10;Radio buttons: &#10;&lt;/span&gt; &#10;&lt;/td&gt; &#10;&#10;&lt;td&gt; &#10;&#10;&#10;&#10;&#10;&#10;&lt;input &#10;type=<span class="java&#45;quote">&quot;radio&quot;</span> &#10;name=<span class="java&#45;quote">&quot;radio&quot;</span> &#10;id=<span class="java&#45;quote">&quot;radioOne&quot;</span> &#10;value=<span class="java&#45;quote">&quot;One&quot;</span> /&gt; &#10;&lt;label <span class="java&#45;keyword">for</span>=<span class="java&#45;quote">&quot;radioOne&quot;</span>&gt;One&lt;/label&gt; &#10;&#10;&#10;&#10;&#10;&#10;&lt;input &#10;type=<span class="java&#45;quote">&quot;radio&quot;</span> &#10;name=<span class="java&#45;quote">&quot;radio&quot;</span> &#10;id=<span class="java&#45;quote">&quot;radioTwo&quot;</span> &#10;value=<span class="java&#45;quote">&quot;Two&quot;</span> /&gt; &#10;&lt;label <span class="java&#45;keyword">for</span>=<span class="java&#45;quote">&quot;radioTwo&quot;</span>&gt;Two&lt;/label&gt; &#10;&#10;&#10;&#10;&#10;&#10;&lt;input &#10;type=<span class="java&#45;quote">&quot;radio&quot;</span> &#10;name=<span class="java&#45;quote">&quot;radio&quot;</span> &#10;id=<span class="java&#45;quote">&quot;radioThree&quot;</span> &#10;value=<span class="java&#45;quote">&quot;Three&quot;</span> /&gt; &#10;&lt;label <span class="java&#45;keyword">for</span>=<span class="java&#45;quote">&quot;radioThree&quot;</span>&gt;Three&lt;/label&gt; &#10;&#10;&#10;&lt;/td&gt; &#10;&lt;/tr&gt; &#10;&#10;   &#10;&#10;&#10;&#10;&lt;tr&gt; &#10;&lt;td align=<span class="java&#45;quote">&quot;right&quot;</span> valign=<span class="java&#45;quote">&quot;top&quot;</span>&gt; &#10;&#10;&lt;span class=<span class="java&#45;quote">&quot;label&quot;</span>&gt; &#10;&#10;A select list: &#10;&lt;/span&gt; &#10;&lt;/td&gt; &#10;&#10;&lt;td&gt; &#10;&#10;&lt;select name=<span class="java&#45;quote">&quot;select&quot;</span> &#10;&gt; &#10;&#10;&#10;&lt;option value=<span class="java&#45;quote">&quot;&quot;&gt;&lt;/option&gt; &#10;&#10;&#10;&#10;&#10;&#10;&lt;option value=&quot;</span>One<span class="java&#45;quote">&quot; &#10;&gt;One&lt;/option&gt; &#10;&#10;&#10;&#10;&#10;&#10;&lt;option value=&quot;</span>Two<span class="java&#45;quote">&quot; &#10;&gt;Two&lt;/option&gt; &#10;&#10;&#10;&#10;&#10;&#10;&lt;option value=&quot;</span>Three<span class="java&#45;quote">&quot; &#10;&gt;Three&lt;/option&gt; &#10;&#10;&#10;&lt;/select&gt; &#10;&#10;&lt;/td&gt; &#10;&lt;/tr&gt; &#10;&#10;   &#10;&#10;&#10;&#10;&lt;tr&gt; &#10;&lt;td align=&quot;</span>right<span class="java&#45;quote">&quot; valign=&quot;</span>top<span class="java&#45;quote">&quot;&gt; &#10;&#10;&lt;span class=&quot;</span>label<span class="java&#45;quote">&quot;&gt; &#10;&#10;A text area: &#10;&lt;/span&gt; &#10;&lt;/td&gt; &#10;&#10;&lt;td&gt; &#10;&#10;&lt;textarea name=&quot;</span>textarea<span class="java&#45;quote">&quot; &#10;cols=&quot;</span>40<span class="java&#45;quote">&quot; &#10;rows=&quot;</span>3<span class="java&#45;quote">&quot; &#10;&gt;&lt;/textarea&gt; &#10;&#10;&lt;/td&gt; &#10;&lt;/tr&gt; &#10;&#10;   &#10;&#10;&#10;&#10;&lt;tr&gt; &#10;&lt;td align=&quot;</span>right<span class="java&#45;quote">&quot; valign=&quot;</span>top<span class="java&#45;quote">&quot;&gt; &#10;&#10;&lt;span class=&quot;</span>label<span class="java&#45;quote">&quot;&gt; &#10;&#10;A text field: &#10;&lt;/span&gt; &#10;&lt;/td&gt; &#10;&#10;&lt;td&gt; &#10;&#10;&lt;input type=&quot;</span>text<span class="java&#45;quote">&quot; &#10;name=&quot;</span>textfield<span class="java&#45;quote">&quot; &#10;/&gt; &#10;&#10;&lt;/td&gt; &#10;&lt;/tr&gt; &#10;&#10;  &lt;tr&gt; &#10;&lt;td colspan=&quot;</span>2<span class="java&#45;quote">&quot;&gt;&lt;div &#10;align=&quot;</span>right<span class="java&#45;quote">&quot; &gt;&lt;input &#10;type=&quot;</span>submit<span class="java&#45;quote">&quot; &#10;value=&quot;</span>Send Form&quot; /&gt;&lt;/div&gt; &#10;&lt;/td&gt; &#10;&lt;/tr&gt; &#10;&#10;&lt;/form&gt; &#10;&lt;/table&gt; &#10;&#10;&#10;&lt;/body&gt; &#10;&lt;/html&gt;</pre>
 </div></div></p><h3 class="heading3"><a name="TutorialLesson04-01-01-xwork.xml%3A"> xwork.xml:</a></h3>
 <div class="code"><div class="codeContent">
-<pre><span class="xml&#45;tag">&lt;&#33;DOCTYPE xwork PUBLIC <span class="xml&#45;quote">&quot;&#45;//OpenSymphony Group//XWork 1.0//EN&quot;</span> &#10;<span class="xml&#45;quote">&quot;&#104;ttp://www.opensymphony.com/xwork/xwork&#45;1.0.dtd&quot;</span>&gt;</span>&#10;&#10;<span class="xml&#45;tag">&lt;xwork&gt;</span>&#10;	<span class="xml&#45;tag"><span class="xml&#45;comment">&lt;&#33;&#45;&#45; Include webwork defaults (from WebWork&#45;2.1 JAR). &#45;&#45;&gt;</span></span>&#10;	<span class="xml&#45;tag">&lt;include file=<span class="xml&#45;quote">&quot;webwork&#45;default.xml&quot;</span> /&gt;</span>&#10;	&#10;	<span class="xml&#45;tag"><span class="xml&#45;comment">&lt;&#33;&#45;&#45; Configuration for the default package. &#45;&#45;&gt;</span></span>&#10;	<span class="xml&#45;tag">&lt;package name=<span class="xml&#45;quote">&quot;default&quot;</span> extends=<span class="xml&#45;quote">&quot;webwork&#45;default&quot;</span>&gt;</span>&#10;		<span class="xml&#45;tag">&lt;action name=<span class="xml&#45;quote">&quot;formProcessing&quot;</span> class=<span class="xml&#45;quote">&quot;lesson04&#95;01&#95;01.FormProcessingAction&quot;</span>&gt;</span>&#10;			<span class="xml&#45;tag">&lt;result name=<span class="xml&#45;quote">&quot;input&quot;</span> type=<span class="xml&#45;quote">&quot;dispatcher&quot;</span>&gt;</span>ex01&#45;index.jsp<span class="xml&#45;tag">&lt;/result&gt;</span>&#10;			<span class="xml&#45;tag">&lt;result name=<span class="xml&#45;quote">&quot;success&quot;</span> type=<span class="xml&#45;quote">&quot;dispatcher&quot;</span>&gt;</span>ex01&#45;success.jsp<span class="xml&#45;tag">&lt;/result&gt;</span>&#10;			<span class="xml&#45;tag">&lt;interceptor&#45;ref name=<span class="xml&#45;quote">&quot;validationWorkflowStack&quot;</span> /&gt;</span>&#10;		<span class="xml&#45;tag">&lt;/action&gt;</span>&#10;	<span class="xml&#45;tag">&lt;/package&gt;</span>&#10;<span class="xml&#45;tag">&lt;/xwork&gt;</span></pre>
+<pre><span class="xml&#45;tag">&lt;&#33;DOCTYPE xwork PUBLIC <span class="xml&#45;quote">&quot;&#45;//OpenSymphony Group//XWork 1.0//EN&quot;</span> &#10;<span class="xml&#45;quote">&quot;&#104;ttp://www.opensymphony.com/xwork/xwork&#45;1.0.dtd&quot;</span>&gt;</span>&#10;&#10;<span class="xml&#45;tag">&lt;xwork&gt;</span>&#10;	<span class="xml&#45;tag"><span class="xml&#45;comment">&lt;&#33;&#45;&#45; Include webwork defaults (from WebWork JAR). &#45;&#45;&gt;</span></span>&#10;	<span class="xml&#45;tag">&lt;include file=<span class="xml&#45;quote">&quot;webwork&#45;default.xml&quot;</span> /&gt;</span>&#10;	&#10;	<span class="xml&#45;tag"><span class="xml&#45;comment">&lt;&#33;&#45;&#45; Configuration for the default package. &#45;&#45;&gt;</span></span>&#10;	<span class="xml&#45;tag">&lt;package name=<span class="xml&#45;quote">&quot;default&quot;</span> extends=<span class="xml&#45;quote">&quot;webwork&#45;default&quot;</span>&gt;</span>&#10;		<span class="xml&#45;tag">&lt;action name=<span class="xml&#45;quote">&quot;formProcessing&quot;</span> class=<span class="xml&#45;quote">&quot;lesson04&#95;01&#95;01.FormProcessingAction&quot;</span>&gt;</span>&#10;			<span class="xml&#45;tag">&lt;result name=<span class="xml&#45;quote">&quot;input&quot;</span> type=<span class="xml&#45;quote">&quot;dispatcher&quot;</span>&gt;</span>ex01&#45;index.jsp<span class="xml&#45;tag">&lt;/result&gt;</span>&#10;			<span class="xml&#45;tag">&lt;result name=<span class="xml&#45;quote">&quot;success&quot;</span> type=<span class="xml&#45;quote">&quot;dispatcher&quot;</span>&gt;</span>ex01&#45;success.jsp<span class="xml&#45;tag">&lt;/result&gt;</span>&#10;			<span class="xml&#45;tag">&lt;interceptor&#45;ref name=<span class="xml&#45;quote">&quot;validationWorkflowStack&quot;</span> /&gt;</span>&#10;		<span class="xml&#45;tag">&lt;/action&gt;</span>&#10;	<span class="xml&#45;tag">&lt;/package&gt;</span>&#10;<span class="xml&#45;tag">&lt;/xwork&gt;</span></pre>
 </div></div><p class="paragraph"><h3 class="heading3"><a name="TutorialLesson04-01-01-FormProcessingAction.java%3A"> FormProcessingAction.java:</a></h3>
 <div class="code"><div class="codeContent">
 <pre><span class="java&#45;keyword">package</span> lesson04&#95;01&#95;01;&#10;&#10;<span class="java&#45;keyword">import</span> com.opensymphony.xwork.ActionSupport;&#10;&#10;<span class="java&#45;keyword">public</span> class FormProcessingAction <span class="java&#45;keyword">extends</span> ActionSupport &#123;&#10;	<span class="java&#45;keyword">private</span>&#160;<span class="java&#45;object">String</span> checkbox;&#10;	<span class="java&#45;keyword">private</span>&#160;<span class="java&#45;object">String</span> file;&#10;	<span class="java&#45;keyword">private</span>&#160;<span class="java&#45;object">String</span> hidden;&#10;	<span class="java&#45;keyword">private</span>&#160;<span class="java&#45;object">String</span> password;&#10;	<span class="java&#45;keyword">private</span>&#160;<span class="java&#45;object">String</span> radio;&#10;	<span class="java&#45;keyword">private</span>&#160;<span class="java&#45;object">String</span> select;&#10;	<span class="java&#45;keyword">private</span>&#160;<span class="java&#45;object">String</span> textarea;&#10;	<span class="java&#45;keyword">private</span>&#160;<span class="java&#45;object">String</span> textfield;&#10;	&#10;	<span class="java&#45;keyword">public</span>&#160;<span class="java&#45;object">String</span> getCheckbox() &#123; <span class="java&#45;keyword">return</span> checkbox; &#125;&#10;	<span class="java&#45;keyword">public</span>&#160;<span class="java&#45;object">String</span> getFile() &#123; <span class="java&#45;keyword">return</span> file; &#125;&#10;	<span class="java&#45;keyword">public</span>&#160;<span class="java&#45;object">String</span> getHidden() &#123; <span class="java&#45;keyword">return</span> hidden; &#125;&#10;	<span class="java&#45;keyword">public</span>&#160;<span class="java&#45;object">String</span> getPassword() &#123; <span class="java&#45;keyword">return</span> password; &#125;&#10;	<span class="java&#45;keyword">public</span>&#160;<span class="java&#45;object">String</span> getRadio() &#123; <span class="java&#45;keyword">return</span> radio; &#125;&#10;	<span class="java&#45;keyword">public</span>&#160;<span class="java&#45;object">String</span> getSelect() &#123; <span class="java&#45;keyword">return</span> select; &#125;&#10;	<span class="java&#45;keyword">public</span>&#160;<span class="java&#45;object">String</span> getTextarea() &#123; <span class="java&#45;keyword">return</span> textarea; &#125;&#10;	<span class="java&#45;keyword">public</span>&#160;<span class="java&#45;object">String</span> getTextfield() &#123; <span class="java&#45;keyword">return</span> textfield; &#125;&#10;	&#10;	<span class="java&#45;keyword">public</span> void setCheckbox(<span class="java&#45;object">String</span> checkbox) &#123; <span class="java&#45;keyword">this</span>.checkbox = checkbox; &#125;&#10;	<span class="java&#45;keyword">public</span> void setFile(<span class="java&#45;object">String</span> file) &#123; <span class="java&#45;keyword">this</span>.file = file; &#125;&#10;	<span class="java&#45;keyword">public</span> void setHidden(<span class="java&#45;object">String</span> hidden) &#123; <span class="java&#45;keyword">this</span>.hidden = hidden; &#125;&#10;	<span class="java&#45;keyword">public</span> void setPassword(<span class="java&#45;object">String</span> password) &#123; <span class="java&#45;keyword">this</span>.password = password; &#125;&#10;	<span class="java&#45;keyword">public</span> void setRadio(<span class="java&#45;object">String</span> radio) &#123; <span class="java&#45;keyword">this</span>.radio = radio; &#125;&#10;	<span class="java&#45;keyword">public</span> void setSelect(<span class="java&#45;object">String</span> select) &#123; <span class="java&#45;keyword">this</span>.select = select; &#125;&#10;	<span class="java&#45;keyword">public</span> void setTextarea(<span class="java&#45;object">String</span> textarea) &#123; <span class="java&#45;keyword">this</span>.textarea = textarea; &#125;&#10;	<span class="java&#45;keyword">public</span> void setTextfield(<span class="java&#45;object">String</span> textfield) &#123; <span class="java&#45;keyword">this</span>.textfield = textfield; &#125;&#10;	&#10;	<span class="java&#45;keyword">public</span>&#160;<span class="java&#45;object">String</span> execute() <span class="java&#45;keyword">throws</span> Exception &#123;&#10;		<span class="java&#45;keyword">return</span> SUCCESS;&#10;	&#125;&#10;&#125;</pre>
 </tr>
 </table><br/>
 <blockquote class="blockquote"> Read more: <a href="UI Tags.html" title="UI Tags">UI Tags</a></blockquote>
-<p class="paragraph"><h2 class="heading2"><a name="TutorialLesson04-01-01-TheTemplateSystem%3A"> The Template System:</a></h2></p>WebWork uses the Velocity template system to render the actual HTML output for all UI tags. A default implementation of all templates has been included with the core distribution allowing users to use WebWork&#039;s UI tags &quot;out of the box&quot;. Templates can be edited individually or replaced entirely allowing for complete customization of the resulting HTML output. In addition, the default template can be overridden on a per tag basis allowing for a very fine level of control. The default templates are located in the <tt class="monospaced">webwork-2.1.jar</tt> file under <tt class="monospaced">/template/xhtml</tt>.<p class="paragraph">If you unpack <tt class="monospaced">webwork-2.1.jar</tt> and look under the <tt class="monospaced">/template/xhtml</tt> directory you will see a bunch of velocity templates. Most of them correspond to a specific UI Tag, and those have the name of the tag they render. If you&#039;re familiar with Velocity, I recommend you analyse the template files to see what you&#039;re capable of doing with them. Since version 2.1, there&#039;s also a <tt class="monospaced">/template/simple</tt> directory, which is a simpler version of the HTML form controls (just the control, no table or label).</p>If you want do display your UI components in a different layout than the one that comes with WebWork, you can:<br/>
+<p class="paragraph"><h2 class="heading2"><a name="TutorialLesson04-01-01-TheTemplateSystem%3A"> The Template System:</a></h2></p>WebWork uses the Velocity template system to render the actual HTML output for all UI tags. A default implementation of all templates has been included with the core distribution allowing users to use WebWork&#039;s UI tags &quot;out of the box&quot;. Templates can be edited individually or replaced entirely allowing for complete customization of the resulting HTML output. In addition, the default template can be overridden on a per tag basis allowing for a very fine level of control. The default templates are located in the <tt class="monospaced">webwork-2.1.1.jar</tt> file under <tt class="monospaced">/template/xhtml</tt>.<p class="paragraph">If you unpack <tt class="monospaced">webwork-2.1.1.jar</tt> and look under the <tt class="monospaced">/template/xhtml</tt> directory you will see a bunch of velocity templates. Most of them correspond to a specific UI Tag, and those have the name of the tag they render. If you&#039;re familiar with Velocity, I recommend you analyse the template files to see what you&#039;re capable of doing with them. Since version 2.1, there&#039;s also a <tt class="monospaced">/template/simple</tt> directory, which is a simpler version of the HTML form controls (just the control, no table or label).</p>If you want do display your UI components in a different layout than the one that comes with WebWork, you can:<br/>
 
 <ul class="star">
 <li> Edit and replace the files in <tt class="monospaced">/template/xhtml</tt> (repack the JAR or create the same directory structure somewhere else and make sure your container looks that path before the JAR);</li>
 <ul class="star">
 <li> Specifying the location of the templates for each tag individually using the theme or the template property. The former allows you to specify the directory where all templates are (thus, WebWork looks for templates with the same name as the ones in <tt class="monospaced">/template/xhtml</tt>), while the latter allows you to indicate the exact template to be used for that component.</li>
 </ul><br/>
-<blockquote class="blockquote"> Read more: <a href="Templates.html" title="Templates">Templates</a>, <a href="Themes.html" title="Themes">Themes</a></blockquote><p class="paragraph">The third approach is demonstrated in the example below.</p><h3 class="heading3"><a name="TutorialLesson04-01-01-ex02.jsp%3A"> ex02.jsp:</a></h3>
+<blockquote class="blockquote"> Read more: <a href="Templates.html" title="Templates">Templates</a>, <a href="Themes.html" title="Themes">Themes</a></blockquote><p class="paragraph">The third approach is demonstrated in the example below. Note that, by default, the specified theme directory should be under <tt class="monospaced">/template</tt> and the specified template file should be under <tt class="monospaced">/template/xhtml</tt>.</p><h3 class="heading3"><a name="TutorialLesson04-01-01-ex02.jsp%3A"> ex02.jsp:</a></h3>
 <div class="code"><div class="codeContent">
-<pre>&lt;&#37;&#64; taglib uri=<span class="java&#45;quote">&quot;webwork&quot;</span> prefix=<span class="java&#45;quote">&quot;ww&quot;</span> &#37;&gt; &#10;&lt;html&gt; &#10;&lt;head&gt; &#10;&lt;title&gt;WebWork Tutorial &#45; Lesson 4.1.1 &#45; Example 2&lt;/title&gt; &#10;&lt;/head&gt; &#10;&#10;&lt;body&gt; &#10;&#10;&lt;p&gt;Template Change Example:&lt;/p&gt; &#10;&#10;&lt;p&gt;&lt;ww:checkbox name=<span class="java&#45;quote">&quot;&#039;checkbox&#039;&quot;</span> label=<span class="java&#45;quote">&quot;&#039;A checkbox&#039;&quot;</span> &#10;fieldValue=<span class="java&#45;quote">&quot;&#039;checkbox&#95;value&#039;&quot;</span> theme=<span class="java&#45;quote">&quot;/files/templates/components&quot;</span> /&gt;&lt;/p&gt; &#10;&#10;&lt;p&gt;&lt;ww:textfield name=<span class="java&#45;quote">&quot;&#039;textfield&#039;&quot;</span> label=<span class="java&#45;quote">&quot;&#039;A text field&#039;&quot;</span> &#10;template=<span class="java&#45;quote">&quot;/files/templates/components/mytextfield.vm&quot;</span> /&gt;&lt;/p&gt; &#10;&#10;&lt;/body&gt; &#10;&lt;/html&gt;</pre>
-</div></div><p class="paragraph"><h3 class="heading3"><a name="TutorialLesson04-01-01-%2Ffiles%2Ftemplates%2Fcomponents%2Fcheckbox.vm%3A"> /files/templates/components/checkbox.vm:</a></h3>
+<pre>&lt;&#37;&#64; taglib uri=<span class="java&#45;quote">&quot;webwork&quot;</span> prefix=<span class="java&#45;quote">&quot;ww&quot;</span> &#37;&gt; &#10;&lt;html&gt; &#10;&lt;head&gt; &#10;&lt;title&gt;WebWork Tutorial &#45; Lesson 4.1.1 &#45; Example 2&lt;/title&gt; &#10;&lt;/head&gt; &#10;&#10;&lt;body&gt; &#10;&#10;&lt;p&gt;Template Change Example:&lt;/p&gt; &#10;&#10;&lt;p&gt;&lt;ww:checkbox name=<span class="java&#45;quote">&quot;&#039;checkbox&#039;&quot;</span> label=<span class="java&#45;quote">&quot;&#039;A checkbox&#039;&quot;</span> fieldValue=<span class="java&#45;quote">&quot;&#039;checkbox&#95;value&#039;&quot;</span> theme=<span class="java&#45;quote">&quot;&#039;mytheme&#039;&quot;</span> /&gt;&lt;/p&gt; &#10;&#10;&lt;p&gt;&lt;ww:textfield name=<span class="java&#45;quote">&quot;&#039;textfield&#039;&quot;</span> label=<span class="java&#45;quote">&quot;&#039;A text field&#039;&quot;</span> template=<span class="java&#45;quote">&quot;mytextfield.vm&quot;</span> /&gt;&lt;/p&gt; &#10;&#10;&lt;/body&gt; &#10;&lt;/html&gt;</pre>
+</div></div><p class="paragraph"><h3 class="heading3"><a name="TutorialLesson04-01-01-%2Ftemplate%2Fmytheme%2Fcheckbox.vm%3A"> /template/mytheme/checkbox.vm:</a></h3>
 <div class="code"><div class="codeContent">
 <pre>&lt;div align=<span class="java&#45;quote">&quot;center&quot;</span>&gt; &#10;	&lt;input type=<span class="java&#45;quote">&quot;checkbox&quot;</span> &#10;		name=<span class="java&#45;quote">&quot;$&#33;webwork.htmlEncode($parameters.name)&quot;</span> &#10;		value=<span class="java&#45;quote">&quot;$&#33;webwork.htmlEncode($parameters.fieldValue)&quot;</span> &#10;	#<span class="java&#45;keyword">if</span> ($parameters.nameValue) checked=<span class="java&#45;quote">&quot;checked&quot;</span> #end &#10;	#<span class="java&#45;keyword">if</span> ($parameters.disabled == <span class="java&#45;keyword">true</span>) disabled=<span class="java&#45;quote">&quot;disabled&quot;</span> #end &#10;	#<span class="java&#45;keyword">if</span> ($parameters.tabindex) tabindex=<span class="java&#45;quote">&quot;$&#33;webwork.htmlEncode($parameters.tabindex)&quot;</span> #end &#10;	#<span class="java&#45;keyword">if</span> ($parameters.onchange) onchange=<span class="java&#45;quote">&quot;$&#33;webwork.htmlEncode($parameters.onchange)&quot;</span> #end &#10;	#<span class="java&#45;keyword">if</span> ($parameters.id) id=<span class="java&#45;quote">&quot;$&#33;webwork.htmlEncode($parameters.id)&quot;</span> #end &#10;	/&gt;&lt;br /&gt; &#10;	$&#33;webwork.htmlEncode($parameters.label) &#10;&lt;/div&gt;</pre>
-</div></div></p><h3 class="heading3"><a name="TutorialLesson04-01-01-%2Ffiles%2Ftemplates%2Fcomponents%2Fmytextfield.vm%3A"> /files/templates/components/mytextfield.vm:</a></h3>
+</div></div></p><h3 class="heading3"><a name="TutorialLesson04-01-01-%2Ftemplate%2Fxhtml%2Fmytextfield.vm%3A"> /template/xhtml/mytextfield.vm:</a></h3>
 <div class="code"><div class="codeContent">
 <pre>&lt;div align=<span class="java&#45;quote">&quot;center&quot;</span>&gt; &#10;	&lt;input type=<span class="java&#45;quote">&quot;text&quot;</span> &#10;		name=<span class="java&#45;quote">&quot;$&#33;webwork.htmlEncode($parameters.name)&quot;</span> &#10;	#<span class="java&#45;keyword">if</span> ($parameters.size) size=<span class="java&#45;quote">&quot;$&#33;webwork.htmlEncode($parameters.size)&quot;</span> #end &#10;	#<span class="java&#45;keyword">if</span> ($parameters.maxlength) maxlength=<span class="java&#45;quote">&quot;$&#33;webwork.htmlEncode($parameters.maxlength)&quot;</span> #end &#10;	#<span class="java&#45;keyword">if</span> ($parameters.nameValue) value=<span class="java&#45;quote">&quot;$&#33;webwork.htmlEncode($parameters.nameValue)&quot;</span> #end &#10;	#<span class="java&#45;keyword">if</span> ($parameters.disabled == <span class="java&#45;keyword">true</span>) disabled=<span class="java&#45;quote">&quot;disabled&quot;</span> #end &#10;	#<span class="java&#45;keyword">if</span> ($parameters.readonly) readonly=<span class="java&#45;quote">&quot;readonly&quot;</span> #end &#10;	#<span class="java&#45;keyword">if</span> ($parameters.onkeyup) onkeyup=<span class="java&#45;quote">&quot;$&#33;webwork.htmlEncode($parameters.onkeyup)&quot;</span> #end &#10;	#<span class="java&#45;keyword">if</span> ($parameters.tabindex) tabindex=<span class="java&#45;quote">&quot;$&#33;webwork.htmlEncode($parameters.tabindex)&quot;</span> #end &#10;	#<span class="java&#45;keyword">if</span> ($parameters.onchange) onchange=<span class="java&#45;quote">&quot;$&#33;webwork.htmlEncode($parameters.onchange)&quot;</span> #end &#10;	#<span class="java&#45;keyword">if</span> ($parameters.id) id=<span class="java&#45;quote">&quot;$&#33;webwork.htmlEncode($parameters.id)&quot;</span> #end &#10;	/&gt;&lt;br /&gt; &#10;	$&#33;webwork.htmlEncode($parameters.label) &#10;&lt;/div&gt;</pre>
 </div></div><p class="paragraph"><h3 class="heading3"><a name="TutorialLesson04-01-01-HTMLresultafterprocessingex02.jsp%3A"> HTML result after processing ex02.jsp:</a></h3>
 <div class="code"><div class="codeContent">
 <pre>&lt;html&gt; &#10;&lt;head&gt; &#10;&lt;title&gt;WebWork Tutorial &#45; Lesson 4.1.1 &#45; Example 2&lt;/title&gt; &#10;&lt;/head&gt; &#10;&#10;&lt;body&gt; &#10;&#10;&lt;p&gt;Template Change Example:&lt;/p&gt; &#10;&#10;&lt;p&gt;&lt;div align=<span class="java&#45;quote">&quot;center&quot;</span>&gt; &#10;  &lt;input type=<span class="java&#45;quote">&quot;checkbox&quot;</span> &#10;         name=<span class="java&#45;quote">&quot;checkbox&quot;</span> &#10;         value=<span class="java&#45;quote">&quot;checkbox&#95;value&quot;</span> &#10;            /&gt;&lt;br /&gt; &#10;  A checkbox &#10;&lt;/div&gt;&lt;/p&gt; &#10;&#10;&lt;p&gt;&lt;div align=<span class="java&#45;quote">&quot;center&quot;</span>&gt; &#10;  &lt;input type=<span class="java&#45;quote">&quot;text&quot;</span> &#10;                                     name=<span class="java&#45;quote">&quot;textfield&quot;</span> &#10;                    /&gt;&lt;br /&gt; &#10;  A text field &#10;&lt;/div&gt;&lt;/p&gt; &#10;&#10;&lt;/body&gt; &#10;&lt;/html&gt;</pre>
 </div></div></p><blockquote class="blockquote"> <a href="TutorialExamples.html" title="TutorialExamples">Try the example!</a></blockquote>
-<p class="paragraph"><h2 class="heading2"><a name="TutorialLesson04-01-01-BuildingCustomizedUIComponents%3A"> Building Customized UI Components:</a></h2></p>There are some situations in which none of the UI Components that come bundled with WebWork fit your requirements. In this case, the recommended approach would be to create your own custom component. In this way, you keep your web page clean of layout and error-checking issues and also promotes component reuse.<p class="paragraph">To create a custom component, just create a Velocity template for it, just like the ones that already exist. To place it in a web page, use the <tt class="monospaced">&lt;ww:component /&gt;</tt> tag and specify the location of the template in its <tt class="monospaced">template</tt> parameter.</p>To pass parameters to be used by your template, use the <tt class="monospaced">&lt;ww:param /&gt;</tt> tag (see <a href="TutorialLesson04-01.html" title="TutorialLesson04-01">lesson 4.1</a>). The example below demonstrates the creation of a custom date field.<br/>
+<p class="paragraph"><h2 class="heading2"><a name="TutorialLesson04-01-01-BuildingCustomizedUIComponents%3A"> Building Customized UI Components:</a></h2></p>There are some situations in which none of the UI Components that come bundled with WebWork fit your requirements. In this case, the recommended approach would be to create your own custom component. In this way, you keep your web page clean of layout and error-checking issues and also promote component reuse.<p class="paragraph">To create a custom component, just create a Velocity template for it, just like the ones that already exist. To place it in a web page, use the <tt class="monospaced">&lt;ww:component /&gt;</tt> tag and specify the location of the template in its <tt class="monospaced">template</tt> parameter.</p>To pass parameters to be used by your template, use the <tt class="monospaced">&lt;ww:param /&gt;</tt> tag (see <a href="TutorialLesson04-01.html" title="TutorialLesson04-01">lesson 4.1</a>). The example below demonstrates the creation of a custom date field.<br/>
 
 <blockquote class="blockquote"> Read more: <a href="UI Tags.html" title="UI Tags">UI Tags</a></blockquote>
 <p class="paragraph"><h3 class="heading3"><a name="TutorialLesson04-01-01-ex03.jsp%3A"> ex03.jsp:</a></h3>
 <div class="code"><div class="codeContent">
-<pre>&lt;&#37;&#64; taglib uri=<span class="java&#45;quote">&quot;webwork&quot;</span> prefix=<span class="java&#45;quote">&quot;ww&quot;</span> &#37;&gt; &#10;&lt;html&gt; &#10;&lt;head&gt; &#10;&lt;title&gt;WebWork Tutorial &#45; Lesson 4.1.1 &#45; Example 3&lt;/title&gt; &#10;&lt;/head&gt; &#10;&#10;&lt;body&gt; &#10;&lt;p&gt;Custom Component Example:&lt;/p&gt; &#10;&#10;&lt;p&gt; &#10;&lt;ww:component template=<span class="java&#45;quote">&quot;/files/templates/components/datefield.vm&quot;</span>&gt; &#10;	&lt;ww:param name=<span class="java&#45;quote">&quot;label&quot;</span> value=<span class="java&#45;quote">&quot;&#039;Date&#039;&quot;</span> /&gt; &#10;	&lt;ww:param name=<span class="java&#45;quote">&quot;name&quot;</span> value=<span class="java&#45;quote">&quot;&#039;mydatefield&#039;&quot;</span> /&gt; &#10;	&lt;ww:param name=<span class="java&#45;quote">&quot;size&quot;</span> value=<span class="java&#45;quote">&quot;3&quot;</span> /&gt; &#10;&lt;/ww:component&gt; &#10;&lt;/p&gt; &#10;&#10;&lt;/body&gt; &#10;&lt;/html&gt;</pre>
-</div></div></p><h3 class="heading3"><a name="TutorialLesson04-01-01-%2Ffiles%2Ftemplates%2Fcomponents%2Fdatefield.vm%3A"> /files/templates/components/datefield.vm:</a></h3>
+<pre>&lt;&#37;&#64; taglib uri=<span class="java&#45;quote">&quot;webwork&quot;</span> prefix=<span class="java&#45;quote">&quot;ww&quot;</span> &#37;&gt; &#10;&lt;html&gt; &#10;&lt;head&gt; &#10;&lt;title&gt;WebWork Tutorial &#45; Lesson 4.1.1 &#45; Example 3&lt;/title&gt; &#10;&lt;/head&gt; &#10;&#10;&lt;body&gt; &#10;&lt;p&gt;Custom Component Example:&lt;/p&gt; &#10;&#10;&lt;p&gt; &#10;&lt;ww:component template=<span class="java&#45;quote">&quot;datefield.vm&quot;</span>&gt; &#10;	&lt;ww:param name=<span class="java&#45;quote">&quot;&#039;label&#039;&quot;</span> value=<span class="java&#45;quote">&quot;&#039;Date&#039;&quot;</span> /&gt; &#10;	&lt;ww:param name=<span class="java&#45;quote">&quot;&#039;name&#039;&quot;</span> value=<span class="java&#45;quote">&quot;&#039;mydatefield&#039;&quot;</span> /&gt; &#10;	&lt;ww:param name=<span class="java&#45;quote">&quot;&#039;size&#039;&quot;</span> value=<span class="java&#45;quote">&quot;3&quot;</span> /&gt; &#10;&lt;/ww:component&gt; &#10;&lt;/p&gt; &#10;&#10;&lt;/body&gt; &#10;&lt;/html&gt;</pre>
+</div></div></p><h3 class="heading3"><a name="TutorialLesson04-01-01-%2Ftemplate%2Fxhtml%2Fdatefield.vm%3A"> /template/xhtml/datefield.vm:</a></h3>
 <div class="code"><div class="codeContent">
-<pre>#set ($name = $tag.params.get(&#039;name&#039;)) &#10;#set ($size = $tag.params.get(&#039;size&#039;)) &#10;#set ($yearSize = $size &#42; 2) &#10;&#10;$tag.params.get(&#039;label&#039;): &#10;&lt;input type=<span class="java&#45;quote">&quot;text&quot;</span> name=<span class="java&#45;quote">&quot;$&#123;name&#125;.day&quot;</span> size=<span class="java&#45;quote">&quot;$size&quot;</span> /&gt; / &#10;&lt;input type=<span class="java&#45;quote">&quot;text&quot;</span> name=<span class="java&#45;quote">&quot;$&#123;name&#125;.month&quot;</span> size=<span class="java&#45;quote">&quot;$size&quot;</span> /&gt; / &#10;&lt;input type=<span class="java&#45;quote">&quot;text&quot;</span> name=<span class="java&#45;quote">&quot;$&#123;name&#125;.year&quot;</span> size=<span class="java&#45;quote">&quot;$yearSize&quot;</span> /&gt; (dd/mm/yyyy)</pre>
+<pre>#set ($name = $parameters.get(&#039;name&#039;)) &#10;#set ($size = $parameters.get(&#039;size&#039;)) &#10;#set ($yearSize = $size &#42; 2) &#10;&#10;$parameters.get(&#039;label&#039;): &#10;&lt;input type=<span class="java&#45;quote">&quot;text&quot;</span> name=<span class="java&#45;quote">&quot;$&#123;name&#125;.day&quot;</span> size=<span class="java&#45;quote">&quot;$size&quot;</span> /&gt; / &#10;&lt;input type=<span class="java&#45;quote">&quot;text&quot;</span> name=<span class="java&#45;quote">&quot;$&#123;name&#125;.month&quot;</span> size=<span class="java&#45;quote">&quot;$size&quot;</span> /&gt; / &#10;&lt;input type=<span class="java&#45;quote">&quot;text&quot;</span> name=<span class="java&#45;quote">&quot;$&#123;name&#125;.year&quot;</span> size=<span class="java&#45;quote">&quot;$yearSize&quot;</span> /&gt; (dd/mm/yyyy)</pre>
 </div></div><p class="paragraph"><h3 class="heading3"><a name="TutorialLesson04-01-01-HTMLresultafterprocessingex03.jsp%3A"> HTML result after processing ex03.jsp:</a></h3>
 <div class="code"><div class="codeContent">