You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by lu...@apache.org on 2014/04/26 20:40:46 UTC

svn commit: r906991 [13/17] - /websites/production/struts/content/release/2.3.x/docs/

Modified: websites/production/struts/content/release/2.3.x/docs/struts-2-annotations.html
==============================================================================
--- websites/production/struts/content/release/2.3.x/docs/struts-2-annotations.html (original)
+++ websites/production/struts/content/release/2.3.x/docs/struts-2-annotations.html Sat Apr 26 18:40:39 2014
@@ -37,7 +37,6 @@ under the License. 
     <link href='http://struts.apache.org/highlighter/style/shCoreStruts.css' rel='stylesheet' type='text/css' />
     <link href='http://struts.apache.org/highlighter/style/shThemeStruts.css' rel='stylesheet' type='text/css' />
     <script src='http://struts.apache.org/highlighter/js/shCore.js' type='text/javascript'></script>
-    <script src='http://struts.apache.org/highlighter/js/shBrushPlain.js' type='text/javascript'></script>
             <script src='http://struts.apache.org/highlighter/js/shBrushJava.js' type='text/javascript'></script>
             <script src='http://struts.apache.org/highlighter/js/shBrushXml.js' type='text/javascript'></script>
     
@@ -139,78 +138,37 @@ under the License. 
             <div id="ConfluenceContent">    <div class="aui-message hint shadowed information-macro">
                             <span class="aui-icon icon-hint">Icon</span>
                 <div class="message-content">
-                            <p>The example code for this tutorial, annotations, is available for checkout at <a shape="rect" class="external-link" href="https://svn.apache.org/repos/asf/struts/sandbox/trunk/struts2examples/">https://svn.apache.org/repos/asf/struts/sandbox/trunk/struts2examples/</a></p>
+                            <p>The example code for this tutorial, annotations, is available for checkout at <a shape="rect" class="external-link" href="https://github.com/apache/struts-examples" rel="nofollow">https://github.com/apache/struts-examples</a></p>
                     </div>
     </div>
-
-
-<h3 id="Struts2Annotations-Introduction">Introduction</h3>
-
-<p>In our previous tutorials we've been using an XML file (struts.xml) to configure our applications.  The XML file wires up the action names (register), with ActionSupport classes (RegisterAction.java), and with the result to render back to the browser (register.jsp).  Struts 2 provides an alternative to using XML to configure your application by using standard naming conventions and annotations for your action names, ActionSupport classes, and results.  </p>
-
-    <div class="aui-message hint shadowed information-macro">
+<h3 id="Struts2Annotations-Introduction">Introduction</h3><p>In our previous tutorials we've been using an XML file (struts.xml) to configure our applications. The XML file wires up the action names (register), with ActionSupport classes (RegisterAction.java), and with the result to render back to the browser (register.jsp). Struts 2 provides an alternative to using XML to configure your application by using standard naming conventions and annotations for your action names, ActionSupport classes, and results.</p>    <div class="aui-message hint shadowed information-macro">
                             <span class="aui-icon icon-hint">Icon</span>
                 <div class="message-content">
-                            <p>This tutorial assumes you understand how to apply annotations to Java classes and methods.  If you're not familiar with annotations, consult the <a shape="rect" class="external-link" href="http://download.oracle.com/javase/tutorial/java/javaOO/annotations.html" rel="nofollow">Java online tutorial</a>.</p>
+                            <p>This tutorial assumes you understand how to apply annotations to Java classes and methods. If you're not familiar with annotations, consult the <a shape="rect" class="external-link" href="http://download.oracle.com/javase/tutorial/java/javaOO/annotations.html" rel="nofollow">Java online tutorial</a>.</p>
                     </div>
     </div>
-
-
     <div class="aui-message success shadowed information-macro">
                             <span class="aui-icon icon-success">Icon</span>
                 <div class="message-content">
                             <p>The <a shape="rect" class="external-link" href="http://struts.apache.org/mail.html">Struts 2 user mailing list</a> is an excellent place to get help. If you are having a problem getting the tutorial example applications to work search the Struts 2 mailing list. If you don't find an answer to your problem, post a question on the mailing list.</p>
                     </div>
     </div>
-
-
-<h3 id="Struts2Annotations-Struts2ConventionPlugin">Struts 2 Convention Plugin</h3>
-<p>Struts 2 enables the use of standard naming conventions and annotations when you include the Convention plugin in your application's class path.  If you're using Maven you'll need to add a dependency:</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Convention Plugin Dependency</b></div><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: xml; gutter: false" type="syntaxhighlighter"><![CDATA[
-
-&lt;dependency&gt;
+<h3 id="Struts2Annotations-Struts2ConventionPlugin">Struts 2 Convention Plugin</h3><p>Struts 2 enables the use of standard naming conventions and annotations when you include the Convention plugin in your application's class path. If you're using Maven you'll need to add a dependency:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Convention Plugin Dependency</b></div><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: xml; gutter: false" type="syntaxhighlighter"><![CDATA[&lt;dependency&gt;
   &lt;groupId&gt;org.apache.struts&lt;/groupId&gt;
   &lt;artifactId&gt;struts2-convention-plugin&lt;/artifactId&gt;
   &lt;version&gt;2.2.1&lt;/version&gt;
 &lt;/dependency&gt;
 
 ]]></script>
-</div></div>
-
-<p>If you're using Ant then copy the struts2-convention-plugin jar file from the Struts 2 download to your WEB-INF/lib folder.</p>
-
-    <div class="aui-message success shadowed information-macro">
+</div></div><p>If you're using Ant then copy the struts2-convention-plugin jar file from the Struts 2 download to your WEB-INF/lib folder.</p>    <div class="aui-message success shadowed information-macro">
                             <span class="aui-icon icon-success">Icon</span>
                 <div class="message-content">
-                            <p>The convention plugin provide several different ways you can configure your Struts 2 application without using XML.  Consult the <a shape="rect" href="convention-plugin.html">Convention Plugin</a> documentation for complete details. This tutorial only examines one simple way of following the conventions provided by the Convention plugin.</p>
+                            <p>The convention plugin provide several different ways you can configure your Struts 2 application without using XML. Consult the <a shape="rect" href="convention-plugin.html">Convention Plugin</a> documentation for complete details. This tutorial only examines one simple way of following the conventions provided by the Convention plugin.</p>
                     </div>
     </div>
-
-
-<p>When you run the example application you'll see on the index.jsp page a link to Get your hello.  This URL for the link is hello.action.  When you click on this link, the execute method of class HelloAction.java (which is a Struts 2 ActionSupport class) is run.  The view page rendered back to the browser after the execute method returns success is hello-success.jsp.</p>
-
-<p>None of the above is wired up using XML but rather happens because the application follows the standard naming conventions expected by the Convention plugin.  The first convention is that the ActionSupport class, HelloAction.java, is in package org.apache.struts.struts2annotations.action.  One of the Convention plugin's defaults is to look for ActionSupport classes that are in package structure that ends in action.  The next convention the application follows is that HelloAction.java extends the ActionSupport class and defines an execute method.  The link is hello.action.  When the Struts 2 filter sees a request for hello.action it will map that request to the HelloAction class's execute method due to the Convention plugin being used.  </p>
-
-<p>So a link of hello.action causes the execute method of class HelloAction to be run.  That method returns "success."  Because the application is using the Convention plugin, Struts 2 will render back to the browser a view page named hello-success.jsp that is located in WEB-INF/content (by default the Convention plugin expects all view pages to be in this location).  If the execute method returns "input" or "error" then the view page rendered would have been hello-input.jsp or hello-error.jsp.</p>
-
-<h3 id="Struts2Annotations-Struts2ConfigurationPlugin">Struts 2 Configuration Plugin</h3>
-<p>In a <a shape="rect" href="debugging-struts.html">previous tutorial</a> we reviewed how to use the Struts 2 Configuration plugin to view the details of how Struts 2 has configured your application.  When using the Convention plugin, it's very handy to also use the Configuration plugin during development.  On the example application's home page is a link to the application's configuration.  Click on that link and then the hello link on the left menu (under Actions in default).  You'll see the configuration for the hello action including it's Action class, result, and view page.</p>
-
-
-<p><img class="confluence-embedded-image confluence-content-image-border" src="https://cwiki.apache.org/confluence/download/attachments/24184167/Screen%20shot%202010-10-24%20at%2010.51.45%20AM.png?version=1&amp;modificationDate=1287922371000&amp;api=v2" data-image-src="/confluence/download/attachments/24184167/Screen%20shot%202010-10-24%20at%2010.51.45%20AM.png?version=1&amp;modificationDate=1287922371000&amp;api=v2"></p>
-
-<h3 id="Struts2Annotations-Annotations">Annotations</h3>
-
-<p>If you want to go beyond the simple naming conventions provided by the Convention plugin, you can use the Struts 2 annotations also provided by the plugin.  For example, a common work-flow for a Struts 2 application is to first execute the ActionSupport class's input method to setup form field default values and then to run the execute method of the same ActionSupport class when the form is submitted (to validate and save the user's input).</p>
-
-<p>The link to Register for the drawing on the example application's home page follows this work flow.  The link value is register-input.action.  If you examine the RegisterAction.java class you'll find the input method with an Action annotation.</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Action Annotation</b></div><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
-
-@Action(&quot;register-input&quot;)
+<p>When you run the example application you'll see on the index.jsp page a link to Get your hello. This URL for the link is hello.action. When you click on this link, the execute method of class HelloAction.java (which is a Struts 2 ActionSupport class) is run. The view page rendered back to the browser after the execute method returns success is hello-success.jsp.</p><p>None of the above is wired up using XML but rather happens because the application follows the standard naming conventions expected by the Convention plugin. The first convention is that the ActionSupport class, HelloAction.java, is in package org.apache.struts.struts2annotations.action. One of the Convention plugin's defaults is to look for ActionSupport classes that are in package structure that ends in action. The next convention the application follows is that HelloAction.java extends the ActionSupport class and defines an execute method. The link is hello.action. When the Struts 2 filter sees a request for hell
 o.action it will map that request to the HelloAction class's execute method due to the Convention plugin being used.</p><p>So a link of hello.action causes the execute method of class HelloAction to be run. That method returns "success." Because the application is using the Convention plugin, Struts 2 will render back to the browser a view page named hello-success.jsp that is located in WEB-INF/content (by default the Convention plugin expects all view pages to be in this location). If the execute method returns "input" or "error" then the view page rendered would have been hello-input.jsp or hello-error.jsp.</p><h3 id="Struts2Annotations-Struts2ConfigurationPlugin">Struts 2 Configuration Plugin</h3><p>In a <a shape="rect" href="debugging-struts.html">previous tutorial</a> we reviewed how to use the Struts 2 Configuration plugin to view the details of how Struts 2 has configured your application. When using the Convention plugin, it's very handy to also use the Configuration plugin 
 during development. On the example application's home page is a link to the application's configuration. Click on that link and then the hello link on the left menu (under Actions in default). You'll see the configuration for the hello action including it's Action class, result, and view page.</p><p><img class="confluence-embedded-image confluence-content-image-border" src="https://cwiki.apache.org/confluence/download/attachments/24184167/Screen%20shot%202010-10-24%20at%2010.51.45%20AM.png?version=1&amp;modificationDate=1287922371000&amp;api=v2" data-image-src="/confluence/download/attachments/24184167/Screen%20shot%202010-10-24%20at%2010.51.45%20AM.png?version=1&amp;modificationDate=1287922371000&amp;api=v2"></p><h3 id="Struts2Annotations-Annotations">Annotations</h3><p>If you want to go beyond the simple naming conventions provided by the Convention plugin, you can use the Struts 2 annotations also provided by the plugin. For example, a common work-flow for a Struts 2 application 
 is to first execute the ActionSupport class's input method to setup form field default values and then to run the execute method of the same ActionSupport class when the form is submitted (to validate and save the user's input).</p><p>The link to Register for the drawing on the example application's home page follows this work flow. The link value is register-input.action. If you examine the RegisterAction.java class you'll find the input method with an Action annotation.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Action Annotation</b></div><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[@Action(&quot;register-input&quot;)
 public String input() throws Exception {
 
 	logger.info(&quot;In input method of class Register&quot;);
@@ -219,29 +177,12 @@ public String input() throws Exception {
 }
 
 ]]></script>
-</div></div>
-
-<p>The Action annotation tells Struts 2 to execute the annotated method when the action link value equals the Action annotation's value ("register-input").  So a link of register-input.action will call the input method of class RegisterAction.  On the example application's home page is a link to Register for the drawing with a URL of register-input.action.  </p>
-
-<p>The input method above returns "input".  By the standards of the Convention plugin, the view page rendered will be register-input.jsp (from WEB-INF/content).  On that view page is a Struts 2 form tag with an action attribute value of register.  When submitting the form, the execute method of class RegisterAction will be run.  Since the execute method returns success, the view page rendered is register-success.jsp.</p>
-
-<h3 id="Struts2Annotations-Struts2ConfigurationValues">Struts 2 Configuration Values</h3>
-<p>In previous examples, we included in struts.xml values for some of the Struts 2 configuration parameters.</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>struts.xml parameter configuration</b></div><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: xml; gutter: false" type="syntaxhighlighter"><![CDATA[
-
-&lt;constant name=&quot;struts.devMode&quot; value=&quot;true&quot; /&gt;
+</div></div><p>The Action annotation tells Struts 2 to execute the annotated method when the action link value equals the Action annotation's value ("register-input"). So a link of register-input.action will call the input method of class RegisterAction. On the example application's home page is a link to Register for the drawing with a URL of register-input.action.</p><p>The input method above returns "input". By the standards of the Convention plugin, the view page rendered will be register-input.jsp (from WEB-INF/content). On that view page is a Struts 2 form tag with an action attribute value of register. When submitting the form, the execute method of class RegisterAction will be run. Since the execute method returns success, the view page rendered is register-success.jsp.</p><h3 id="Struts2Annotations-Struts2ConfigurationValues">Struts 2 Configuration Values</h3><p>In previous examples, we included in struts.xml values for some of the Struts 2 configuration parameters.</p><div
  class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>struts.xml parameter configuration</b></div><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: xml; gutter: false" type="syntaxhighlighter"><![CDATA[&lt;constant name=&quot;struts.devMode&quot; value=&quot;true&quot; /&gt;
 
 ]]></script>
-</div></div>
-
-<p>When we don't use a struts.xml file, we can set the value of these Struts 2 parameters by using filter parameters in web.xml:</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Struts 2 Parameter Configurate web.xml</b></div><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: xml; gutter: false" type="syntaxhighlighter"><![CDATA[
-
-&lt;filter&gt;
+</div></div><p>When we don't use a struts.xml file, we can set the value of these Struts 2 parameters by using filter parameters in web.xml:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Struts 2 Parameter Configurate web.xml</b></div><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: xml; gutter: false" type="syntaxhighlighter"><![CDATA[&lt;filter&gt;
   &lt;filter-name&gt;struts2&lt;/filter-name&gt;
     &lt;filter-class&gt;org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter&lt;/filter-class&gt;
       &lt;init-param&gt;
@@ -251,13 +192,7 @@ public String input() throws Exception {
 &lt;/filter&gt;
 
 ]]></script>
-</div></div>
-
-
-<h3 id="Struts2Annotations-Summary">Summary</h3>
-
-<p>We've just scratched the surface of what the Struts 2 convention plugin provides to reduce or eliminate the need to use an XML file to configure your Struts 2 application.  The Struts 2 Convention plugin provides ways to map multiple actions to the same method, map results to different view pages, map errors to view pages, and much more.  Be sure to read through the <a shape="rect" href="convention-plugin.html">Convention Plugin</a> documentation for alternative ways to configure your Struts 2 application.</p>
-</div>
+</div></div><h3 id="Struts2Annotations-Summary">Summary</h3><p>We've just scratched the surface of what the Struts 2 convention plugin provides to reduce or eliminate the need to use an XML file to configure your Struts 2 application. The Struts 2 Convention plugin provides ways to map multiple actions to the same method, map results to different view pages, map errors to view pages, and much more. Be sure to read through the <a shape="rect" href="convention-plugin.html">Convention Plugin</a> documentation for alternative ways to configure your Struts 2 application.</p></div>
         </div>
 
         

Modified: websites/production/struts/content/release/2.3.x/docs/struts-2-blank-archetype.html
==============================================================================
--- websites/production/struts/content/release/2.3.x/docs/struts-2-blank-archetype.html (original)
+++ websites/production/struts/content/release/2.3.x/docs/struts-2-blank-archetype.html Sat Apr 26 18:40:39 2014
@@ -37,7 +37,6 @@ under the License. 
     <link href='http://struts.apache.org/highlighter/style/shCoreStruts.css' rel='stylesheet' type='text/css' />
     <link href='http://struts.apache.org/highlighter/style/shThemeStruts.css' rel='stylesheet' type='text/css' />
     <script src='http://struts.apache.org/highlighter/js/shCore.js' type='text/javascript'></script>
-    <script src='http://struts.apache.org/highlighter/js/shBrushPlain.js' type='text/javascript'></script>
             <script src='http://struts.apache.org/highlighter/js/shBrushJava.js' type='text/javascript'></script>
     
     <script type="text/javascript">
@@ -146,11 +145,11 @@ under the License. 
 <p><strong>Contents</strong></p>
 
 <style type="text/css">/*<![CDATA[*/
-div.rbtoc1394094387248 {padding: 0px;}
-div.rbtoc1394094387248 ul {list-style: none;margin-left: 0px;padding-left: 1em;}
-div.rbtoc1394094387248 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1396727502890 {padding: 0px;}
+div.rbtoc1396727502890 ul {list-style: none;margin-left: 0px;padding-left: 1em;}
+div.rbtoc1396727502890 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style><div class="toc-macro rbtoc1394094387248">
+/*]]>*/</style><div class="toc-macro rbtoc1396727502890">
 <ul class="toc-indentation"><li><span class="TOCOutline">1</span> <a shape="rect" href="#Struts2BlankArchetype-CreatingOurblank-archetypeProject">Creating Our blank-archetype Project</a>
 <ul class="toc-indentation"><li><span class="TOCOutline">1.1</span> <a shape="rect" href="#Struts2BlankArchetype-Stagingrepository">Staging repository</a></li></ul>
 </li><li><span class="TOCOutline">2</span> <a shape="rect" href="#Struts2BlankArchetype-ProjectStructure">Project Structure</a>

Modified: websites/production/struts/content/release/2.3.x/docs/struts-2-form-tags.html
==============================================================================
--- websites/production/struts/content/release/2.3.x/docs/struts-2-form-tags.html (original)
+++ websites/production/struts/content/release/2.3.x/docs/struts-2-form-tags.html Sat Apr 26 18:40:39 2014
@@ -37,7 +37,6 @@ under the License. 
     <link href='http://struts.apache.org/highlighter/style/shCoreStruts.css' rel='stylesheet' type='text/css' />
     <link href='http://struts.apache.org/highlighter/style/shThemeStruts.css' rel='stylesheet' type='text/css' />
     <script src='http://struts.apache.org/highlighter/js/shCore.js' type='text/javascript'></script>
-    <script src='http://struts.apache.org/highlighter/js/shBrushPlain.js' type='text/javascript'></script>
             <script src='http://struts.apache.org/highlighter/js/shBrushJava.js' type='text/javascript'></script>
     
     <script type="text/javascript">
@@ -138,64 +137,27 @@ under the License. 
             <div id="ConfluenceContent">    <div class="aui-message hint shadowed information-macro">
                             <span class="aui-icon icon-hint">Icon</span>
                 <div class="message-content">
-                            <p>The example code for this tutorial, form_tags, can be checked out from <a shape="rect" class="external-link" href="https://svn.apache.org/repos/asf/struts/sandbox/trunk/struts2examples/">https://svn.apache.org/repos/asf/struts/sandbox/trunk/struts2examples/</a>.</p>
+                            <p>The example code for this tutorial, form_tags, can be checked out from <a shape="rect" class="external-link" href="https://github.com/apache/struts-examples" rel="nofollow">https://github.com/apache/struts-examples</a>.</p>
                     </div>
     </div>
-
-
-<h3 id="Struts2FormTags-Introduction">Introduction</h3>
-<p>In this tutorial we'll explore some of the other Struts 2 form controls.  In our previous tutorials that explained how to use Struts 2 forms (<a shape="rect" href="processing-forms.html">Processing Forms</a>, <a shape="rect" href="form-validation.html">Form Validation</a>, and <a shape="rect" href="message-resource-files.html">Message Resource Files</a>) we covered how to use the Struts 2 head, form,  textfield controls and the key attribute.  This tutorial will explore using the Struts 2 select, radio, checkbox, and checkboxlist form controls.</p>
-
-    <div class="aui-message success shadowed information-macro">
+<h3 id="Struts2FormTags-Introduction">Introduction</h3><p>In this tutorial we'll explore some of the other Struts 2 form controls. In our previous tutorials that explained how to use Struts 2 forms (<a shape="rect" href="processing-forms.html">Processing Forms</a>, <a shape="rect" href="form-validation.html">Form Validation</a>, and <a shape="rect" href="message-resource-files.html">Message Resource Files</a>) we covered how to use the Struts 2 head, form, textfield controls and the key attribute. This tutorial will explore using the Struts 2 select, radio, checkbox, and checkboxlist form controls.</p>    <div class="aui-message success shadowed information-macro">
                             <span class="aui-icon icon-success">Icon</span>
                 <div class="message-content">
                             <p>The <a shape="rect" class="external-link" href="http://struts.apache.org/mail.html">Struts 2 user mailing list</a> is an excellent place to get help. If you are having a problem getting the tutorial example applications to work search the Struts 2 mailing list. If you don't find an answer to your problem, post a question on the mailing list.</p>
                     </div>
     </div>
-
-
-<h3 id="Struts2FormTags-ExampleApplication">Example Application</h3>
-<p>The example application that supports this tutorial shows how to use Struts 2 form tags so that a user can edit his information.  The information that can be edited is encapsulated in an object of class Person.  A Person object knows these things:  first name, last name, favorite sport, gender, state of residency, is or is not over 21, and car models owned. </p>
-
-<p>To enable the user to edit his information that is stored in the Person object, we need to create a form like this one:</p>
-
-<p><img class="confluence-embedded-image" src="https://cwiki.apache.org/confluence/download/attachments/19300595/Screen%20shot%202010-04-25%20at%208.39.59%20AM.png?version=1&amp;modificationDate=1272188692000&amp;api=v2" data-image-src="/confluence/download/attachments/19300595/Screen%20shot%202010-04-25%20at%208.39.59%20AM.png?version=1&amp;modificationDate=1272188692000&amp;api=v2"></p>
-
-<p>The form allows the user to make changes.  After submitting the form, the Struts 2 framework will update the state of the Person object.</p>
-
-<p>The first and last names are shown on the form (see edit.jsp) using the Struts 2 textfield tag, which we've discussed in previous tutorials.  </p>
-
-<h3 id="Struts2FormTags-Struts2SelectTag">Struts 2 Select Tag</h3>
-<p>A user can select one favorite sport from several choices.  The example application uses the Struts 2 select tag to provide the list of options for the select box.  </p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Struts 2 Select Tag</b></div><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: html; gutter: false" type="syntaxhighlighter"><![CDATA[
-
-&lt;s:select key=&quot;personBean.sport&quot; list=&quot;sports&quot; /&gt;
+<h3 id="Struts2FormTags-ExampleApplication">Example Application</h3><p>The example application that supports this tutorial shows how to use Struts 2 form tags so that a user can edit his information. The information that can be edited is encapsulated in an object of class Person. A Person object knows these things: first name, last name, favorite sport, gender, state of residency, is or is not over 21, and car models owned.</p><p>To enable the user to edit his information that is stored in the Person object, we need to create a form like this one:</p><p><img class="confluence-embedded-image" src="https://cwiki.apache.org/confluence/download/attachments/19300595/Screen%20shot%202010-04-25%20at%208.39.59%20AM.png?version=1&amp;modificationDate=1272188692000&amp;api=v2" data-image-src="/confluence/download/attachments/19300595/Screen%20shot%202010-04-25%20at%208.39.59%20AM.png?version=1&amp;modificationDate=1272188692000&amp;api=v2"></p><p>The form allows the user to make changes. Afte
 r submitting the form, the Struts 2 framework will update the state of the Person object.</p><p>The first and last names are shown on the form (see edit.jsp) using the Struts 2 textfield tag, which we've discussed in previous tutorials.</p><h3 id="Struts2FormTags-Struts2SelectTag">Struts 2 Select Tag</h3><p>A user can select one favorite sport from several choices. The example application uses the Struts 2 select tag to provide the list of options for the select box.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Struts 2 Select Tag</b></div><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: html; gutter: false" type="syntaxhighlighter"><![CDATA[&lt;s:select key=&quot;personBean.sport&quot; list=&quot;sports&quot; /&gt;
 
 ]]></script>
-</div></div>
-
-<p>In these form tags, we are using the key attribute as discussed in the <a shape="rect" href="message-resource-files.html">Message Resource Files</a> tutorial.  The key attribute is used by the Struts 2 framework to determine values for the other attributes  (e.g. label and value).  We are also using a property file associated with the EditAction class to provide the label values based on the key attribute value (see the <a shape="rect" href="message-resource-files.html">Message Resource Files</a> tutorial for information on using Struts 2 property files).  </p>
-
-    <div class="aui-message hint shadowed information-macro">
+</div></div><p>In these form tags, we are using the key attribute as discussed in the <a shape="rect" href="message-resource-files.html">Message Resource Files</a> tutorial. The key attribute is used by the Struts 2 framework to determine values for the other attributes (e.g. label and value). We are also using a property file associated with the EditAction class to provide the label values based on the key attribute value (see the <a shape="rect" href="message-resource-files.html">Message Resource Files</a> tutorial for information on using Struts 2 property files).</p>    <div class="aui-message hint shadowed information-macro">
                             <span class="aui-icon icon-hint">Icon</span>
                 <div class="message-content">
-                            <p>Note that there are many attributes for the Struts 2 form tags, most of which mirror the HTML attributes associated with the tags.  You can read about all the attributes for a Struts 2 form tag by consulting the Struts 2 documentation.</p>
+                            <p>Note that there are many attributes for the Struts 2 form tags, most of which mirror the HTML attributes associated with the tags. You can read about all the attributes for a Struts 2 form tag by consulting the Struts 2 documentation.</p>
                     </div>
     </div>
-
-
-<p>The value of the list attribute of the Struts 2 select tag is used by the framework to determine what method of the action class to call in order to create the option values.  In our example application, the list attribute value of "sports" results in the framework calling the getSports method of class EditAction.  That method returns a String array containing "football", "baseball", and "basketball".  Those values are used to create the option tags inside the select tag.  </p>
-
-<p>The Struts 2 framework determines which option is preselected by using the key attribute's value to call a method on the personBean object.  Since the key attribute's value is "personBean.sport", the framework calls the personBean object's getSport method.  If the value returned by that method matches one of the option values, that option will be marked as "selected".</p>
-
-<p>Here is the HTML that results from using the above Struts 2 select tag.</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>HTML Created By Struts 2 Select Tag</b></div><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: html; gutter: false" type="syntaxhighlighter"><![CDATA[
-
-&lt;tr&gt;
+<p>The value of the list attribute of the Struts 2 select tag is used by the framework to determine what method of the action class to call in order to create the option values. In our example application, the list attribute value of "sports" results in the framework calling the getSports method of class EditAction. That method returns a String array containing "football", "baseball", and "basketball". Those values are used to create the option tags inside the select tag.</p><p>The Struts 2 framework determines which option is preselected by using the key attribute's value to call a method on the personBean object. Since the key attribute's value is "personBean.sport", the framework calls the personBean object's getSport method. If the value returned by that method matches one of the option values, that option will be marked as "selected".</p><p>Here is the HTML that results from using the above Struts 2 select tag.</p><div class="code panel pdl" style="border-width: 1px;"><div clas
 s="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>HTML Created By Struts 2 Select Tag</b></div><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: html; gutter: false" type="syntaxhighlighter"><![CDATA[&lt;tr&gt;
 &lt;td class=&quot;tdLabel&quot;&gt;
 &lt;label for=&quot;save_personBean_sport&quot; class=&quot;label&quot;&gt;Favorite sport:&lt;/label&gt;
 &lt;/td&gt;
@@ -209,29 +171,12 @@ under the License. 
 &lt;/tr&gt;
 
 ]]></script>
-</div></div>
-
-<p>Note the table formatting created by the Struts 2 framework when using the Struts 2 select tag.  The CSS classes are defined in style sheets included by the Struts 2 s:head tag.  The Struts 2 s:head tag is placed inside the edit.jsp's head section.</p>
-
-<p>Since the personBean's getSport method returns "baskeball", the basketball option value is marked as selected.</p>
-
-<h3 id="Struts2FormTags-Struts2RadioTag">Struts 2 Radio Tag</h3>
-<p>The Struts 2 radio tag&#8212;like its standard HTML counterpart&#8212;is used to display 2 or more choices, only one of which can be selected by the user.  Here is the code for the Struts 2 radio button from the example application.</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Struts 2 Radio Tag</b></div><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: html; gutter: false" type="syntaxhighlighter"><![CDATA[
-
-&lt;s:radio key=&quot;personBean.gender&quot; list=&quot;genders&quot; /&gt;
+</div></div><p>Note the table formatting created by the Struts 2 framework when using the Struts 2 select tag. The CSS classes are defined in style sheets included by the Struts 2 s:head tag. The Struts 2 s:head tag is placed inside the edit.jsp's head section.</p><p>Since the personBean's getSport method returns "baskeball", the basketball option value is marked as selected.</p><h3 id="Struts2FormTags-Struts2RadioTag">Struts 2 Radio Tag</h3><p>The Struts 2 radio tag&#8212;like its standard HTML counterpart&#8212;is used to display 2 or more choices, only one of which can be selected by the user. Here is the code for the Struts 2 radio button from the example application.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Struts 2 Radio Tag</b></div><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: html; gutter: false" type="syntaxhighlighter"><![CDATA[&lt;s:radio key=&quot;personBean.gender&quot; list=&quot;genders&quot; /&gt;
 
 ]]></script>
-</div></div>
-
-<p>Again the key attribute's value determines the value for the label and value attributes.  The label's text is derived from the EditAction.properties file (key personBean.gender).  Just like the Struts 2 select tag, the list attribute of the Struts 2 radio tag causes the framework to call the getGenders method of the EditAction class.  The Array of String objects returned are used to create the individual radio buttons.</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>HTML Created By Struts 2 Radio Tag</b></div><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: html; gutter: false" type="syntaxhighlighter"><![CDATA[
-
-&lt;tr&gt;
+</div></div><p>Again the key attribute's value determines the value for the label and value attributes. The label's text is derived from the EditAction.properties file (key personBean.gender). Just like the Struts 2 select tag, the list attribute of the Struts 2 radio tag causes the framework to call the getGenders method of the EditAction class. The Array of String objects returned are used to create the individual radio buttons.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>HTML Created By Struts 2 Radio Tag</b></div><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: html; gutter: false" type="syntaxhighlighter"><![CDATA[&lt;tr&gt;
 &lt;td class=&quot;tdLabel&quot;&gt;
 &lt;label for=&quot;save_personBean_gender&quot; class=&quot;label&quot;&gt;Gender:&lt;/label&gt;&lt;/td&gt;
 &lt;td&gt;
@@ -242,29 +187,12 @@ under the License. 
 &lt;/tr&gt;
 
 ]]></script>
-</div></div>
-
-<p>Also just like the Struts 2 select tag the result returned by calling the personBean object's getGender method is used to determine which of the radio buttons is checked.</p>
-
-<h3 id="Struts2FormTags-Struts2SelectTag-ObjectBacked">Struts 2 Select Tag - Object Backed</h3>
-<p>You may need to create a Struts 2 select tag where the options displayed to the user each have their own value that is different then what is displayed.  In the example application, the user's residency is stored as a two-letter abbreviation (e.g. KS), but the form select box should display the full state name (e.g. Kansas).  To create such a select box in Struts 2, you would use this code</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Struts 2 Select Tag Object Backed</b></div><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: html; gutter: false" type="syntaxhighlighter"><![CDATA[
-
-&lt;s:select key=&quot;personBean.residency&quot; list=&quot;states&quot; listKey=&quot;stateAbbr&quot; listValue=&quot;stateName&quot; /&gt;
+</div></div><p>Also just like the Struts 2 select tag the result returned by calling the personBean object's getGender method is used to determine which of the radio buttons is checked.</p><h3 id="Struts2FormTags-Struts2SelectTag-ObjectBacked">Struts 2 Select Tag - Object Backed</h3><p>You may need to create a Struts 2 select tag where the options displayed to the user each have their own value that is different then what is displayed. In the example application, the user's residency is stored as a two-letter abbreviation (e.g. KS), but the form select box should display the full state name (e.g. Kansas). To create such a select box in Struts 2, you would use this code</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Struts 2 Select Tag Object Backed</b></div><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: html; gutter: false" type="syntaxhighlighter"><![CDATA[&lt;s:select key=&quot;personBean.residency&quot; list=&quot;states&quot; listKey=&quot;stateAbbr&quot; listValue=&quot;stateName&quot; /&gt;
 
 ]]></script>
-</div></div>
-
-<p>The list value tells the framework to call the getStates method of the EditAction class.  That method returns an ArrayList of State objects.  Each State object has getStateAbbr and getStateName methods.  </p>
-
-<p>The listKey attribute tells the framework to use the value returned by calling the getStateAbbr method as the value for the value attribute of the HTML option tag and the value returned by calling the getStateName method as the value displayed to the user.  So the above Struts 2 select tag code results in this HTML.</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>HTML Created By Struts 2 Select Tag</b></div><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: html; gutter: false" type="syntaxhighlighter"><![CDATA[
-
-&lt;tr&gt;
+</div></div><p>The list value tells the framework to call the getStates method of the EditAction class. That method returns an ArrayList of State objects. Each State object has getStateAbbr and getStateName methods.</p><p>The listKey attribute tells the framework to use the value returned by calling the getStateAbbr method as the value for the value attribute of the HTML option tag and the value returned by calling the getStateName method as the value displayed to the user. So the above Struts 2 select tag code results in this HTML.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>HTML Created By Struts 2 Select Tag</b></div><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: html; gutter: false" type="syntaxhighlighter"><![CDATA[&lt;tr&gt;
 &lt;td class=&quot;tdLabel&quot;&gt;
 &lt;label for=&quot;save_personBean_residency&quot; class=&quot;label&quot;&gt;State resident:&lt;/label&gt;&lt;/td&gt;
 &lt;td&gt;
@@ -279,27 +207,12 @@ under the License. 
 &lt;/tr&gt;
 
 ]]></script>
-</div></div>
-
-<p>The value returned by calling the personBean object's getResidency method determines which of the select tag's option tags is marked as selected.  In our example, since getResidency returns "KS", the option tag whose value attribute equals "KS" is marked as selected.</p>
-
-<h3 id="Struts2FormTags-Struts2CheckboxTag">Struts 2 Checkbox Tag</h3>
-<p>The Struts 2 checkbox tag is used to create the HTML input type equals checkbox tag.  The value for the key attribute tells the framework what method to call to determine if the checkbox is checked or not checked.  The method called should return a Boolean value (true or false).  A return value of true will cause the checkbox to be checked and false the checkbox will not be checked.</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Struts 2 Checkbox Tag</b></div><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: html; gutter: false" type="syntaxhighlighter"><![CDATA[
-
-&lt;s:checkbox key=&quot;personBean.over21&quot; /&gt;
+</div></div><p>The value returned by calling the personBean object's getResidency method determines which of the select tag's option tags is marked as selected. In our example, since getResidency returns "KS", the option tag whose value attribute equals "KS" is marked as selected.</p><h3 id="Struts2FormTags-Struts2CheckboxTag">Struts 2 Checkbox Tag</h3><p>The Struts 2 checkbox tag is used to create the HTML input type equals checkbox tag. The value for the key attribute tells the framework what method to call to determine if the checkbox is checked or not checked. The method called should return a Boolean value (true or false). A return value of true will cause the checkbox to be checked and false the checkbox will not be checked.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Struts 2 Checkbox Tag</b></div><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: html; gutter: false" type="syntaxhighlighter"><![CDATA[&lt;s:checkbox key=&quot;personBean.over21&quot; /&gt;
 
 ]]></script>
-</div></div>
-
-<p>Since the method getOver21 returns true, the checkbox is checked.</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>HTML Created By Struts 2 Checkbox Tag</b></div><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: html; gutter: false" type="syntaxhighlighter"><![CDATA[
-
-&lt;tr&gt;
+</div></div><p>Since the method getOver21 returns true, the checkbox is checked.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>HTML Created By Struts 2 Checkbox Tag</b></div><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: html; gutter: false" type="syntaxhighlighter"><![CDATA[&lt;tr&gt;
 &lt;td valign=&quot;top&quot; align=&quot;right&quot;&gt;
 &lt;/td&gt;
 &lt;td valign=&quot;top&quot; align=&quot;left&quot;&gt;
@@ -309,34 +222,12 @@ under the License. 
 &lt;/tr&gt;
 
 ]]></script>
-</div></div>
-
-<p>When the form is submitted and the checkbox is not checked, no value will be posted for the checkbox (this is how HTML forms work).  Since the Struts 2 framework will need to update the value of the personBean's over21 instance field to false&#8212;given that the check box was not checked&#8212;the framework needs a way to determine if the checkbox was not checked after form submission.</p>
-
-<p>If you examine the HTML code created by the Struts 2 checkbox tag, you'll see that it created a hidden field associated with the personBean.over21 checkbox.  When the Struts 2 framework intercepts the submission of this form it will use this hidden form field to check if the associated checkbox field exists in the posted form data.  If that checkbox field doesn't exist then the Struts 2 framework will know to update the value of the personBean object's over21 instance variable to false.</p>
-
-<h3 id="Struts2FormTags-Struts2checkboxlistTag">Struts 2 checkboxlist Tag</h3>
-
-<p>The Struts 2 framework provides a unique form field control that creates a series of associated check boxes, one or more of which can be checked.  In the example application, the Person class has an Array of Strings, which is used to store car models owned by a person.</p>
-
-<p>Using the Struts 2 checkbox tag, we can create a series of checkboxes, one for each possible car model the user may own.  The value of each String in the personBean's carModels Array will determine which checkboxes are checked.</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Struts 2 Checkboxlist Tag</b></div><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: html; gutter: false" type="syntaxhighlighter"><![CDATA[
-
-&lt;s:checkboxlist key=&quot;personBean.carModels&quot; list=&quot;carModelsAvailable&quot; /&gt;
+</div></div><p>When the form is submitted and the checkbox is not checked, no value will be posted for the checkbox (this is how HTML forms work). Since the Struts 2 framework will need to update the value of the personBean's over21 instance field to false&#8212;given that the check box was not checked&#8212;the framework needs a way to determine if the checkbox was not checked after form submission.</p><p>If you examine the HTML code created by the Struts 2 checkbox tag, you'll see that it created a hidden field associated with the personBean.over21 checkbox. When the Struts 2 framework intercepts the submission of this form it will use this hidden form field to check if the associated checkbox field exists in the posted form data. If that checkbox field doesn't exist then the Struts 2 framework will know to update the value of the personBean object's over21 instance variable to false.</p><h3 id="Struts2FormTags-Struts2checkboxlistTag">Struts 2 checkboxlist Tag</h3><p>The Struts 2 
 framework provides a unique form field control that creates a series of associated check boxes, one or more of which can be checked. In the example application, the Person class has an Array of Strings, which is used to store car models owned by a person.</p><p>Using the Struts 2 checkbox tag, we can create a series of checkboxes, one for each possible car model the user may own. The value of each String in the personBean's carModels Array will determine which checkboxes are checked.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Struts 2 Checkboxlist Tag</b></div><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: html; gutter: false" type="syntaxhighlighter"><![CDATA[&lt;s:checkboxlist key=&quot;personBean.carModels&quot; list=&quot;carModelsAvailable&quot; /&gt;
 
 ]]></script>
-</div></div>
-
-<p>The list attributes value in the checkboxlist tag tells the Struts 2 framework which method to call to get the possible car models.  In the example application, the framework will call the EditAction class's getCarModelsAvailable method.  That method returns an Array of Strings.  For each element of the Array, the Struts 2 framework creates a checkbox (including the associated hidden field described above).  </p>
-
-<p>The key attribute value in the checkboxlist tag tells the Struts 2 framework which method to call on the personBean object to determine which checkboxes should be checked.  In the example application, the framework will call the personBean object's getCarModels method.  The getCarModels method returns an Array of Strings.  For each String value in that Array that matches a String value in the Array returned by the EditAction class's getCarModelsAvailable, the checkbox will be checked.</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>HTML Created By Struts 2 Checkboxlist Tag</b></div><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: html; gutter: false" type="syntaxhighlighter"><![CDATA[
-
-&lt;tr&gt;
+</div></div><p>The list attributes value in the checkboxlist tag tells the Struts 2 framework which method to call to get the possible car models. In the example application, the framework will call the EditAction class's getCarModelsAvailable method. That method returns an Array of Strings. For each element of the Array, the Struts 2 framework creates a checkbox (including the associated hidden field described above).</p><p>The key attribute value in the checkboxlist tag tells the Struts 2 framework which method to call on the personBean object to determine which checkboxes should be checked. In the example application, the framework will call the personBean object's getCarModels method. The getCarModels method returns an Array of Strings. For each String value in that Array that matches a String value in the Array returned by the EditAction class's getCarModelsAvailable, the checkbox will be checked.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader 
 panelHeader pdl" style="border-bottom-width: 1px;"><b>HTML Created By Struts 2 Checkboxlist Tag</b></div><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: html; gutter: false" type="syntaxhighlighter"><![CDATA[&lt;tr&gt;
 &lt;td class=&quot;tdLabel&quot;&gt;
 &lt;label for=&quot;save_personBean_carModels&quot; class=&quot;label&quot;&gt;Car models owned:&lt;/label&gt;&lt;/td&gt;
 &lt;td&gt;
@@ -353,16 +244,7 @@ under the License. 
 &lt;/tr&gt;
 
 ]]></script>
-</div></div>
-
-<p>Summary<br clear="none">
-There are several other Struts 2 form controls you should explore.  If you need more information about the Struts 2 form tags consult the Struts 2 documentation at <a shape="rect" class="external-link" href="http://struts.apache.org">http://struts.apache.org</a>.</p>
-
-<h3 id="Struts2FormTags-UpNext">Up Next</h3>
-
-<p>In our next tutorial we'll cover how to use XML to validate a user's form field entries.</p>
-
-<div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> Next </p></th><td colspan="1" rowspan="1" class="confluenceTd"><p> Onward to <a shape="rect" href="form-validation-using-xml.html">Form Validation Using XML</a> </p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> Prev </p></th><td colspan="1" rowspan="1" class="confluenceTd"><p> Return to <a shape="rect" href="debugging-struts.html">Debugging Struts</a> </p></td></tr></tbody></table></div></div>
+</div></div><p>Summary<br clear="none"> There are several other Struts 2 form controls you should explore. If you need more information about the Struts 2 form tags consult the Struts 2 documentation at <a shape="rect" class="external-link" href="http://struts.apache.org">http://struts.apache.org</a>.</p><h3 id="Struts2FormTags-UpNext">Up Next</h3><p>In our next tutorial we'll cover how to use XML to validate a user's form field entries.</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Next</p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>Onward to <a shape="rect" href="form-validation-using-xml.html">Form Validation Using XML</a></p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Prev</p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>Return to <a shape="rect" href="debugging-struts.html">Debugging Struts</a></p></td></tr></tbody></table></div></div>
         </div>
 
         

Modified: websites/production/struts/content/release/2.3.x/docs/struts-2-junit-plugin-tutorial.html
==============================================================================
--- websites/production/struts/content/release/2.3.x/docs/struts-2-junit-plugin-tutorial.html (original)
+++ websites/production/struts/content/release/2.3.x/docs/struts-2-junit-plugin-tutorial.html Sat Apr 26 18:40:39 2014
@@ -37,7 +37,6 @@ under the License. 
     <link href='http://struts.apache.org/highlighter/style/shCoreStruts.css' rel='stylesheet' type='text/css' />
     <link href='http://struts.apache.org/highlighter/style/shThemeStruts.css' rel='stylesheet' type='text/css' />
     <script src='http://struts.apache.org/highlighter/js/shCore.js' type='text/javascript'></script>
-    <script src='http://struts.apache.org/highlighter/js/shBrushPlain.js' type='text/javascript'></script>
             <script src='http://struts.apache.org/highlighter/js/shBrushJava.js' type='text/javascript'></script>
     
     <script type="text/javascript">

Modified: websites/production/struts/content/release/2.3.x/docs/struts-2-maven-archetypes.html
==============================================================================
--- websites/production/struts/content/release/2.3.x/docs/struts-2-maven-archetypes.html (original)
+++ websites/production/struts/content/release/2.3.x/docs/struts-2-maven-archetypes.html Sat Apr 26 18:40:39 2014
@@ -37,7 +37,6 @@ under the License. 
     <link href='http://struts.apache.org/highlighter/style/shCoreStruts.css' rel='stylesheet' type='text/css' />
     <link href='http://struts.apache.org/highlighter/style/shThemeStruts.css' rel='stylesheet' type='text/css' />
     <script src='http://struts.apache.org/highlighter/js/shCore.js' type='text/javascript'></script>
-    <script src='http://struts.apache.org/highlighter/js/shBrushPlain.js' type='text/javascript'></script>
             <script src='http://struts.apache.org/highlighter/js/shBrushJava.js' type='text/javascript'></script>
     
     <script type="text/javascript">
@@ -140,11 +139,11 @@ under the License. 
 <p><strong>Contents</strong></p>
 
 <style type="text/css">/*<![CDATA[*/
-div.rbtoc1394094388082 {padding: 0px;}
-div.rbtoc1394094388082 ul {list-style: none;margin-left: 0px;padding-left: 1em;}
-div.rbtoc1394094388082 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1396727502045 {padding: 0px;}
+div.rbtoc1396727502045 ul {list-style: none;margin-left: 0px;padding-left: 1em;}
+div.rbtoc1396727502045 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style><div class="toc-macro rbtoc1394094388082">
+/*]]>*/</style><div class="toc-macro rbtoc1396727502045">
 <ul class="toc-indentation"><li><span class="TOCOutline">1</span> <a shape="rect" href="#Struts2MavenArchetypes-Quickstart">Quickstart</a></li><li><span class="TOCOutline">2</span> <a shape="rect" href="#Struts2MavenArchetypes-AvailableArchetypes">Available Archetypes</a>
 <ul class="toc-indentation"><li><span class="TOCOutline">2.1</span> <a shape="rect" href="#Struts2MavenArchetypes-TheBlankConventionArchetype(struts2-archetype-convention)">The Blank Convention Archetype (struts2-archetype-convention)</a></li><li><span class="TOCOutline">2.2</span> <a shape="rect" href="#Struts2MavenArchetypes-TheBlankArchetype(struts2-archetype-blank)">The Blank Archetype (struts2-archetype-blank)</a></li><li><span class="TOCOutline">2.3</span> <a shape="rect" href="#Struts2MavenArchetypes-TheStarterArchetype(struts2-archetype-starter)">The Starter Archetype (struts2-archetype-starter)</a></li><li><span class="TOCOutline">2.4</span> <a shape="rect" href="#Struts2MavenArchetypes-TheAngularJSArchetype(struts2-archetype-angularjs)">The AngularJS Archetype (struts2-archetype-angularjs)</a></li><li><span class="TOCOutline">2.5</span> <a shape="rect" href="#Struts2MavenArchetypes-ThePortletBlankArchetype(struts2-archetype-portlet)">The Portlet Blank Archetype (struts2-ar
 chetype-portlet)</a></li><li><span class="TOCOutline">2.6</span> <a shape="rect" href="#Struts2MavenArchetypes-ThePortletDatabaseArchetype(struts2-archetype-dbportlet)">The Portlet Database Archetype (struts2-archetype-dbportlet)</a></li><li><span class="TOCOutline">2.7</span> <a shape="rect" href="#Struts2MavenArchetypes-ThePluginArchetype(struts2-archetype-plugin)">The Plugin Archetype (struts2-archetype-plugin)</a></li></ul>
 </li><li><span class="TOCOutline">3</span> <a shape="rect" href="#Struts2MavenArchetypes-CreatinganApplicationUsingaMavenArchetype">Creating an Application Using a Maven Archetype</a>

Modified: websites/production/struts/content/release/2.3.x/docs/struts-2-portlet-tutorial.html
==============================================================================
--- websites/production/struts/content/release/2.3.x/docs/struts-2-portlet-tutorial.html (original)
+++ websites/production/struts/content/release/2.3.x/docs/struts-2-portlet-tutorial.html Sat Apr 26 18:40:39 2014
@@ -37,7 +37,6 @@ under the License. 
     <link href='http://struts.apache.org/highlighter/style/shCoreStruts.css' rel='stylesheet' type='text/css' />
     <link href='http://struts.apache.org/highlighter/style/shThemeStruts.css' rel='stylesheet' type='text/css' />
     <script src='http://struts.apache.org/highlighter/js/shCore.js' type='text/javascript'></script>
-    <script src='http://struts.apache.org/highlighter/js/shBrushPlain.js' type='text/javascript'></script>
             <script src='http://struts.apache.org/highlighter/js/shBrushJava.js' type='text/javascript'></script>
     
     <script type="text/javascript">

Modified: websites/production/struts/content/release/2.3.x/docs/struts-2-spring-2-jpa-ajax.html
==============================================================================
--- websites/production/struts/content/release/2.3.x/docs/struts-2-spring-2-jpa-ajax.html (original)
+++ websites/production/struts/content/release/2.3.x/docs/struts-2-spring-2-jpa-ajax.html Sat Apr 26 18:40:39 2014
@@ -37,7 +37,6 @@ under the License. 
     <link href='http://struts.apache.org/highlighter/style/shCoreStruts.css' rel='stylesheet' type='text/css' />
     <link href='http://struts.apache.org/highlighter/style/shThemeStruts.css' rel='stylesheet' type='text/css' />
     <script src='http://struts.apache.org/highlighter/js/shCore.js' type='text/javascript'></script>
-    <script src='http://struts.apache.org/highlighter/js/shBrushPlain.js' type='text/javascript'></script>
             <script src='http://struts.apache.org/highlighter/js/shBrushJava.js' type='text/javascript'></script>
             <script src='http://struts.apache.org/highlighter/js/shBrushXml.js' type='text/javascript'></script>
     
@@ -155,11 +154,11 @@ under the License. 
 
 
 <style type="text/css">/*<![CDATA[*/
-div.rbtoc1394094300958 {padding: 0px;}
-div.rbtoc1394094300958 ul {list-style: none;margin-left: 0px;}
-div.rbtoc1394094300958 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1396727412876 {padding: 0px;}
+div.rbtoc1396727412876 ul {list-style: none;margin-left: 0px;}
+div.rbtoc1396727412876 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style><div class="toc-macro rbtoc1394094300958">
+/*]]>*/</style><div class="toc-macro rbtoc1396727412876">
 <ul class="toc-indentation"><li><a shape="rect" href="#Struts2+Spring2+JPA+AJAX-Prerequisites">Prerequisites</a>
 <ul class="toc-indentation"><li><a shape="rect" href="#Struts2+Spring2+JPA+AJAX-Tomcat">Tomcat</a></li><li><a shape="rect" href="#Struts2+Spring2+JPA+AJAX-MySql">MySql</a></li></ul>
 </li><li><a shape="rect" href="#Struts2+Spring2+JPA+AJAX-Getthecode">Get the code</a>

Modified: websites/production/struts/content/release/2.3.x/docs/struts-2-themes.html
==============================================================================
--- websites/production/struts/content/release/2.3.x/docs/struts-2-themes.html (original)
+++ websites/production/struts/content/release/2.3.x/docs/struts-2-themes.html Sat Apr 26 18:40:39 2014
@@ -37,7 +37,6 @@ under the License. 
     <link href='http://struts.apache.org/highlighter/style/shCoreStruts.css' rel='stylesheet' type='text/css' />
     <link href='http://struts.apache.org/highlighter/style/shThemeStruts.css' rel='stylesheet' type='text/css' />
     <script src='http://struts.apache.org/highlighter/js/shCore.js' type='text/javascript'></script>
-    <script src='http://struts.apache.org/highlighter/js/shBrushPlain.js' type='text/javascript'></script>
             <script src='http://struts.apache.org/highlighter/js/shBrushXml.js' type='text/javascript'></script>
             <script src='http://struts.apache.org/highlighter/js/shBrushCss.js' type='text/javascript'></script>
     
@@ -139,7 +138,7 @@ under the License. 
             <div id="ConfluenceContent">    <div class="aui-message hint shadowed information-macro">
                             <span class="aui-icon icon-hint">Icon</span>
                 <div class="message-content">
-                            <p>The example code for this tutorial, themes, is available for checkout at <a shape="rect" class="external-link" href="https://svn.apache.org/repos/asf/struts/sandbox/trunk/struts2examples/">https://svn.apache.org/repos/asf/struts/sandbox/trunk/struts2examples/</a></p>
+                            <p>The example code for this tutorial, themes, is available for checkout at <a shape="rect" class="external-link" href="https://github.com/apache/struts-examples" rel="nofollow">https://github.com/apache/struts-examples</a></p>
                     </div>
     </div>
 <h3 id="Struts2Themes-Introduction">Introduction</h3><p>When you use a Struts 2 tag such as s:select in your web page, the Struts 2 framework generates HTML that styles the appearance and controls the layout of the select control. The style and layout is determined by which Struts 2 theme is set for the tag. Struts 2 comes with three built-in themes: simple, xhtml, and css_xhtml. If you don&#8217;t specify a theme, then Struts 2 will use the xhtml theme by default.</p>    <div class="aui-message success shadowed information-macro">

Modified: websites/production/struts/content/release/2.3.x/docs/struts-control-tags.html
==============================================================================
--- websites/production/struts/content/release/2.3.x/docs/struts-control-tags.html (original)
+++ websites/production/struts/content/release/2.3.x/docs/struts-control-tags.html Sat Apr 26 18:40:39 2014
@@ -37,7 +37,6 @@ under the License. 
     <link href='http://struts.apache.org/highlighter/style/shCoreStruts.css' rel='stylesheet' type='text/css' />
     <link href='http://struts.apache.org/highlighter/style/shThemeStruts.css' rel='stylesheet' type='text/css' />
     <script src='http://struts.apache.org/highlighter/js/shCore.js' type='text/javascript'></script>
-    <script src='http://struts.apache.org/highlighter/js/shBrushPlain.js' type='text/javascript'></script>
             <script src='http://struts.apache.org/highlighter/js/shBrushJava.js' type='text/javascript'></script>
     
     <script type="text/javascript">
@@ -138,32 +137,17 @@ under the License. 
             <div id="ConfluenceContent">    <div class="aui-message hint shadowed information-macro">
                             <span class="aui-icon icon-hint">Icon</span>
                 <div class="message-content">
-                            <p>The example code for this tutorial, control_tags, is available for checkout at <a shape="rect" class="external-link" href="https://svn.apache.org/repos/asf/struts/sandbox/trunk/struts2examples/">https://svn.apache.org/repos/asf/struts/sandbox/trunk/struts2examples/</a></p>
+                            <p>The example code for this tutorial, control_tags, is available at <a shape="rect" class="external-link" href="https://github.com/apache/struts-examples" rel="nofollow">https://github.com/apache/struts-examples</a></p>
                     </div>
     </div>
-
-
-<h3 id="StrutsControlTags-Introduction">Introduction</h3>
-
-<p>Struts 2 has several control tags that can be used in the view.  This tutorial will discuss and show examples of how to use the Struts 2 if and iterator tags. For more information about these and other control tags visit <a shape="rect" class="external-link" href="http://cwiki.apache.org/confluence/display/WW/Generic+Tag+Reference">tags reference</a>.</p>
-
-    <div class="aui-message success shadowed information-macro">
+<h3 id="StrutsControlTags-Introduction">Introduction</h3><p>Struts 2 has several control tags that can be used in the view. This tutorial will discuss and show examples of how to use the Struts 2 if and iterator tags. For more information about these and other control tags visit <a shape="rect" class="external-link" href="http://cwiki.apache.org/confluence/display/WW/Generic+Tag+Reference">tags reference</a>.</p>    <div class="aui-message success shadowed information-macro">
                             <span class="aui-icon icon-success">Icon</span>
                 <div class="message-content">
                             <p>The <a shape="rect" class="external-link" href="http://struts.apache.org/mail.html">Struts 2 user mailing list</a> is an excellent place to get help. If you are having a problem getting the tutorial example applications to work search the Struts 2 mailing list. If you don't find an answer to your problem, post a question on the mailing list.</p>
                     </div>
     </div>
-
-
-
-<h3 id="StrutsControlTags-Struts2ifTag">Struts 2 if Tag</h3>
-
-<p>In the example application's thankyou.jsp is this markup.</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: html; gutter: false" type="syntaxhighlighter"><![CDATA[
-
-&lt;s:if test=&quot;personBean.over21&quot;&gt;
+<h3 id="StrutsControlTags-Struts2ifTag">Struts 2 if Tag</h3><p>In the example application's thankyou.jsp is this markup.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: html; gutter: false" type="syntaxhighlighter"><![CDATA[&lt;s:if test=&quot;personBean.over21&quot;&gt;
 
     &lt;p&gt;You are old enough to vote!&lt;/p&gt;
     
@@ -176,18 +160,8 @@ under the License. 
 &lt;/s:else&gt;
 
 ]]></script>
-</div></div>
-
-<p>The Struts if tag has a test attribute.  The value of the test attribute must evaluate to true or false.  If true the statements between the opening and closing s:if tags will be executed.  If false, the statements between the opening and closing s:else tags will be executed.  Note that s:else tags come after the closing s:if tag and that the s:else tags are not required.</p>
-
-<p>In the above example the Struts framework will call method getPersonBean exposed by the Action class (EditAction.java).  Using the Person object returned by that method, the framework will then call method isOver21 of class Person.  That method returns a boolean that will be used to determine if the test is true or false.</p>
-
-<p>The value of the test attribute must be an expression that evaluates to true or false, but doesn't need to be a method call that returns a boolean.  For example this s:if tag that is in thankyou.jsp has a more complicated expression.</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: html; gutter: false" type="syntaxhighlighter"><![CDATA[
-
-&lt;s:if test=&quot;personBean.carModels.length &gt; 1&quot;&gt;
+</div></div><p>The Struts if tag has a test attribute. The value of the test attribute must evaluate to true or false. If true the statements between the opening and closing s:if tags will be executed. If false, the statements between the opening and closing s:else tags will be executed. Note that s:else tags come after the closing s:if tag and that the s:else tags are not required.</p><p>In the above example the Struts framework will call method getPersonBean exposed by the Action class (EditAction.java). Using the Person object returned by that method, the framework will then call method isOver21 of class Person. That method returns a boolean that will be used to determine if the test is true or false.</p><p>The value of the test attribute must be an expression that evaluates to true or false, but doesn't need to be a method call that returns a boolean. For example this s:if tag that is in thankyou.jsp has a more complicated expression.</p><div class="code panel pdl" style="border
 -width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: html; gutter: false" type="syntaxhighlighter"><![CDATA[&lt;s:if test=&quot;personBean.carModels.length &gt; 1&quot;&gt;
 
 	&lt;p&gt;Car models
 
@@ -202,19 +176,8 @@ under the License. 
 
 
 ]]></script>
-</div></div>
-
-<p>The purpose of the above markup is to use either "Car model" or "Car models" depending on how many car models the user selected on the edit page.  So the value for the test attribute of this iterator tag gets the length of the carModels String array and compares that to 1.  If it's greater then 1, the correct grammar is "Car models" else the correct grammar is "Car model".</p>
-
-
-<h3 id="StrutsControlTags-StrutsiteratorTag">Struts iterator Tag</h3>
-
-<p>The Struts iterator tag is used to generate a loop that iterates over each item in a collection.  In the thankyou.jsp is this markup.</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: html; gutter: false" type="syntaxhighlighter"><![CDATA[
-
-&lt;table style=&quot;margin-left:15px&quot;&gt;
+</div></div><p>The purpose of the above markup is to use either "Car model" or "Car models" depending on how many car models the user selected on the edit page. So the value for the test attribute of this iterator tag gets the length of the carModels String array and compares that to 1. If it's greater then 1, the correct grammar is "Car models" else the correct grammar is "Car model".</p><h3 id="StrutsControlTags-StrutsiteratorTag">Struts iterator Tag</h3><p>The Struts iterator tag is used to generate a loop that iterates over each item in a collection. In the thankyou.jsp is this markup.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: html; gutter: false" type="syntaxhighlighter"><![CDATA[&lt;table style=&quot;margin-left:15px&quot;&gt;
 	
 	&lt;s:iterator value=&quot;personBean.carModels&quot;&gt;
 	
@@ -226,21 +189,8 @@ under the License. 
 
 
 ]]></script>
-</div></div>
-
-<p>The goal of this code is to create an HTML table with a row that display a car model selected by the user on the edit page.  The car models the user selects on the edit page are stored in the carModels field (a String array) of the personBean object (of class Person).</p>
-
-<p>The iterator tag has a value attribute that must evaluate to a collection (Array, List, Map).</p>
-
-<p>The s:property tag nested inside the iterator tag is used to display the specific value of the collection each time the iterator loops over an element of the collection.  Since the collection is an Array of String objects, the s:property tag doesn't need to specify a value attribute.  By default the s:property tag will display the single String for that element of the collection.</p>
-
-<p>If the collection contains objects that have multiple fields, then you should use the value attribute of the s:property tag to determine what field to display.  For example:</p>
-
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: html; gutter: false" type="syntaxhighlighter"><![CDATA[
-
-&lt;table style=&quot;margin-left:15px&quot;&gt;
+</div></div><p>The goal of this code is to create an HTML table with a row that display a car model selected by the user on the edit page. The car models the user selects on the edit page are stored in the carModels field (a String array) of the personBean object (of class Person).</p><p>The iterator tag has a value attribute that must evaluate to a collection (Array, List, Map).</p><p>The s:property tag nested inside the iterator tag is used to display the specific value of the collection each time the iterator loops over an element of the collection. Since the collection is an Array of String objects, the s:property tag doesn't need to specify a value attribute. By default the s:property tag will display the single String for that element of the collection.</p><p>If the collection contains objects that have multiple fields, then you should use the value attribute of the s:property tag to determine what field to display. For example:</p><div class="code panel pdl" style="border-wid
 th: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: html; gutter: false" type="syntaxhighlighter"><![CDATA[&lt;table style=&quot;margin-left:15px&quot;&gt;
 
 	&lt;s:iterator value=&quot;states&quot; &gt;
 	
@@ -252,13 +202,7 @@ under the License. 
 
 
 ]]></script>
-</div></div>
-
-<p>The value of the iterator tag is states, which causes the Struts 2 framework to call the getStates method of the Action class (EditAction.java).  The getStates method returns a List of State objects.  The State class has two fields stateAbbr and stateName, both having the appropriate get method.  The iterator will loop over each State object stored in the collection.  Each time through the loop, the Struts 2 framework will have a reference to the current State object and will call getStateAbbr and getStateName methods for that current State object.</p>
-
-<h3 id="StrutsControlTags-AdditionalIteratorAttributes">Additional Iterator Attributes</h3>
-
-<p>The Struts 2 iterator tag has additional attributes you can use to control the begin and end values for specifying that the iterator tag should only loop over a part of the collection.  See the <a shape="rect" href="https://cwiki.apache.org/confluence/display/WW/iterator">iterator tag reference</a> for more information.</p></div>
+</div></div><p>The value of the iterator tag is states, which causes the Struts 2 framework to call the getStates method of the Action class (EditAction.java). The getStates method returns a List of State objects. The State class has two fields stateAbbr and stateName, both having the appropriate get method. The iterator will loop over each State object stored in the collection. Each time through the loop, the Struts 2 framework will have a reference to the current State object and will call getStateAbbr and getStateName methods for that current State object.</p><h3 id="StrutsControlTags-AdditionalIteratorAttributes">Additional Iterator Attributes</h3><p>The Struts 2 iterator tag has additional attributes you can use to control the begin and end values for specifying that the iterator tag should only loop over a part of the collection. See the <a shape="rect" href="https://cwiki.apache.org/confluence/display/WW/iterator">iterator tag reference</a> for more information.</p></div>
         </div>
 
         

Modified: websites/production/struts/content/release/2.3.x/docs/struts-defaultvm.html
==============================================================================
--- websites/production/struts/content/release/2.3.x/docs/struts-defaultvm.html (original)
+++ websites/production/struts/content/release/2.3.x/docs/struts-defaultvm.html Sat Apr 26 18:40:39 2014
@@ -37,7 +37,6 @@ under the License. 
     <link href='http://struts.apache.org/highlighter/style/shCoreStruts.css' rel='stylesheet' type='text/css' />
     <link href='http://struts.apache.org/highlighter/style/shThemeStruts.css' rel='stylesheet' type='text/css' />
     <script src='http://struts.apache.org/highlighter/js/shCore.js' type='text/javascript'></script>
-    <script src='http://struts.apache.org/highlighter/js/shBrushPlain.js' type='text/javascript'></script>
             <script src='http://struts.apache.org/highlighter/js/shBrushJava.js' type='text/javascript'></script>
     
     <script type="text/javascript">

Modified: websites/production/struts/content/release/2.3.x/docs/struts-defaultxml.html
==============================================================================
--- websites/production/struts/content/release/2.3.x/docs/struts-defaultxml.html (original)
+++ websites/production/struts/content/release/2.3.x/docs/struts-defaultxml.html Sat Apr 26 18:40:39 2014
@@ -37,7 +37,6 @@ under the License. 
     <link href='http://struts.apache.org/highlighter/style/shCoreStruts.css' rel='stylesheet' type='text/css' />
     <link href='http://struts.apache.org/highlighter/style/shThemeStruts.css' rel='stylesheet' type='text/css' />
     <script src='http://struts.apache.org/highlighter/js/shCore.js' type='text/javascript'></script>
-    <script src='http://struts.apache.org/highlighter/js/shBrushPlain.js' type='text/javascript'></script>
             <script src='http://struts.apache.org/highlighter/js/shBrushJava.js' type='text/javascript'></script>
             <script src='http://struts.apache.org/highlighter/js/shBrushXml.js' type='text/javascript'></script>
             <script src='http://struts.apache.org/highlighter/js/shBrushPlain.js' type='text/javascript'></script>
@@ -350,7 +349,7 @@ under the License. 
                 &lt;interceptor-ref name=&quot;multiselect&quot;/&gt;
                 &lt;interceptor-ref name=&quot;actionMappingParams&quot;/&gt;
                 &lt;interceptor-ref name=&quot;params&quot;&gt;
-                    &lt;param name=&quot;excludeParams&quot;&gt;dojo\..*,^struts\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response)\..*,parameters\...*&lt;/param&gt;
+                    &lt;param name=&quot;excludeParams&quot;&gt;^class\..*,^dojo\..*,^struts\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response)\..*,^parameters\..*,^action:.*,^method:.*&lt;/param&gt;
                 &lt;/interceptor-ref&gt;
                 &lt;interceptor-ref name=&quot;conversionError&quot;/&gt;
                 &lt;interceptor-ref name=&quot;deprecation&quot;/&gt;
@@ -406,7 +405,7 @@ under the License. 
                 &lt;interceptor-ref name=&quot;checkbox&quot;/&gt;
                 &lt;interceptor-ref name=&quot;multiselect&quot;/&gt;
                 &lt;interceptor-ref name=&quot;params&quot;&gt;
-                    &lt;param name=&quot;excludeParams&quot;&gt;^dojo\..*,^struts\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response)\..*,^parameters\..*,^action:.*,^method:.*&lt;/param&gt;
+                    &lt;param name=&quot;excludeParams&quot;&gt;^class\..*,^dojo\..*,^struts\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response)\..*,^parameters\..*,^action:.*,^method:.*&lt;/param&gt;
                 &lt;/interceptor-ref&gt;
                 &lt;interceptor-ref name=&quot;servletConfig&quot;/&gt;
                 &lt;interceptor-ref name=&quot;prepare&quot;/&gt;
@@ -416,7 +415,7 @@ under the License. 
                 &lt;interceptor-ref name=&quot;staticParams&quot;/&gt;
                 &lt;interceptor-ref name=&quot;actionMappingParams&quot;/&gt;
                 &lt;interceptor-ref name=&quot;params&quot;&gt;
-                    &lt;param name=&quot;excludeParams&quot;&gt;^dojo\..*,^struts\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response)\..*,^parameters\..*,^action:.*,^method:.*&lt;/param&gt;
+                    &lt;param name=&quot;excludeParams&quot;&gt;^class\..*,^dojo\..*,^struts\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response)\..*,^parameters\..*,^action:.*,^method:.*&lt;/param&gt;
                 &lt;/interceptor-ref&gt;
                 &lt;interceptor-ref name=&quot;conversionError&quot;/&gt;
                 &lt;interceptor-ref name=&quot;validation&quot;&gt;
@@ -453,7 +452,7 @@ under the License. 
                 &lt;interceptor-ref name=&quot;staticParams&quot;/&gt;
                 &lt;interceptor-ref name=&quot;actionMappingParams&quot;/&gt;
                 &lt;interceptor-ref name=&quot;params&quot;&gt;
-                    &lt;param name=&quot;excludeParams&quot;&gt;^dojo\..*,^struts\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response)\..*,^parameters\..*,^action:.*,^method:.*&lt;/param&gt;
+                    &lt;param name=&quot;excludeParams&quot;&gt;^class\..*,^dojo\..*,^struts\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response)\..*,^parameters\..*,^action:.*,^method:.*&lt;/param&gt;
                 &lt;/interceptor-ref&gt;
                 &lt;interceptor-ref name=&quot;conversionError&quot;/&gt;
                 &lt;interceptor-ref name=&quot;validation&quot;&gt;

Modified: websites/production/struts/content/release/2.3.x/docs/struts-maven-archetypes.html
==============================================================================
--- websites/production/struts/content/release/2.3.x/docs/struts-maven-archetypes.html (original)
+++ websites/production/struts/content/release/2.3.x/docs/struts-maven-archetypes.html Sat Apr 26 18:40:39 2014
@@ -37,7 +37,6 @@ under the License. 
     <link href='http://struts.apache.org/highlighter/style/shCoreStruts.css' rel='stylesheet' type='text/css' />
     <link href='http://struts.apache.org/highlighter/style/shThemeStruts.css' rel='stylesheet' type='text/css' />
     <script src='http://struts.apache.org/highlighter/js/shCore.js' type='text/javascript'></script>
-    <script src='http://struts.apache.org/highlighter/js/shBrushPlain.js' type='text/javascript'></script>
             <script src='http://struts.apache.org/highlighter/js/shBrushJava.js' type='text/javascript'></script>
     
     <script type="text/javascript">

Modified: websites/production/struts/content/release/2.3.x/docs/strutsproperties.html
==============================================================================
--- websites/production/struts/content/release/2.3.x/docs/strutsproperties.html (original)
+++ websites/production/struts/content/release/2.3.x/docs/strutsproperties.html Sat Apr 26 18:40:39 2014
@@ -37,7 +37,6 @@ under the License. 
     <link href='http://struts.apache.org/highlighter/style/shCoreStruts.css' rel='stylesheet' type='text/css' />
     <link href='http://struts.apache.org/highlighter/style/shThemeStruts.css' rel='stylesheet' type='text/css' />
     <script src='http://struts.apache.org/highlighter/js/shCore.js' type='text/javascript'></script>
-    <script src='http://struts.apache.org/highlighter/js/shBrushPlain.js' type='text/javascript'></script>
             <script src='http://struts.apache.org/highlighter/js/shBrushJava.js' type='text/javascript'></script>
             <script src='http://struts.apache.org/highlighter/js/shBrushXml.js' type='text/javascript'></script>
             <script src='http://struts.apache.org/highlighter/js/shBrushPlain.js' type='text/javascript'></script>

Modified: websites/production/struts/content/release/2.3.x/docs/strutsxml-examples.html
==============================================================================
--- websites/production/struts/content/release/2.3.x/docs/strutsxml-examples.html (original)
+++ websites/production/struts/content/release/2.3.x/docs/strutsxml-examples.html Sat Apr 26 18:40:39 2014
@@ -37,7 +37,6 @@ under the License. 
     <link href='http://struts.apache.org/highlighter/style/shCoreStruts.css' rel='stylesheet' type='text/css' />
     <link href='http://struts.apache.org/highlighter/style/shThemeStruts.css' rel='stylesheet' type='text/css' />
     <script src='http://struts.apache.org/highlighter/js/shCore.js' type='text/javascript'></script>
-    <script src='http://struts.apache.org/highlighter/js/shBrushPlain.js' type='text/javascript'></script>
             <script src='http://struts.apache.org/highlighter/js/shBrushJava.js' type='text/javascript'></script>
             <script src='http://struts.apache.org/highlighter/js/shBrushXml.js' type='text/javascript'></script>
             <script src='http://struts.apache.org/highlighter/js/shBrushPlain.js' type='text/javascript'></script>

Modified: websites/production/struts/content/release/2.3.x/docs/submit.html
==============================================================================
--- websites/production/struts/content/release/2.3.x/docs/submit.html (original)
+++ websites/production/struts/content/release/2.3.x/docs/submit.html Sat Apr 26 18:40:39 2014
@@ -37,7 +37,6 @@ under the License. 
     <link href='http://struts.apache.org/highlighter/style/shCoreStruts.css' rel='stylesheet' type='text/css' />
     <link href='http://struts.apache.org/highlighter/style/shThemeStruts.css' rel='stylesheet' type='text/css' />
     <script src='http://struts.apache.org/highlighter/js/shCore.js' type='text/javascript'></script>
-    <script src='http://struts.apache.org/highlighter/js/shBrushPlain.js' type='text/javascript'></script>
             <script src='http://struts.apache.org/highlighter/js/shBrushJava.js' type='text/javascript'></script>
             <script src='http://struts.apache.org/highlighter/js/shBrushXml.js' type='text/javascript'></script>
             <script src='http://struts.apache.org/highlighter/js/shBrushPlain.js' type='text/javascript'></script>

Modified: websites/production/struts/content/release/2.3.x/docs/subset.html
==============================================================================
--- websites/production/struts/content/release/2.3.x/docs/subset.html (original)
+++ websites/production/struts/content/release/2.3.x/docs/subset.html Sat Apr 26 18:40:39 2014
@@ -37,7 +37,6 @@ under the License. 
     <link href='http://struts.apache.org/highlighter/style/shCoreStruts.css' rel='stylesheet' type='text/css' />
     <link href='http://struts.apache.org/highlighter/style/shThemeStruts.css' rel='stylesheet' type='text/css' />
     <script src='http://struts.apache.org/highlighter/js/shCore.js' type='text/javascript'></script>
-    <script src='http://struts.apache.org/highlighter/js/shBrushPlain.js' type='text/javascript'></script>
             <script src='http://struts.apache.org/highlighter/js/shBrushJava.js' type='text/javascript'></script>
             <script src='http://struts.apache.org/highlighter/js/shBrushXml.js' type='text/javascript'></script>
             <script src='http://struts.apache.org/highlighter/js/shBrushPlain.js' type='text/javascript'></script>