Author: lukaszlenart
Date: Wed Apr 12 08:19:03 2017
New Revision: 1010307

Log:
Updates production

Modified:
    websites/production/struts/content/bootstrap/css/bootstrap.min.css
    websites/production/struts/content/css/custom.css
    websites/production/struts/content/getting-started/annotations.html
    websites/production/struts/content/getting-started/coding-actions.html
    websites/production/struts/content/getting-started/control-tags.html
    websites/production/struts/content/getting-started/debugging-struts.html
    websites/production/struts/content/getting-started/exception-handling.html
    websites/production/struts/content/getting-started/exclude-parameters.html
    websites/production/struts/content/getting-started/form-tags.html
    
websites/production/struts/content/getting-started/form-validation-using-xml.html
    websites/production/struts/content/getting-started/form-validation.html
    
websites/production/struts/content/getting-started/hello-world-using-struts2.html
    
websites/production/struts/content/getting-started/how-to-create-a-struts2-web-application.html
    websites/production/struts/content/getting-started/http-session.html
    
websites/production/struts/content/getting-started/introducing-interceptors.html
    
websites/production/struts/content/getting-started/message-resource-files.html
    websites/production/struts/content/getting-started/preperable-interface.html
    websites/production/struts/content/getting-started/processing-forms.html
    websites/production/struts/content/getting-started/spring.html
    websites/production/struts/content/getting-started/themes.html
    websites/production/struts/content/getting-started/unit-testing.html
    websites/production/struts/content/getting-started/using-tags.html
    
websites/production/struts/content/getting-started/wildcard-method-selection.html
    websites/production/struts/content/highlighter/github-theme.css

Modified: websites/production/struts/content/bootstrap/css/bootstrap.min.css
==============================================================================
--- websites/production/struts/content/bootstrap/css/bootstrap.min.css 
(original)
+++ websites/production/struts/content/bootstrap/css/bootstrap.min.css Wed Apr 
12 08:19:03 2017
@@ -4,4 +4,4 @@
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
  */
 

[... 5 lines stripped ...]
Modified: websites/production/struts/content/css/custom.css
==============================================================================
--- websites/production/struts/content/css/custom.css (original)
+++ websites/production/struts/content/css/custom.css Wed Apr 12 08:19:03 2017
@@ -1,7 +1,7 @@
 .header-link {
   position: absolute;
   right: -1em;
-  top: 0.1em;
+  top: -2em;
   opacity: 0;
   font-size: 0.8em;
 
@@ -28,4 +28,4 @@ a.anchor {
   height: 94px;
   margin-top: -94px;
   visibility: hidden;
-}
\ No newline at end of file
+}

Modified: websites/production/struts/content/getting-started/annotations.html
==============================================================================
--- websites/production/struts/content/getting-started/annotations.html 
(original)
+++ websites/production/struts/content/getting-started/annotations.html Wed Apr 
12 08:19:03 2017
@@ -121,6 +121,7 @@
 
 <article class="container">
   <section class="col-md-12">
+    <a href="index.html" title="back to Getting Started"><< back to Getting 
Started</a>
     <h2 id="annotations">Annotations</h2>
 
 <p>The example code for this tutorial, annotations, is available for checkout 
at <a 
href="https://github.com/apache/struts-examples";>https://github.com/apache/struts-examples</a></p>
@@ -142,7 +143,7 @@
 <div class="highlighter-rouge"><pre class="highlight"><code><span 
class="nt">&lt;dependency&gt;</span>
     <span class="nt">&lt;groupId&gt;</span>org.apache.struts<span 
class="nt">&lt;/groupId&gt;</span>
     <span class="nt">&lt;artifactId&gt;</span>struts2-convention-plugin<span 
class="nt">&lt;/artifactId&gt;</span>
-    <span class="nt">&lt;version&gt;</span>2.5.10.1<span 
class="nt">&lt;/version&gt;</span>
+    <span class="nt">&lt;version&gt;</span>X.X.X.X<span 
class="nt">&lt;/version&gt;</span>
 <span class="nt">&lt;/dependency&gt;</span>
 </code></pre>
 </div>
@@ -212,6 +213,16 @@
 
 <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 
href="//struts.apache.org/docs/convention-plugin.html">Convention Plugin</a> 
documentation for alternative ways to configure your Struts 2 application.</p>
 
+<table>
+  <tbody>
+    <tr>
+      <td>Return to <a href="spring.html">Spring and Struts 2</a></td>
+      <td>or</td>
+      <td>onward to <a href="introducing-interceptors.html">Introducing 
Interceptors</a></td>
+    </tr>
+  </tbody>
+</table>
+
   </section>
 </article>
 

Modified: websites/production/struts/content/getting-started/coding-actions.html
==============================================================================
--- websites/production/struts/content/getting-started/coding-actions.html 
(original)
+++ websites/production/struts/content/getting-started/coding-actions.html Wed 
Apr 12 08:19:03 2017
@@ -121,14 +121,11 @@
 
 <article class="container">
   <section class="col-md-12">
+    <a href="index.html" title="back to Getting Started"><< back to Getting 
Started</a>
     <h2 id="coding-actions">Coding actions</h2>
 
 <p>This tutorial assumes you’ve completed the <a href="#PAGE_14811875">Using 
Struts 2 Tags</a> tutorial and have a working using_tags project. The example 
code for this tutorial, coding_action, is available for checkout from the 
Struts 2 GitHub repository: <a 
href="https://github.com/apache/struts-examples";>https://github.com/apache/struts-examples</a>.</p>
 
-<blockquote>
-
-</blockquote>
-
 <p><strong>Introduction</strong></p>
 
 <p>Coding a Struts 2 Action involves several parts:</p>
@@ -201,15 +198,15 @@
 
 <p><strong>Add userName to HelloWorldAction</strong></p>
 
-<div class="highlighter-rouge"><pre class="highlight"><code>    <span 
class="kd">private</span> <span class="n">String</span> <span 
class="n">userName</span><span class="o">;</span>
+<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="kd">private</span> <span class="n">String</span> <span 
class="n">userName</span><span class="o">;</span>
 
-    <span class="kd">public</span> <span class="n">String</span> <span 
class="n">getUserName</span><span class="o">()</span> <span class="o">{</span>
-        <span class="k">return</span> <span class="n">userName</span><span 
class="o">;</span>
-    <span class="o">}</span>
-
-    <span class="kd">public</span> <span class="kt">void</span> <span 
class="n">setUserName</span><span class="o">(</span><span 
class="n">String</span> <span class="n">userName</span><span class="o">)</span> 
<span class="o">{</span>
-        <span class="k">this</span><span class="o">.</span><span 
class="na">userName</span> <span class="o">=</span> <span 
class="n">userName</span><span class="o">;</span>
-    <span class="o">}</span>
+<span class="kd">public</span> <span class="n">String</span> <span 
class="nf">getUserName</span><span class="p">(</span><span class="o">)</span> 
<span class="o">{</span>
+    <span class="k">return</span> <span class="n">userName</span><span 
class="o">;</span>
+<span class="o">}</span>
+
+<span class="kd">public</span> <span class="kt">void</span> <span 
class="nf">setUserName</span><span class="p">(</span><span 
class="n">String</span> <span class="n">userName</span><span class="o">)</span> 
<span class="o">{</span>
+    <span class="k">this</span><span class="o">.</span><span 
class="na">userName</span> <span class="o">=</span> <span 
class="n">userName</span><span class="o">;</span>
+<span class="o">}</span>
 </code></pre>
 </div>
 
@@ -217,9 +214,9 @@
 
 <p><strong>Add userName value to message</strong></p>
 
-<div class="highlighter-rouge"><pre class="highlight"><code>    <span 
class="k">if</span> <span class="o">(</span><span class="n">userName</span> 
<span class="o">!=</span> <span class="kc">null</span><span class="o">)</span> 
<span class="o">{</span>
-        <span class="n">messageStore</span><span class="o">.</span><span 
class="na">setMessage</span><span class="o">(</span> <span 
class="n">messageStore</span><span class="o">.</span><span 
class="na">getMessage</span><span class="o">()</span> <span class="o">+</span> 
<span class="s">" "</span> <span class="o">+</span> <span 
class="n">userName</span><span class="o">);</span>
-    <span class="o">}</span>
+<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="k">if</span> <span class="o">(</span><span class="n">userName</span> 
<span class="o">!=</span> <span class="kc">null</span><span class="o">)</span> 
<span class="o">{</span>
+    <span class="n">messageStore</span><span class="o">.</span><span 
class="na">setMessage</span><span class="o">(</span> <span 
class="n">messageStore</span><span class="o">.</span><span 
class="na">getMessage</span><span class="o">()</span> <span class="o">+</span> 
<span class="s">" "</span> <span class="o">+</span> <span 
class="n">userName</span><span class="o">);</span>
+<span class="o">}</span>
 </code></pre>
 </div>
 
@@ -241,6 +238,15 @@
 
 <p>This tutorial introduced you to how to code the Action class so it can 
process user input on a form or values in a query string parameter. If the form 
had numerous fields, it would be cumbersome to have a set method that matches 
up with each form field. So our next tutorial will cover how to integrate a 
model class, form fields in the view and form processing in the Action 
class.</p>
 
+<table>
+  <tbody>
+    <tr>
+      <td>Return to <a href="using-tags.html">Using Struts 2 Tags</a></td>
+      <td>or</td>
+      <td>onward to <a href="processing-forms.html">Processing Forms</a></td>
+    </tr>
+  </tbody>
+</table>
 
   </section>
 </article>

Modified: websites/production/struts/content/getting-started/control-tags.html
==============================================================================
--- websites/production/struts/content/getting-started/control-tags.html 
(original)
+++ websites/production/struts/content/getting-started/control-tags.html Wed 
Apr 12 08:19:03 2017
@@ -121,6 +121,7 @@
 
 <article class="container">
   <section class="col-md-12">
+    <a href="index.html" title="back to Getting Started"><< back to Getting 
Started</a>
     <h2 id="control-tags">Control Tags</h2>
 
 <p>The example code for this tutorial, control_tags, is available at <a 
href="https://github.com/apache/struts-examples";>https://github.com/apache/struts-examples</a></p>
@@ -197,6 +198,16 @@
 
 <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 
href="https://cwiki.apache.org/confluence/display/WW/iterator";>iterator tag 
reference</a> for more information.</p>
 
+<table>
+  <tbody>
+    <tr>
+      <td>Return to <a href="form-validation-using-xml.md">Form validation 
using XML</a></td>
+      <td>or</td>
+      <td>onward to <a href="wildcard-method-selection.html">Wildcard method 
selection</a></td>
+    </tr>
+  </tbody>
+</table>
+
   </section>
 </article>
 

Modified: 
websites/production/struts/content/getting-started/debugging-struts.html
==============================================================================
--- websites/production/struts/content/getting-started/debugging-struts.html 
(original)
+++ websites/production/struts/content/getting-started/debugging-struts.html 
Wed Apr 12 08:19:03 2017
@@ -121,6 +121,7 @@
 
 <article class="container">
   <section class="col-md-12">
+    <a href="index.html" title="back to Getting Started"><< back to Getting 
Started</a>
     <h2 id="debugging-struts">Debugging Struts</h2>
 
 <p>The example code for this tutorial, debugging_struts, is available for 
checkout at <a 
href="https://github.com/apache/struts-examples";>https://github.com/apache/struts-examples</a>.</p>
@@ -137,7 +138,7 @@
 
 <p>To use the plugin in your application, just call index.action in namespace 
config-browser. For example you could have the following link on your admin 
page (or just anywhere during your development).</p>
 
-<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="nt">&lt;a</span> <span class="na">href=</span><span class="s">"&lt;s:url 
action="</span><span class="na">index</span><span class="err">"</span> <span 
class="na">namespace=</span><span class="s">"config-browser"</span> <span 
class="nt">/&gt;</span>"&gt;Launch the configuration browser<span 
class="nt">&lt;/a&gt;</span>
+<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="nt">&lt;a</span> <span class="na">href=</span><span class="s">'&lt;s:url 
action="index" namespace="config-browser" /&gt;'</span><span 
class="nt">&gt;</span>Launch the configuration browser<span 
class="nt">&lt;/a&gt;</span>
 </code></pre>
 </div>
 
@@ -177,6 +178,16 @@
 
 <p>Prior to creating your war file for deployment to production you should 
change devmode to false and remove the debugging links. You may also want to 
adjust the level of logging in your log properties file to a higher level (info 
or warn) to reduce the number of log messages.</p>
 
+<table>
+  <tbody>
+    <tr>
+      <td>Return to <a href="exception-handling.html">Exception 
handling</a></td>
+      <td>or</td>
+      <td>onward to <a href="form-tags.html">Form tags</a></td>
+    </tr>
+  </tbody>
+</table>
+
   </section>
 </article>
 

Modified: 
websites/production/struts/content/getting-started/exception-handling.html
==============================================================================
--- websites/production/struts/content/getting-started/exception-handling.html 
(original)
+++ websites/production/struts/content/getting-started/exception-handling.html 
Wed Apr 12 08:19:03 2017
@@ -121,6 +121,7 @@
 
 <article class="container">
   <section class="col-md-12">
+    <a href="index.html" title="back to Getting Started"><< back to Getting 
Started</a>
     <h2 id="exception-handling">Exception Handling</h2>
 
 <p>The code for this tutorial, exception_handling, is available for checkout 
at <a 
href="https://github.com/apache/struts-examples";>https://github.com/apache/struts-examples</a>.</p>
@@ -137,15 +138,15 @@
 
 <p>To enable global exception handling you need to add two nodes to <code 
class="highlighter-rouge">struts.xml</code>: <code 
class="highlighter-rouge">global-exception-mapping</code> and <code 
class="highlighter-rouge">global-results</code>. For example examine the <code 
class="highlighter-rouge">struts.xml</code> from the exception_handling 
project.</p>
 
-<div class="highlighter-rouge"><pre class="highlight"><code>    <span 
class="nt">&lt;global-results&gt;</span>
-        <span class="nt">&lt;result</span> <span class="na">name=</span><span 
class="s">"securityerror"</span><span 
class="nt">&gt;</span>/securityerror.jsp<span class="nt">&lt;/result&gt;</span>
-       <span class="nt">&lt;result</span> <span class="na">name=</span><span 
class="s">"error"</span><span class="nt">&gt;</span>/error.jsp<span 
class="nt">&lt;/result&gt;</span>
-    <span class="nt">&lt;/global-results&gt;</span>
-
-    <span class="nt">&lt;global-exception-mappings&gt;</span>
-       <span class="nt">&lt;exception-mapping</span> <span 
class="na">exception=</span><span 
class="s">"org.apache.struts.register.exceptions.SecurityBreachException"</span>
 <span class="na">result=</span><span class="s">"securityerror"</span> <span 
class="nt">/&gt;</span>
-        <span class="nt">&lt;exception-mapping</span> <span 
class="na">exception=</span><span class="s">"java.lang.Exception"</span> <span 
class="na">result=</span><span class="s">"error"</span> <span 
class="nt">/&gt;</span>
-    <span class="nt">&lt;/global-exception-mappings&gt;</span>
+<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="nt">&lt;global-results&gt;</span>
+    <span class="nt">&lt;result</span> <span class="na">name=</span><span 
class="s">"securityerror"</span><span 
class="nt">&gt;</span>/securityerror.jsp<span class="nt">&lt;/result&gt;</span>
+    <span class="nt">&lt;result</span> <span class="na">name=</span><span 
class="s">"error"</span><span class="nt">&gt;</span>/error.jsp<span 
class="nt">&lt;/result&gt;</span>
+<span class="nt">&lt;/global-results&gt;</span>
+
+<span class="nt">&lt;global-exception-mappings&gt;</span>
+    <span class="nt">&lt;exception-mapping</span> <span 
class="na">exception=</span><span 
class="s">"org.apache.struts.register.exceptions.SecurityBreachException"</span>
 <span class="na">result=</span><span class="s">"securityerror"</span> <span 
class="nt">/&gt;</span>
+    <span class="nt">&lt;exception-mapping</span> <span 
class="na">exception=</span><span class="s">"java.lang.Exception"</span> <span 
class="na">result=</span><span class="s">"error"</span> <span 
class="nt">/&gt;</span>
+<span class="nt">&lt;/global-exception-mappings&gt;</span>
 </code></pre>
 </div>
 
@@ -157,11 +158,11 @@
 
 <p>If you need to handle an exception in a specific way for a certain action 
you can use the exception-mapping node within the action node.</p>
 
-<div class="highlighter-rouge"><pre class="highlight"><code>   <span 
class="nt">&lt;action</span> <span class="na">name=</span><span 
class="s">"actionspecificexception"</span> <span class="na">class=</span><span 
class="s">"org.apache.struts.register.action.Register"</span> <span 
class="na">method=</span><span class="s">"throwSecurityException"</span><span 
class="nt">&gt;</span>
-      <span class="nt">&lt;exception-mapping</span> <span 
class="na">exception=</span><span 
class="s">"org.apache.struts.register.exceptions.SecurityBreachException"</span>
 <span class="na">result=</span><span class="s">"login"</span> <span 
class="nt">/&gt;</span>
-      <span class="nt">&lt;result&gt;</span>/register.jsp<span 
class="nt">&lt;/result&gt;</span>
-      <span class="nt">&lt;result</span> <span class="na">name=</span><span 
class="s">"login"</span><span class="nt">&gt;</span>/login.jsp<span 
class="nt">&lt;/result&gt;</span>
-   <span class="nt">&lt;/action&gt;</span>
+<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="nt">&lt;action</span> <span class="na">name=</span><span 
class="s">"actionspecificexception"</span> <span class="na">class=</span><span 
class="s">"org.apache.struts.register.action.Register"</span> <span 
class="na">method=</span><span class="s">"throwSecurityException"</span><span 
class="nt">&gt;</span>
+   <span class="nt">&lt;exception-mapping</span> <span 
class="na">exception=</span><span 
class="s">"org.apache.struts.register.exceptions.SecurityBreachException"</span>
 <span class="na">result=</span><span class="s">"login"</span> <span 
class="nt">/&gt;</span>
+   <span class="nt">&lt;result&gt;</span>/register.jsp<span 
class="nt">&lt;/result&gt;</span>
+   <span class="nt">&lt;result</span> <span class="na">name=</span><span 
class="s">"login"</span><span class="nt">&gt;</span>/login.jsp<span 
class="nt">&lt;/result&gt;</span>
+<span class="nt">&lt;/action&gt;</span>
 </code></pre>
 </div>
 
@@ -200,13 +201,13 @@
 
 <p>You can display information about the exception in the browser if you want 
by using s:property tags with a value of exception and exceptionStack. For 
example in error.jsp is this markup.</p>
 
-<div class="highlighter-rouge"><pre class="highlight"><code>   <span 
class="nt">&lt;h4&gt;</span>The application has malfunctioned.<span 
class="nt">&lt;/h4&gt;</span>
+<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="nt">&lt;h4&gt;</span>The application has malfunctioned.<span 
class="nt">&lt;/h4&gt;</span>
 
-   <span class="nt">&lt;p&gt;</span>  Please contact technical support with 
the following information:<span class="nt">&lt;/p&gt;</span> 
+<span class="nt">&lt;p&gt;</span>Please contact technical support with the 
following information:<span class="nt">&lt;/p&gt;</span> 
 
-   <span class="nt">&lt;h4&gt;</span>Exception Name: <span 
class="nt">&lt;s:property</span> <span class="na">value=</span><span 
class="s">"exception"</span> <span class="nt">/&gt;</span> <span 
class="nt">&lt;/h4&gt;</span>
+<span class="nt">&lt;h4&gt;</span>Exception Name: <span 
class="nt">&lt;s:property</span> <span class="na">value=</span><span 
class="s">"exception"</span> <span class="nt">/&gt;</span> <span 
class="nt">&lt;/h4&gt;</span>
 
-   <span class="nt">&lt;h4&gt;</span>Exception Details: <span 
class="nt">&lt;s:property</span> <span class="na">value=</span><span 
class="s">"exceptionStack"</span> <span class="nt">/&gt;&lt;/h4&gt;</span> 
+<span class="nt">&lt;h4&gt;</span>Exception Details: <span 
class="nt">&lt;s:property</span> <span class="na">value=</span><span 
class="s">"exceptionStack"</span> <span class="nt">/&gt;&lt;/h4&gt;</span> 
 </code></pre>
 </div>
 
@@ -216,6 +217,16 @@
 
 <p>Struts 2 provides a easy to use configuration for handling uncaught 
exceptions and redirecting users to appropriate view pages. You can configure 
exception handling to be global for all actions or to just for a specific 
action. You can also enable the Struts 2 framework to log the uncaught 
exceptions.</p>
 
+<table>
+  <tbody>
+    <tr>
+      <td>Return to <a href="message-resource-files.html">Message resource 
files</a></td>
+      <td>or</td>
+      <td>onward to <a href="debugging-struts.html">Debugging Struts</a></td>
+    </tr>
+  </tbody>
+</table>
+
   </section>
 </article>
 

Modified: 
websites/production/struts/content/getting-started/exclude-parameters.html
==============================================================================
--- websites/production/struts/content/getting-started/exclude-parameters.html 
(original)
+++ websites/production/struts/content/getting-started/exclude-parameters.html 
Wed Apr 12 08:19:03 2017
@@ -121,6 +121,7 @@
 
 <article class="container">
   <section class="col-md-12">
+    <a href="index.html" title="back to Getting Started"><< back to Getting 
Started</a>
     <h2 id="exclude-parameters">Exclude Parameters</h2>
 
 <p>The example code for this tutorial, exclude_parameters, is available at <a 
href="https://github.com/apache/struts-examples";>https://github.com/apache/struts-examples</a>.</p>
@@ -204,6 +205,16 @@ Unexpected Exception caught setting 'sub
 
 <p>It’s a nice feature of the Struts 2 framework that it logs during 
development which request parameters will and will not be processed. During 
development of a Struts 2 web application it’s a good practice to review 
these log messages to determine if there are any parameters that the framework 
should not process. For those parameters the Struts 2 framework should not 
process add the parameter name (or a regular expression that can be used to 
identify multiple parameter names) to the comma-delimited list that is the 
value for the <code class="highlighter-rouge">&lt;param 
name="params.excludeParams"&gt;</code> node.</p>
 
+<table>
+  <tbody>
+    <tr>
+      <td>Return to <a href="preperable-interface.html">Preparable 
Interface</a></td>
+      <td>or</td>
+      <td>back to <a href="index.html">Getting started</a></td>
+    </tr>
+  </tbody>
+</table>
+
   </section>
 </article>
 

Modified: websites/production/struts/content/getting-started/form-tags.html
==============================================================================
--- websites/production/struts/content/getting-started/form-tags.html (original)
+++ websites/production/struts/content/getting-started/form-tags.html Wed Apr 
12 08:19:03 2017
@@ -121,31 +121,44 @@
 
 <article class="container">
   <section class="col-md-12">
+    <a href="index.html" title="back to Getting Started"><< back to Getting 
Started</a>
     <h2 id="form-tags">Form Tags</h2>
 
 <p>The example code for this tutorial, form_tags, can be checked out from <a 
href="https://github.com/apache/struts-examples";>https://github.com/apache/struts-examples</a>.</p>
 
 <p><strong>Introduction</strong></p>
 
-<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 
href="processing-forms.html">Processing Forms</a> , <a 
href="form-validation.html">Form Validation</a> , and <a 
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>
-
-<p>The <a 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>
+<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 href="processing-forms.html">Processing forms</a>, 
<a href="form-validation.html">Form validation</a>, 
+and <a 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>
+
+<p>The <a 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>
 
 <p><strong>Example Application</strong></p>
 
-<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>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 src="attachments/att19660802_Screen shot 2010-04-25 at 8.39.59 AM.png" 
alt="Screen shot 2010-04-25 at 8.39.59 AM.png" /></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 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>
+<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>
 
 <p><strong>Struts 2 Select Tag</strong></p>
 
-<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>
+<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>
 
 <p><strong>Struts 2 Select Tag</strong></p>
 
@@ -153,42 +166,57 @@
 </code></pre>
 </div>
 
-<p>In these form tags, we are using the key attribute as discussed in the <a 
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 href="message-resource-files.html">Message Resource 
Files</a> tutorial for information on using Struts 2 property files).</p>
+<p>In these form tags, we are using the key attribute as discussed in the <a 
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 href="message-resource-files.html">Message 
Resource Files</a> tutorial for information on using 
+Struts 2 property files).</p>
 
 <blockquote>
-  <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>
 </blockquote>
 
-<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>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>
 
 <p><strong>HTML Created By Struts 2 Select Tag</strong></p>
 
 <div class="highlighter-rouge"><pre class="highlight"><code><span 
class="nt">&lt;tr&gt;</span>
-<span class="nt">&lt;td</span> <span class="na">class=</span><span 
class="s">"tdLabel"</span><span class="nt">&gt;</span>
-<span class="nt">&lt;label</span> <span class="na">for=</span><span 
class="s">"save_personBean_sport"</span> <span class="na">class=</span><span 
class="s">"label"</span><span class="nt">&gt;</span>Favorite sport:<span 
class="nt">&lt;/label&gt;</span>
-<span class="nt">&lt;/td&gt;</span>
-<span class="nt">&lt;td&gt;</span>
-<span class="nt">&lt;select</span> <span class="na">name=</span><span 
class="s">"personBean.sport"</span> <span class="na">id=</span><span 
class="s">"save_personBean_sport"</span><span class="nt">&gt;</span>
-    <span class="nt">&lt;option</span> <span class="na">value=</span><span 
class="s">"football"</span><span class="nt">&gt;</span>football<span 
class="nt">&lt;/option&gt;</span>
-    <span class="nt">&lt;option</span> <span class="na">value=</span><span 
class="s">"baseball"</span><span class="nt">&gt;</span>baseball<span 
class="nt">&lt;/option&gt;</span>
-    <span class="nt">&lt;option</span> <span class="na">value=</span><span 
class="s">"basketball"</span> <span class="na">selected=</span><span 
class="s">"selected"</span><span class="nt">&gt;</span>basketball<span 
class="nt">&lt;/option&gt;</span>
-<span class="nt">&lt;/select&gt;</span>
-<span class="nt">&lt;/td&gt;</span>
+    <span class="nt">&lt;td</span> <span class="na">class=</span><span 
class="s">"tdLabel"</span><span class="nt">&gt;</span>
+        <span class="nt">&lt;label</span> <span class="na">for=</span><span 
class="s">"save_personBean_sport"</span> <span class="na">class=</span><span 
class="s">"label"</span><span class="nt">&gt;</span>Favorite sport:<span 
class="nt">&lt;/label&gt;</span>
+    <span class="nt">&lt;/td&gt;</span>
+    <span class="nt">&lt;td&gt;</span>
+        <span class="nt">&lt;select</span> <span class="na">name=</span><span 
class="s">"personBean.sport"</span> <span class="na">id=</span><span 
class="s">"save_personBean_sport"</span><span class="nt">&gt;</span>
+            <span class="nt">&lt;option</span> <span 
class="na">value=</span><span class="s">"football"</span><span 
class="nt">&gt;</span>football<span class="nt">&lt;/option&gt;</span>
+            <span class="nt">&lt;option</span> <span 
class="na">value=</span><span class="s">"baseball"</span><span 
class="nt">&gt;</span>baseball<span class="nt">&lt;/option&gt;</span>
+            <span class="nt">&lt;option</span> <span 
class="na">value=</span><span class="s">"basketball"</span> <span 
class="na">selected=</span><span class="s">"selected"</span><span 
class="nt">&gt;</span>basketball<span class="nt">&lt;/option&gt;</span>
+        <span class="nt">&lt;/select&gt;</span>
+    <span class="nt">&lt;/td&gt;</span>
 <span class="nt">&lt;/tr&gt;</span>
 </code></pre>
 </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>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>
 
 <p><strong>Struts 2 Radio Tag</strong></p>
 
-<p>The Struts 2 radio tag—like its standard HTML counterpart—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>
+<p>The Struts 2 radio tag—like its standard HTML counterpart—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>
 
 <p><strong>Struts 2 Radio Tag</strong></p>
 
@@ -196,27 +224,40 @@
 </code></pre>
 </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>
+<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>
 
 <p><strong>HTML Created By Struts 2 Radio Tag</strong></p>
 
 <div class="highlighter-rouge"><pre class="highlight"><code><span 
class="nt">&lt;tr&gt;</span>
-<span class="nt">&lt;td</span> <span class="na">class=</span><span 
class="s">"tdLabel"</span><span class="nt">&gt;</span>
-<span class="nt">&lt;label</span> <span class="na">for=</span><span 
class="s">"save_personBean_gender"</span> <span class="na">class=</span><span 
class="s">"label"</span><span class="nt">&gt;</span>Gender:<span 
class="nt">&lt;/label&gt;&lt;/td&gt;</span>
-<span class="nt">&lt;td&gt;</span>
-<span class="nt">&lt;input</span> <span class="na">type=</span><span 
class="s">"radio"</span> <span class="na">name=</span><span 
class="s">"personBean.gender"</span> <span class="na">id=</span><span 
class="s">"save_personBean_gendermale"</span> <span 
class="na">value=</span><span class="s">"male"</span><span 
class="nt">/&gt;&lt;label</span> <span class="na">for=</span><span 
class="s">"save_personBean_gendermale"</span><span 
class="nt">&gt;</span>male<span class="nt">&lt;/label&gt;</span>
-<span class="nt">&lt;input</span> <span class="na">type=</span><span 
class="s">"radio"</span> <span class="na">name=</span><span 
class="s">"personBean.gender"</span> <span class="na">id=</span><span 
class="s">"save_personBean_genderfemale"</span> <span 
class="na">value=</span><span class="s">"female"</span><span 
class="nt">/&gt;&lt;label</span> <span class="na">for=</span><span 
class="s">"save_personBean_genderfemale"</span><span 
class="nt">&gt;</span>female<span class="nt">&lt;/label&gt;</span>
-<span class="nt">&lt;input</span> <span class="na">type=</span><span 
class="s">"radio"</span> <span class="na">name=</span><span 
class="s">"personBean.gender"</span> <span class="na">id=</span><span 
class="s">"save_personBean_gendernot sure"</span> <span 
class="na">checked=</span><span class="s">"checked"</span> <span 
class="na">value=</span><span class="s">"not sure"</span><span 
class="nt">/&gt;&lt;label</span> <span class="na">for=</span><span 
class="s">"save_personBean_gendernot sure"</span><span 
class="nt">&gt;</span>not sure<span class="nt">&lt;/label&gt;</span>
-<span class="nt">&lt;/td&gt;</span>
+    <span class="nt">&lt;td</span> <span class="na">class=</span><span 
class="s">"tdLabel"</span><span class="nt">&gt;</span>
+        <span class="nt">&lt;label</span> <span class="na">for=</span><span 
class="s">"save_personBean_gender"</span> <span class="na">class=</span><span 
class="s">"label"</span><span class="nt">&gt;</span>Gender:<span 
class="nt">&lt;/label&gt;</span>
+    <span class="nt">&lt;/td&gt;</span>
+    <span class="nt">&lt;td&gt;</span>
+        <span class="nt">&lt;input</span> <span class="na">type=</span><span 
class="s">"radio"</span> <span class="na">name=</span><span 
class="s">"personBean.gender"</span> <span class="na">id=</span><span 
class="s">"save_personBean_gendermale"</span> <span 
class="na">value=</span><span class="s">"male"</span><span 
class="nt">/&gt;</span>
+        <span class="nt">&lt;label</span> <span class="na">for=</span><span 
class="s">"save_personBean_gendermale"</span><span 
class="nt">&gt;</span>male<span class="nt">&lt;/label&gt;</span>
+        
+        <span class="nt">&lt;input</span> <span class="na">type=</span><span 
class="s">"radio"</span> <span class="na">name=</span><span 
class="s">"personBean.gender"</span> <span class="na">id=</span><span 
class="s">"save_personBean_genderfemale"</span> <span 
class="na">value=</span><span class="s">"female"</span><span 
class="nt">/&gt;</span>
+        <span class="nt">&lt;label</span> <span class="na">for=</span><span 
class="s">"save_personBean_genderfemale"</span><span 
class="nt">&gt;</span>female<span class="nt">&lt;/label&gt;</span>
+        
+        <span class="nt">&lt;input</span> <span class="na">type=</span><span 
class="s">"radio"</span> <span class="na">name=</span><span 
class="s">"personBean.gender"</span> <span class="na">id=</span><span 
class="s">"save_personBean_gendernot sure"</span> <span 
class="na">checked=</span><span class="s">"checked"</span> <span 
class="na">value=</span><span class="s">"not sure"</span><span 
class="nt">/&gt;</span>
+        <span class="nt">&lt;label</span> <span class="na">for=</span><span 
class="s">"save_personBean_gendernot sure"</span><span 
class="nt">&gt;</span>not sure<span class="nt">&lt;/label&gt;</span>
+    <span class="nt">&lt;/td&gt;</span>
 <span class="nt">&lt;/tr&gt;</span>
 </code></pre>
 </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>
+<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>
 
 <p><strong>Struts 2 Select Tag - Object Backed</strong></p>
 
-<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>
+<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>
 
 <p><strong>Struts 2 Select Tag Object Backed</strong></p>
 
@@ -224,33 +265,42 @@
 </code></pre>
 </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 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>
+<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>
 
 <p><strong>HTML Created By Struts 2 Select Tag</strong></p>
 
 <div class="highlighter-rouge"><pre class="highlight"><code><span 
class="nt">&lt;tr&gt;</span>
-<span class="nt">&lt;td</span> <span class="na">class=</span><span 
class="s">"tdLabel"</span><span class="nt">&gt;</span>
-<span class="nt">&lt;label</span> <span class="na">for=</span><span 
class="s">"save_personBean_residency"</span> <span 
class="na">class=</span><span class="s">"label"</span><span 
class="nt">&gt;</span>State resident:<span 
class="nt">&lt;/label&gt;&lt;/td&gt;</span>
-<span class="nt">&lt;td&gt;</span>
-<span class="nt">&lt;select</span> <span class="na">name=</span><span 
class="s">"personBean.residency"</span> <span class="na">id=</span><span 
class="s">"save_personBean_residency"</span><span class="nt">&gt;</span>
-    <span class="nt">&lt;option</span> <span class="na">value=</span><span 
class="s">"AZ"</span><span class="nt">&gt;</span>Arizona<span 
class="nt">&lt;/option&gt;</span>
-    <span class="nt">&lt;option</span> <span class="na">value=</span><span 
class="s">"CA"</span><span class="nt">&gt;</span>California<span 
class="nt">&lt;/option&gt;</span>
-    <span class="nt">&lt;option</span> <span class="na">value=</span><span 
class="s">"FL"</span><span class="nt">&gt;</span>Florida<span 
class="nt">&lt;/option&gt;</span>
-    <span class="nt">&lt;option</span> <span class="na">value=</span><span 
class="s">"KS"</span> <span class="na">selected=</span><span 
class="s">"selected"</span><span class="nt">&gt;</span>Kansas<span 
class="nt">&lt;/option&gt;</span>
-    <span class="nt">&lt;option</span> <span class="na">value=</span><span 
class="s">"NY"</span><span class="nt">&gt;</span>New York<span 
class="nt">&lt;/option&gt;</span>
-<span class="nt">&lt;/select&gt;</span>
-<span class="nt">&lt;/td&gt;</span>
+    <span class="nt">&lt;td</span> <span class="na">class=</span><span 
class="s">"tdLabel"</span><span class="nt">&gt;</span>
+        <span class="nt">&lt;label</span> <span class="na">for=</span><span 
class="s">"save_personBean_residency"</span> <span 
class="na">class=</span><span class="s">"label"</span><span 
class="nt">&gt;</span>State resident:<span class="nt">&lt;/label&gt;</span>
+    <span class="nt">&lt;/td&gt;</span>
+    <span class="nt">&lt;td&gt;</span>
+        <span class="nt">&lt;select</span> <span class="na">name=</span><span 
class="s">"personBean.residency"</span> <span class="na">id=</span><span 
class="s">"save_personBean_residency"</span><span class="nt">&gt;</span>
+            <span class="nt">&lt;option</span> <span 
class="na">value=</span><span class="s">"AZ"</span><span 
class="nt">&gt;</span>Arizona<span class="nt">&lt;/option&gt;</span>
+            <span class="nt">&lt;option</span> <span 
class="na">value=</span><span class="s">"CA"</span><span 
class="nt">&gt;</span>California<span class="nt">&lt;/option&gt;</span>
+            <span class="nt">&lt;option</span> <span 
class="na">value=</span><span class="s">"FL"</span><span 
class="nt">&gt;</span>Florida<span class="nt">&lt;/option&gt;</span>
+            <span class="nt">&lt;option</span> <span 
class="na">value=</span><span class="s">"KS"</span> <span 
class="na">selected=</span><span class="s">"selected"</span><span 
class="nt">&gt;</span>Kansas<span class="nt">&lt;/option&gt;</span>
+            <span class="nt">&lt;option</span> <span 
class="na">value=</span><span class="s">"NY"</span><span 
class="nt">&gt;</span>New York<span class="nt">&lt;/option&gt;</span>
+        <span class="nt">&lt;/select&gt;</span>
+    <span class="nt">&lt;/td&gt;</span>
 <span class="nt">&lt;/tr&gt;</span>
 </code></pre>
 </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>
+<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>
 
 <p><strong>Struts 2 Checkbox Tag</strong></p>
 
-<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>
+<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>
 
 <p><strong>Struts 2 Checkbox Tag</strong></p>
 
@@ -263,25 +313,35 @@
 <p><strong>HTML Created By Struts 2 Checkbox Tag</strong></p>
 
 <div class="highlighter-rouge"><pre class="highlight"><code><span 
class="nt">&lt;tr&gt;</span>
-<span class="nt">&lt;td</span> <span class="na">valign=</span><span 
class="s">"top"</span> <span class="na">align=</span><span 
class="s">"right"</span><span class="nt">&gt;</span>
-<span class="nt">&lt;/td&gt;</span>
-<span class="nt">&lt;td</span> <span class="na">valign=</span><span 
class="s">"top"</span> <span class="na">align=</span><span 
class="s">"left"</span><span class="nt">&gt;</span>
-<span class="nt">&lt;input</span> <span class="na">type=</span><span 
class="s">"checkbox"</span> <span class="na">name=</span><span 
class="s">"personBean.over21"</span> <span class="na">value=</span><span 
class="s">"true"</span> <span class="na">checked=</span><span 
class="s">"checked"</span> <span class="na">id=</span><span 
class="s">"save_personBean_over21"</span><span class="nt">/&gt;</span>
-<span class="nt">&lt;input</span> <span class="na">type=</span><span 
class="s">"hidden"</span> <span class="na">id=</span><span 
class="s">"__checkbox_save_personBean_over21"</span> <span 
class="na">name=</span><span class="s">"__checkbox_personBean.over21"</span> 
<span class="na">value=</span><span class="s">"true"</span> <span 
class="nt">/&gt;</span>  <span class="nt">&lt;label</span> <span 
class="na">for=</span><span class="s">"save_personBean_over21"</span> <span 
class="na">class=</span><span class="s">"checkboxLabel"</span><span 
class="nt">&gt;</span>21 or older<span class="nt">&lt;/label&gt;</span>
-<span class="nt">&lt;/td&gt;</span>
+    <span class="nt">&lt;td</span> <span class="na">valign=</span><span 
class="s">"top"</span> <span class="na">align=</span><span 
class="s">"right"</span><span class="nt">&gt;&lt;/td&gt;</span>
+    <span class="nt">&lt;td</span> <span class="na">valign=</span><span 
class="s">"top"</span> <span class="na">align=</span><span 
class="s">"left"</span><span class="nt">&gt;</span>
+        <span class="nt">&lt;input</span> <span class="na">type=</span><span 
class="s">"checkbox"</span> <span class="na">name=</span><span 
class="s">"personBean.over21"</span> <span class="na">value=</span><span 
class="s">"true"</span> <span class="na">checked=</span><span 
class="s">"checked"</span> <span class="na">id=</span><span 
class="s">"save_personBean_over21"</span><span class="nt">/&gt;</span>
+        <span class="nt">&lt;input</span> <span class="na">type=</span><span 
class="s">"hidden"</span> <span class="na">id=</span><span 
class="s">"__checkbox_save_personBean_over21"</span> <span 
class="na">name=</span><span class="s">"__checkbox_personBean.over21"</span> 
<span class="na">value=</span><span class="s">"true"</span> <span 
class="nt">/&gt;</span>
+        <span class="nt">&lt;label</span> <span class="na">for=</span><span 
class="s">"save_personBean_over21"</span> <span class="na">class=</span><span 
class="s">"checkboxLabel"</span><span class="nt">&gt;</span>21 or older<span 
class="nt">&lt;/label&gt;</span>
+    <span class="nt">&lt;/td&gt;</span>
 <span class="nt">&lt;/tr&gt;</span>
 </code></pre>
 </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—given that the check box was not checked—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>
+<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—given that the check box was not checked—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>
 
 <p><strong>Struts 2 checkboxlist Tag</strong></p>
 
-<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>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>
+<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>
 
 <p><strong>Struts 2 Checkboxlist Tag</strong></p>
 
@@ -289,32 +349,56 @@
 </code></pre>
 </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>
+<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>
 
 <p><strong>HTML Created By Struts 2 Checkboxlist Tag</strong></p>
 
 <div class="highlighter-rouge"><pre class="highlight"><code><span 
class="nt">&lt;tr&gt;</span>
-<span class="nt">&lt;td</span> <span class="na">class=</span><span 
class="s">"tdLabel"</span><span class="nt">&gt;</span>
-<span class="nt">&lt;label</span> <span class="na">for=</span><span 
class="s">"save_personBean_carModels"</span> <span 
class="na">class=</span><span class="s">"label"</span><span 
class="nt">&gt;</span>Car models owned:<span 
class="nt">&lt;/label&gt;&lt;/td&gt;</span>
-<span class="nt">&lt;td&gt;</span>
-<span class="nt">&lt;input</span> <span class="na">type=</span><span 
class="s">"checkbox"</span> <span class="na">name=</span><span 
class="s">"personBean.carModels"</span> <span class="na">value=</span><span 
class="s">"Ford"</span> <span class="na">id=</span><span 
class="s">"personBean.carModels-1"</span> <span class="na">checked=</span><span 
class="s">"checked"</span><span class="nt">/&gt;</span>
-<span class="nt">&lt;label</span> <span class="na">for=</span><span 
class="s">"personBean.carModels-1"</span> <span class="na">class=</span><span 
class="s">"checkboxLabel"</span><span class="nt">&gt;</span>Ford<span 
class="nt">&lt;/label&gt;</span>
-<span class="nt">&lt;input</span> <span class="na">type=</span><span 
class="s">"checkbox"</span> <span class="na">name=</span><span 
class="s">"personBean.carModels"</span> <span class="na">value=</span><span 
class="s">"Chrysler"</span> <span class="na">id=</span><span 
class="s">"personBean.carModels-2"</span><span class="nt">/&gt;</span>
-<span class="nt">&lt;label</span> <span class="na">for=</span><span 
class="s">"personBean.carModels-2"</span> <span class="na">class=</span><span 
class="s">"checkboxLabel"</span><span class="nt">&gt;</span>Chrysler<span 
class="nt">&lt;/label&gt;</span>
-<span class="nt">&lt;input</span> <span class="na">type=</span><span 
class="s">"checkbox"</span> <span class="na">name=</span><span 
class="s">"personBean.carModels"</span> <span class="na">value=</span><span 
class="s">"Toyota"</span> <span class="na">id=</span><span 
class="s">"personBean.carModels-3"</span><span class="nt">/&gt;</span>
-<span class="nt">&lt;label</span> <span class="na">for=</span><span 
class="s">"personBean.carModels-3"</span> <span class="na">class=</span><span 
class="s">"checkboxLabel"</span><span class="nt">&gt;</span>Toyota<span 
class="nt">&lt;/label&gt;</span>
-<span class="nt">&lt;input</span> <span class="na">type=</span><span 
class="s">"checkbox"</span> <span class="na">name=</span><span 
class="s">"personBean.carModels"</span> <span class="na">value=</span><span 
class="s">"Nissan"</span> <span class="na">id=</span><span 
class="s">"personBean.carModels-4"</span> <span class="na">checked=</span><span 
class="s">"checked"</span><span class="nt">/&gt;</span>
-<span class="nt">&lt;label</span> <span class="na">for=</span><span 
class="s">"personBean.carModels-4"</span> <span class="na">class=</span><span 
class="s">"checkboxLabel"</span><span class="nt">&gt;</span>Nissan<span 
class="nt">&lt;/label&gt;</span>
-<span class="nt">&lt;input</span> <span class="na">type=</span><span 
class="s">"hidden"</span> <span class="na">id=</span><span 
class="s">"__multiselect_save_personBean_carModels"</span> <span 
class="na">name=</span><span 
class="s">"__multiselect_personBean.carModels"</span> <span 
class="na">value=</span><span class="s">""</span> <span class="nt">/&gt;</span>
-<span class="nt">&lt;/td&gt;</span>
+    <span class="nt">&lt;td</span> <span class="na">class=</span><span 
class="s">"tdLabel"</span><span class="nt">&gt;</span>
+        <span class="nt">&lt;label</span> <span class="na">for=</span><span 
class="s">"save_personBean_carModels"</span> <span 
class="na">class=</span><span class="s">"label"</span><span 
class="nt">&gt;</span>Car models owned:<span class="nt">&lt;/label&gt;</span>
+    <span class="nt">&lt;/td&gt;</span>
+    <span class="nt">&lt;td&gt;</span>
+        <span class="nt">&lt;input</span> <span class="na">type=</span><span 
class="s">"checkbox"</span> <span class="na">name=</span><span 
class="s">"personBean.carModels"</span> <span class="na">value=</span><span 
class="s">"Ford"</span> <span class="na">id=</span><span 
class="s">"personBean.carModels-1"</span> <span class="na">checked=</span><span 
class="s">"checked"</span><span class="nt">/&gt;</span>
+        <span class="nt">&lt;label</span> <span class="na">for=</span><span 
class="s">"personBean.carModels-1"</span> <span class="na">class=</span><span 
class="s">"checkboxLabel"</span><span class="nt">&gt;</span>Ford<span 
class="nt">&lt;/label&gt;</span>
+        
+        <span class="nt">&lt;input</span> <span class="na">type=</span><span 
class="s">"checkbox"</span> <span class="na">name=</span><span 
class="s">"personBean.carModels"</span> <span class="na">value=</span><span 
class="s">"Chrysler"</span> <span class="na">id=</span><span 
class="s">"personBean.carModels-2"</span><span class="nt">/&gt;</span>
+        <span class="nt">&lt;label</span> <span class="na">for=</span><span 
class="s">"personBean.carModels-2"</span> <span class="na">class=</span><span 
class="s">"checkboxLabel"</span><span class="nt">&gt;</span>Chrysler<span 
class="nt">&lt;/label&gt;</span>
+        
+        <span class="nt">&lt;input</span> <span class="na">type=</span><span 
class="s">"checkbox"</span> <span class="na">name=</span><span 
class="s">"personBean.carModels"</span> <span class="na">value=</span><span 
class="s">"Toyota"</span> <span class="na">id=</span><span 
class="s">"personBean.carModels-3"</span><span class="nt">/&gt;</span>
+        <span class="nt">&lt;label</span> <span class="na">for=</span><span 
class="s">"personBean.carModels-3"</span> <span class="na">class=</span><span 
class="s">"checkboxLabel"</span><span class="nt">&gt;</span>Toyota<span 
class="nt">&lt;/label&gt;</span>
+        
+        <span class="nt">&lt;input</span> <span class="na">type=</span><span 
class="s">"checkbox"</span> <span class="na">name=</span><span 
class="s">"personBean.carModels"</span> <span class="na">value=</span><span 
class="s">"Nissan"</span> <span class="na">id=</span><span 
class="s">"personBean.carModels-4"</span> <span class="na">checked=</span><span 
class="s">"checked"</span><span class="nt">/&gt;</span>
+        <span class="nt">&lt;label</span> <span class="na">for=</span><span 
class="s">"personBean.carModels-4"</span> <span class="na">class=</span><span 
class="s">"checkboxLabel"</span><span class="nt">&gt;</span>Nissan<span 
class="nt">&lt;/label&gt;</span>
+        <span class="nt">&lt;input</span> <span class="na">type=</span><span 
class="s">"hidden"</span> <span class="na">id=</span><span 
class="s">"__multiselect_save_personBean_carModels"</span> <span 
class="na">name=</span><span 
class="s">"__multiselect_personBean.carModels"</span> <span 
class="na">value=</span><span class="s">""</span> <span class="nt">/&gt;</span>
+    <span class="nt">&lt;/td&gt;</span>
 <span class="nt">&lt;/tr&gt;</span>
 </code></pre>
 </div>
 
-<p>Summary
- 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 
href="http://struts.apache.org";>http://struts.apache.org</a>.</p>
+<p><strong>Summary</strong></p>
+
+<p>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 
href="http://struts.apache.org";>http://struts.apache.org</a>.</p>
+
+<table>
+  <tbody>
+    <tr>
+      <td>Return to <a href="debugging-struts.html">Debugging Struts</a></td>
+      <td>or</td>
+      <td>onward to <a href="form-validation-using-xml.html">Form validation 
using XML</a></td>
+    </tr>
+  </tbody>
+</table>
+
 
   </section>
 </article>

Modified: 
websites/production/struts/content/getting-started/form-validation-using-xml.html
==============================================================================
--- 
websites/production/struts/content/getting-started/form-validation-using-xml.html
 (original)
+++ 
websites/production/struts/content/getting-started/form-validation-using-xml.html
 Wed Apr 12 08:19:03 2017
@@ -121,6 +121,7 @@
 
 <article class="container">
   <section class="col-md-12">
+    <a href="index.html" title="back to Getting Started"><< back to Getting 
Started</a>
     <h2 id="form-validation-using-xml">Form Validation Using XML</h2>
 
 <p>The example code for this tutorial, form_xml_validation, is available for 
checkout at <a 
href="https://github.com/apache/struts-examples";>https://github.com/apache/struts-examples</a></p>
@@ -247,6 +248,16 @@
 
 <p>The Struts 2 framework provides easy-to-use validation methodologies. You 
can add a validate method to the Action class or have a separate XML file with 
validation rules or you can use a combination of both methodologies.</p>
 
+<table>
+  <tbody>
+    <tr>
+      <td>Return to <a href="form-tags.html">Form tags</a></td>
+      <td>or</td>
+      <td>onward to <a href="control-tags.html">Control tags</a></td>
+    </tr>
+  </tbody>
+</table>
+
   </section>
 </article>
 

Modified: 
websites/production/struts/content/getting-started/form-validation.html
==============================================================================
--- websites/production/struts/content/getting-started/form-validation.html 
(original)
+++ websites/production/struts/content/getting-started/form-validation.html Wed 
Apr 12 08:19:03 2017
@@ -121,6 +121,7 @@
 
 <article class="container">
   <section class="col-md-12">
+    <a href="index.html" title="back to Getting Started"><< back to Getting 
Started</a>
     <h2 id="form-validation">Form Validation</h2>
 
 <p>This tutorial assumes you’ve completed the <a 
href="processing-forms.html">Processing Forms</a> tutorial and have a working 
form_processing project. The example code for this tutorial, form_validation, 
is available for checkout from the Struts 2 GitHub repository: <a 
href="https://github.com/apache/struts-examples";>https://github.com/apache/struts-examples</a>.</p>
@@ -153,19 +154,19 @@
 
 <p><strong>validate method</strong></p>
 
-<div class="highlighter-rouge"><pre class="highlight"><code>    <span 
class="kd">public</span> <span class="kt">void</span> <span 
class="nf">validate</span><span class="p">(</span><span class="o">){</span>
-        <span class="k">if</span> <span class="o">(</span><span 
class="n">personBean</span><span class="o">.</span><span 
class="na">getFirstName</span><span class="o">().</span><span 
class="na">length</span><span class="o">()</span> <span class="o">==</span> 
<span class="mi">0</span><span class="o">)</span> <span class="o">{</span>
-            <span class="n">addFieldError</span><span class="o">(</span><span 
class="s">"personBean.firstName"</span><span class="o">,</span> <span 
class="s">"First name is required."</span><span class="o">);</span>
-        <span class="o">}</span>
-
-        <span class="k">if</span> <span class="o">(</span><span 
class="n">personBean</span><span class="o">.</span><span 
class="na">getEmail</span><span class="o">().</span><span 
class="na">length</span><span class="o">()</span> <span class="o">==</span> 
<span class="mi">0</span><span class="o">)</span> <span class="o">{</span>
-            <span class="n">addFieldError</span><span class="o">(</span><span 
class="s">"personBean.email"</span><span class="o">,</span> <span 
class="s">"Email is required."</span><span class="o">);</span>
-        <span class="o">}</span>
-
-        <span class="k">if</span> <span class="o">(</span><span 
class="n">personBean</span><span class="o">.</span><span 
class="na">getAge</span><span class="o">()</span> <span class="o">&lt;</span> 
<span class="mi">18</span><span class="o">)</span> <span class="o">{</span>
-            <span class="n">addFieldError</span><span class="o">(</span><span 
class="s">"personBean.age"</span><span class="o">,</span> <span class="s">"Age 
is required and must be 18 or older"</span><span class="o">);</span>
-        <span class="o">}</span>
+<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="kd">public</span> <span class="kt">void</span> <span 
class="nf">validate</span><span class="p">(</span><span class="o">){</span>
+    <span class="k">if</span> <span class="o">(</span><span 
class="n">personBean</span><span class="o">.</span><span 
class="na">getFirstName</span><span class="o">().</span><span 
class="na">length</span><span class="o">()</span> <span class="o">==</span> 
<span class="mi">0</span><span class="o">)</span> <span class="o">{</span>
+        <span class="n">addFieldError</span><span class="o">(</span><span 
class="s">"personBean.firstName"</span><span class="o">,</span> <span 
class="s">"First name is required."</span><span class="o">);</span>
     <span class="o">}</span>
+
+    <span class="k">if</span> <span class="o">(</span><span 
class="n">personBean</span><span class="o">.</span><span 
class="na">getEmail</span><span class="o">().</span><span 
class="na">length</span><span class="o">()</span> <span class="o">==</span> 
<span class="mi">0</span><span class="o">)</span> <span class="o">{</span>
+        <span class="n">addFieldError</span><span class="o">(</span><span 
class="s">"personBean.email"</span><span class="o">,</span> <span 
class="s">"Email is required."</span><span class="o">);</span>
+    <span class="o">}</span>
+
+    <span class="k">if</span> <span class="o">(</span><span 
class="n">personBean</span><span class="o">.</span><span 
class="na">getAge</span><span class="o">()</span> <span class="o">&lt;</span> 
<span class="mi">18</span><span class="o">)</span> <span class="o">{</span>
+        <span class="n">addFieldError</span><span class="o">(</span><span 
class="s">"personBean.age"</span><span class="o">,</span> <span class="s">"Age 
is required and must be 18 or older"</span><span class="o">);</span>
+    <span class="o">}</span>
+<span class="o">}</span>
 </code></pre>
 </div>
 
@@ -191,7 +192,7 @@
 
 <p>So the following addFieldError method call:</p>
 
-<div class="highlighter-rouge"><pre class="highlight"><code>    <span 
class="n">addFieldError</span><span class="o">(</span><span 
class="s">"personBean.firstName"</span><span class="o">,</span> <span 
class="s">"First name is required."</span><span class="o">)</span>
+<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="n">addFieldError</span><span class="o">(</span><span 
class="s">"personBean.firstName"</span><span class="o">,</span> <span 
class="s">"First name is required."</span><span class="o">)</span>
 </code></pre>
 </div>
 
@@ -217,6 +218,16 @@
 
 <p>In our next tutorial we’ll cover how to use message resource files to 
separate out the text from the view page.</p>
 
+<table>
+  <tbody>
+    <tr>
+      <td>Return to <a href="processing-forms.html">Processing Forms</a></td>
+      <td>or</td>
+      <td>onward to <a href="message-resource-files.html">Message resource 
files</a></td>
+    </tr>
+  </tbody>
+</table>
+
   </section>
 </article>
 

Modified: 
websites/production/struts/content/getting-started/hello-world-using-struts2.html
==============================================================================
--- 
websites/production/struts/content/getting-started/hello-world-using-struts2.html
 (original)
+++ 
websites/production/struts/content/getting-started/hello-world-using-struts2.html
 Wed Apr 12 08:19:03 2017
@@ -121,6 +121,7 @@
 
 <article class="container">
   <section class="col-md-12">
+    <a href="index.html" title="back to Getting Started"><< back to Getting 
Started</a>
     <h2 id="hello-world-using-struts-2">Hello World Using Struts 2</h2>
 
 <p>When you click on a hyperlink or submit an HTML form in a Struts 2 web 
application, the input is not sent to another server page, but to a Java class 
that you provide. These classes are called Actions. After the Action fires, a 
Result selects a resource to render the response. The resource is generally a 
server page, but it can also be a PDF file, an Excel spreadsheet, or a Java 
applet window.</p>
@@ -304,14 +305,14 @@
 <span class="err">&lt;</span>%@ taglib prefix="s" uri="/struts-tags" %&gt;
 <span class="cp">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 
Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt;</span>
 <span class="nt">&lt;html&gt;</span>
-  <span class="nt">&lt;head&gt;</span>
-    <span class="nt">&lt;meta</span> <span class="na">http-equiv=</span><span 
class="s">"Content-Type"</span> <span class="na">content=</span><span 
class="s">"text/html; charset=ISO-8859-1"</span><span class="nt">&gt;</span>
-    <span class="nt">&lt;title&gt;</span>Basic Struts 2 Application - 
Welcome<span class="nt">&lt;/title&gt;</span>
-  <span class="nt">&lt;/head&gt;</span>
-  <span class="nt">&lt;body&gt;</span>
-    <span class="nt">&lt;h1&gt;</span>Welcome To Struts 2!<span 
class="nt">&lt;/h1&gt;</span>
-    <span class="nt">&lt;p&gt;&lt;a</span> <span class="na">href=</span><span 
class="s">"&lt;s:url action='hello'/&gt;"</span><span 
class="nt">&gt;</span>Hello World<span class="nt">&lt;/a&gt;&lt;/p&gt;</span>
-  <span class="nt">&lt;/body&gt;</span>
+    <span class="nt">&lt;head&gt;</span>
+        <span class="nt">&lt;meta</span> <span 
class="na">http-equiv=</span><span class="s">"Content-Type"</span> <span 
class="na">content=</span><span class="s">"text/html; 
charset=ISO-8859-1"</span><span class="nt">&gt;</span>
+        <span class="nt">&lt;title&gt;</span>Basic Struts 2 Application - 
Welcome<span class="nt">&lt;/title&gt;</span>
+    <span class="nt">&lt;/head&gt;</span>
+    <span class="nt">&lt;body&gt;</span>
+        <span class="nt">&lt;h1&gt;</span>Welcome To Struts 2!<span 
class="nt">&lt;/h1&gt;</span>
+        <span class="nt">&lt;p&gt;&lt;a</span> <span 
class="na">href=</span><span class="s">"&lt;s:url 
action='hello'/&gt;"</span><span class="nt">&gt;</span>Hello World<span 
class="nt">&lt;/a&gt;&lt;/p&gt;</span>
+    <span class="nt">&lt;/body&gt;</span>
 <span class="nt">&lt;/html&gt;</span>
 </code></pre>
 </div>
@@ -358,6 +359,16 @@
 
 <p>When a server page is rendered, most often it will include dynamic data 
provided by the Action. To make it easy to display dynamic data, the framework 
provides a set of tags that can be used along with HTML markup to create a 
server page.</p>
 
+<table>
+  <tbody>
+    <tr>
+      <td>Return to <a href="how-to-create-a-struts2-web-application.html">How 
to create a Struts 2 web application</a></td>
+      <td>or</td>
+      <td>onward to <a href="using-tags.html">Using Struts 2 Tags</a></td>
+    </tr>
+  </tbody>
+</table>
+
   </section>
 </article>
 

Modified: 
websites/production/struts/content/getting-started/how-to-create-a-struts2-web-application.html
==============================================================================
--- 
websites/production/struts/content/getting-started/how-to-create-a-struts2-web-application.html
 (original)
+++ 
websites/production/struts/content/getting-started/how-to-create-a-struts2-web-application.html
 Wed Apr 12 08:19:03 2017
@@ -121,6 +121,7 @@
 
 <article class="container">
   <section class="col-md-12">
+    <a href="index.html" title="back to Getting Started"><< back to Getting 
Started</a>
     <h2 id="how-to-create-a-struts-2-web-application">How To Create A Struts 2 
Web Application</h2>
 
 <p>This tutorial walks through installing the framework and creating a simple 
application.</p>
@@ -346,6 +347,16 @@ The xwork2 library is used heavily by th
 this Basic Struts 2 application 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>
 
+<table>
+  <tbody>
+    <tr>
+      <td>Return to <a href="index.html">Getting started</a></td>
+      <td>or</td>
+      <td>onward to <a href="hello-world-using-struts2.html">Hello World using 
Struts 2</a></td>
+    </tr>
+  </tbody>
+</table>
+
   </section>
 </article>
 

Modified: websites/production/struts/content/getting-started/http-session.html
==============================================================================
--- websites/production/struts/content/getting-started/http-session.html 
(original)
+++ websites/production/struts/content/getting-started/http-session.html Wed 
Apr 12 08:19:03 2017
@@ -121,6 +121,7 @@
 
 <article class="container">
   <section class="col-md-12">
+    <a href="index.html" title="back to Getting Started"><< back to Getting 
Started</a>
     <h2 id="http-session">HTTP Session</h2>
 
 <p>The example code for this tutorial, http_session, is available at <a 
href="https://github.com/apache/struts-examples";>https://github.com/apache/struts-examples</a></p>
@@ -196,15 +197,15 @@
 
 <p><strong>HelloWorldAction.java acceptableParameterName Method</strong></p>
 
-<div class="highlighter-rouge"><pre class="highlight"><code>    <span 
class="kd">public</span> <span class="kt">boolean</span> <span 
class="nf">acceptableParameterName</span><span class="p">(</span><span 
class="n">String</span> <span class="n">parameterName</span><span 
class="o">)</span> <span class="o">{</span>
-        <span class="kt">boolean</span> <span 
class="n">allowedParameterName</span> <span class="o">=</span> <span 
class="kc">true</span> <span class="o">;</span>
+<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="kd">public</span> <span class="kt">boolean</span> <span 
class="nf">acceptableParameterName</span><span class="p">(</span><span 
class="n">String</span> <span class="n">parameterName</span><span 
class="o">)</span> <span class="o">{</span>
+    <span class="kt">boolean</span> <span 
class="n">allowedParameterName</span> <span class="o">=</span> <span 
class="kc">true</span> <span class="o">;</span>
 
-        <span class="k">if</span> <span class="o">(</span> <span 
class="n">parameterName</span><span class="o">.</span><span 
class="na">contains</span><span class="o">(</span><span 
class="s">"session"</span><span class="o">)</span>  <span class="o">||</span> 
<span class="n">parameterName</span><span class="o">.</span><span 
class="na">contains</span><span class="o">(</span><span 
class="s">"request"</span><span class="o">)</span> <span class="o">)</span> 
<span class="o">{</span>
-            <span class="n">allowedParameterName</span> <span 
class="o">=</span> <span class="kc">false</span> <span class="o">;</span>
-        <span class="o">}</span> 
-               
-        <span class="k">return</span> <span 
class="n">allowedParameterName</span><span class="o">;</span>
-    <span class="o">}</span>
+    <span class="k">if</span> <span class="o">(</span> <span 
class="n">parameterName</span><span class="o">.</span><span 
class="na">contains</span><span class="o">(</span><span 
class="s">"session"</span><span class="o">)</span>  <span class="o">||</span> 
<span class="n">parameterName</span><span class="o">.</span><span 
class="na">contains</span><span class="o">(</span><span 
class="s">"request"</span><span class="o">)</span> <span class="o">)</span> 
<span class="o">{</span>
+        <span class="n">allowedParameterName</span> <span class="o">=</span> 
<span class="kc">false</span> <span class="o">;</span>
+    <span class="o">}</span> 
+
+    <span class="k">return</span> <span 
class="n">allowedParameterName</span><span class="o">;</span>
+<span class="o">}</span>
 </code></pre>
 </div>
 
@@ -214,19 +215,20 @@
 
 <p><strong>struts.xml configure params interceptor</strong></p>
 
-<div class="highlighter-rouge"><pre class="highlight"><code>    <span 
class="nt">&lt;package</span> <span class="na">name=</span><span 
class="s">"basicstruts2"</span> <span class="na">extends=</span><span 
class="s">"struts-default"</span><span class="nt">&gt;</span>
-        <span class="nt">&lt;interceptors&gt;</span>
-            <span class="nt">&lt;interceptor-stack</span> <span 
class="na">name=</span><span class="s">"appDefault"</span><span 
class="nt">&gt;</span>
-                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"defaultStack"</span><span 
class="nt">&gt;</span>
-                    <span class="nt">&lt;param</span> <span 
class="na">name=</span><span class="s">"exception.logEnabled"</span><span 
class="nt">&gt;</span>true<span class="nt">&lt;/param&gt;</span>
-                    <span class="nt">&lt;param</span> <span 
class="na">name=</span><span class="s">"exception.logLevel"</span><span 
class="nt">&gt;</span>ERROR<span class="nt">&lt;/param&gt;</span>
-                    <span class="nt">&lt;param</span> <span 
class="na">name=</span><span class="s">"params.excludeParams"</span><span 
class="nt">&gt;</span>dojo..*,^struts..*,^session..*,^request..*,^application..*,^servlet(Request|Response)..*,parameters...*<span
 class="nt">&lt;/param&gt;</span>
-                <span class="nt">&lt;/interceptor-ref&gt;</span>
-            <span class="nt">&lt;/interceptor-stack&gt;</span>
-        <span class="nt">&lt;/interceptors&gt;</span>
-               
-        <span class="nt">&lt;default-interceptor-ref</span> <span 
class="na">name=</span><span class="s">"appDefault"</span> <span 
class="nt">/&gt;</span>
-...
+<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="nt">&lt;package</span> <span class="na">name=</span><span 
class="s">"basicstruts2"</span> <span class="na">extends=</span><span 
class="s">"struts-default"</span><span class="nt">&gt;</span>
+    <span class="nt">&lt;interceptors&gt;</span>
+        <span class="nt">&lt;interceptor-stack</span> <span 
class="na">name=</span><span class="s">"appDefault"</span><span 
class="nt">&gt;</span>
+            <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"defaultStack"</span><span 
class="nt">&gt;</span>
+                <span class="nt">&lt;param</span> <span 
class="na">name=</span><span class="s">"exception.logEnabled"</span><span 
class="nt">&gt;</span>true<span class="nt">&lt;/param&gt;</span>
+                <span class="nt">&lt;param</span> <span 
class="na">name=</span><span class="s">"exception.logLevel"</span><span 
class="nt">&gt;</span>ERROR<span class="nt">&lt;/param&gt;</span>
+                <span class="nt">&lt;param</span> <span 
class="na">name=</span><span class="s">"params.excludeParams"</span><span 
class="nt">&gt;</span>dojo..*,^struts..*,^session..*,^request..*,^application..*,^servlet(Request|Response)..*,parameters...*<span
 class="nt">&lt;/param&gt;</span>
+            <span class="nt">&lt;/interceptor-ref&gt;</span>
+        <span class="nt">&lt;/interceptor-stack&gt;</span>
+    <span class="nt">&lt;/interceptors&gt;</span>
+
+    <span class="nt">&lt;default-interceptor-ref</span> <span 
class="na">name=</span><span class="s">"appDefault"</span> <span 
class="nt">/&gt;</span>
+    ...
+<span class="nt">&lt;/package&gt;</span>
 </code></pre>
 </div>
 
@@ -246,6 +248,16 @@
 
 <p>When your Action class needs to access the HTTP session object implement 
the SessionAware interface and override the setSession method. Be sure to also 
implement the ParameterNameAware interface and override the 
acceptableParameterName method to mitigate a potential security vulnerability. 
If you have multiple actions that implement SessionAware then consider 
modifying the params interceptor’s excludeParams value as part of your Struts 
2 package setup.</p>
 
+<table>
+  <tbody>
+    <tr>
+      <td>Return to <a href="unit-testing.html">Unit Testing</a></td>
+      <td>or</td>
+      <td>onward to <a href="preperable-interface.html">Preparable 
Interface</a></td>
+    </tr>
+  </tbody>
+</table>
+
   </section>
 </article>
 

Modified: 
websites/production/struts/content/getting-started/introducing-interceptors.html
==============================================================================
--- 
websites/production/struts/content/getting-started/introducing-interceptors.html
 (original)
+++ 
websites/production/struts/content/getting-started/introducing-interceptors.html
 Wed Apr 12 08:19:03 2017
@@ -121,6 +121,7 @@
 
 <article class="container">
   <section class="col-md-12">
+    <a href="index.html" title="back to Getting Started"><< back to Getting 
Started</a>
     <h2 id="introducing-interceptors">Introducing Interceptors</h2>
 
 <p>The example code for this tutorial, interceptors, is available at <a 
href="https://github.com/apache/struts-examples";>https://github.com/apache/struts-examples</a></p>
@@ -241,6 +242,16 @@ INFO: Executed action /register!execute
 
 <p>Interceptors provide the Struts 2 framework with both power and 
flexibility. Developers may add additional interceptors (either ones provided 
by Struts 2 or ones they create) to the stack of interceptors executed when an 
Action class is called.</p>
 
+<table>
+  <tbody>
+    <tr>
+      <td>Return to <a href="annotations.html">Annotations</a></td>
+      <td>or</td>
+      <td>onward to <a href="unit-testing.html">Unit Testing</a></td>
+    </tr>
+  </tbody>
+</table>
+
   </section>
 </article>
 


Reply via email to