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 2017/04/12 08:19:04 UTC

svn commit: r1010307 [1/2] - in /websites/production/struts/content: bootstrap/css/ css/ getting-started/ highlighter/

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>