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"><dependency></span>
<span class="nt"><groupId></span>org.apache.struts<span
class="nt"></groupId></span>
<span class="nt"><artifactId></span>struts2-convention-plugin<span
class="nt"></artifactId></span>
- <span class="nt"><version></span>2.5.10.1<span
class="nt"></version></span>
+ <span class="nt"><version></span>X.X.X.X<span
class="nt"></version></span>
<span class="nt"></dependency></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"><a</span> <span class="na">href=</span><span class="s">"<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">/></span>">Launch the configuration browser<span
class="nt"></a></span>
+<div class="highlighter-rouge"><pre class="highlight"><code><span
class="nt"><a</span> <span class="na">href=</span><span class="s">'<s:url
action="index" namespace="config-browser" />'</span><span
class="nt">></span>Launch the configuration browser<span
class="nt"></a></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"><global-results></span>
- <span class="nt"><result</span> <span class="na">name=</span><span
class="s">"securityerror"</span><span
class="nt">></span>/securityerror.jsp<span class="nt"></result></span>
- <span class="nt"><result</span> <span class="na">name=</span><span
class="s">"error"</span><span class="nt">></span>/error.jsp<span
class="nt"></result></span>
- <span class="nt"></global-results></span>
-
- <span class="nt"><global-exception-mappings></span>
- <span class="nt"><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">/></span>
- <span class="nt"><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">/></span>
- <span class="nt"></global-exception-mappings></span>
+<div class="highlighter-rouge"><pre class="highlight"><code><span
class="nt"><global-results></span>
+ <span class="nt"><result</span> <span class="na">name=</span><span
class="s">"securityerror"</span><span
class="nt">></span>/securityerror.jsp<span class="nt"></result></span>
+ <span class="nt"><result</span> <span class="na">name=</span><span
class="s">"error"</span><span class="nt">></span>/error.jsp<span
class="nt"></result></span>
+<span class="nt"></global-results></span>
+
+<span class="nt"><global-exception-mappings></span>
+ <span class="nt"><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">/></span>
+ <span class="nt"><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">/></span>
+<span class="nt"></global-exception-mappings></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"><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">></span>
- <span class="nt"><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">/></span>
- <span class="nt"><result></span>/register.jsp<span
class="nt"></result></span>
- <span class="nt"><result</span> <span class="na">name=</span><span
class="s">"login"</span><span class="nt">></span>/login.jsp<span
class="nt"></result></span>
- <span class="nt"></action></span>
+<div class="highlighter-rouge"><pre class="highlight"><code><span
class="nt"><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">></span>
+ <span class="nt"><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">/></span>
+ <span class="nt"><result></span>/register.jsp<span
class="nt"></result></span>
+ <span class="nt"><result</span> <span class="na">name=</span><span
class="s">"login"</span><span class="nt">></span>/login.jsp<span
class="nt"></result></span>
+<span class="nt"></action></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"><h4></span>The application has malfunctioned.<span
class="nt"></h4></span>
+<div class="highlighter-rouge"><pre class="highlight"><code><span
class="nt"><h4></span>The application has malfunctioned.<span
class="nt"></h4></span>
- <span class="nt"><p></span> Please contact technical support with
the following information:<span class="nt"></p></span>
+<span class="nt"><p></span>Please contact technical support with the
following information:<span class="nt"></p></span>
- <span class="nt"><h4></span>Exception Name: <span
class="nt"><s:property</span> <span class="na">value=</span><span
class="s">"exception"</span> <span class="nt">/></span> <span
class="nt"></h4></span>
+<span class="nt"><h4></span>Exception Name: <span
class="nt"><s:property</span> <span class="na">value=</span><span
class="s">"exception"</span> <span class="nt">/></span> <span
class="nt"></h4></span>
- <span class="nt"><h4></span>Exception Details: <span
class="nt"><s:property</span> <span class="na">value=</span><span
class="s">"exceptionStack"</span> <span class="nt">/></h4></span>
+<span class="nt"><h4></span>Exception Details: <span
class="nt"><s:property</span> <span class="na">value=</span><span
class="s">"exceptionStack"</span> <span class="nt">/></h4></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"><param
name="params.excludeParams"></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"><tr></span>
-<span class="nt"><td</span> <span class="na">class=</span><span
class="s">"tdLabel"</span><span class="nt">></span>
-<span class="nt"><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">></span>Favorite sport:<span
class="nt"></label></span>
-<span class="nt"></td></span>
-<span class="nt"><td></span>
-<span class="nt"><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">></span>
- <span class="nt"><option</span> <span class="na">value=</span><span
class="s">"football"</span><span class="nt">></span>football<span
class="nt"></option></span>
- <span class="nt"><option</span> <span class="na">value=</span><span
class="s">"baseball"</span><span class="nt">></span>baseball<span
class="nt"></option></span>
- <span class="nt"><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">></span>basketball<span
class="nt"></option></span>
-<span class="nt"></select></span>
-<span class="nt"></td></span>
+ <span class="nt"><td</span> <span class="na">class=</span><span
class="s">"tdLabel"</span><span class="nt">></span>
+ <span class="nt"><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">></span>Favorite sport:<span
class="nt"></label></span>
+ <span class="nt"></td></span>
+ <span class="nt"><td></span>
+ <span class="nt"><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">></span>
+ <span class="nt"><option</span> <span
class="na">value=</span><span class="s">"football"</span><span
class="nt">></span>football<span class="nt"></option></span>
+ <span class="nt"><option</span> <span
class="na">value=</span><span class="s">"baseball"</span><span
class="nt">></span>baseball<span class="nt"></option></span>
+ <span class="nt"><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">></span>basketball<span class="nt"></option></span>
+ <span class="nt"></select></span>
+ <span class="nt"></td></span>
<span class="nt"></tr></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"><tr></span>
-<span class="nt"><td</span> <span class="na">class=</span><span
class="s">"tdLabel"</span><span class="nt">></span>
-<span class="nt"><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">></span>Gender:<span
class="nt"></label></td></span>
-<span class="nt"><td></span>
-<span class="nt"><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">/><label</span> <span class="na">for=</span><span
class="s">"save_personBean_gendermale"</span><span
class="nt">></span>male<span class="nt"></label></span>
-<span class="nt"><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">/><label</span> <span class="na">for=</span><span
class="s">"save_personBean_genderfemale"</span><span
class="nt">></span>female<span class="nt"></label></span>
-<span class="nt"><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">/><label</span> <span class="na">for=</span><span
class="s">"save_personBean_gendernot sure"</span><span
class="nt">></span>not sure<span class="nt"></label></span>
-<span class="nt"></td></span>
+ <span class="nt"><td</span> <span class="na">class=</span><span
class="s">"tdLabel"</span><span class="nt">></span>
+ <span class="nt"><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">></span>Gender:<span
class="nt"></label></span>
+ <span class="nt"></td></span>
+ <span class="nt"><td></span>
+ <span class="nt"><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">/></span>
+ <span class="nt"><label</span> <span class="na">for=</span><span
class="s">"save_personBean_gendermale"</span><span
class="nt">></span>male<span class="nt"></label></span>
+
+ <span class="nt"><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">/></span>
+ <span class="nt"><label</span> <span class="na">for=</span><span
class="s">"save_personBean_genderfemale"</span><span
class="nt">></span>female<span class="nt"></label></span>
+
+ <span class="nt"><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">/></span>
+ <span class="nt"><label</span> <span class="na">for=</span><span
class="s">"save_personBean_gendernot sure"</span><span
class="nt">></span>not sure<span class="nt"></label></span>
+ <span class="nt"></td></span>
<span class="nt"></tr></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"><tr></span>
-<span class="nt"><td</span> <span class="na">class=</span><span
class="s">"tdLabel"</span><span class="nt">></span>
-<span class="nt"><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">></span>State resident:<span
class="nt"></label></td></span>
-<span class="nt"><td></span>
-<span class="nt"><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">></span>
- <span class="nt"><option</span> <span class="na">value=</span><span
class="s">"AZ"</span><span class="nt">></span>Arizona<span
class="nt"></option></span>
- <span class="nt"><option</span> <span class="na">value=</span><span
class="s">"CA"</span><span class="nt">></span>California<span
class="nt"></option></span>
- <span class="nt"><option</span> <span class="na">value=</span><span
class="s">"FL"</span><span class="nt">></span>Florida<span
class="nt"></option></span>
- <span class="nt"><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">></span>Kansas<span
class="nt"></option></span>
- <span class="nt"><option</span> <span class="na">value=</span><span
class="s">"NY"</span><span class="nt">></span>New York<span
class="nt"></option></span>
-<span class="nt"></select></span>
-<span class="nt"></td></span>
+ <span class="nt"><td</span> <span class="na">class=</span><span
class="s">"tdLabel"</span><span class="nt">></span>
+ <span class="nt"><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">></span>State resident:<span class="nt"></label></span>
+ <span class="nt"></td></span>
+ <span class="nt"><td></span>
+ <span class="nt"><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">></span>
+ <span class="nt"><option</span> <span
class="na">value=</span><span class="s">"AZ"</span><span
class="nt">></span>Arizona<span class="nt"></option></span>
+ <span class="nt"><option</span> <span
class="na">value=</span><span class="s">"CA"</span><span
class="nt">></span>California<span class="nt"></option></span>
+ <span class="nt"><option</span> <span
class="na">value=</span><span class="s">"FL"</span><span
class="nt">></span>Florida<span class="nt"></option></span>
+ <span class="nt"><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">></span>Kansas<span class="nt"></option></span>
+ <span class="nt"><option</span> <span
class="na">value=</span><span class="s">"NY"</span><span
class="nt">></span>New York<span class="nt"></option></span>
+ <span class="nt"></select></span>
+ <span class="nt"></td></span>
<span class="nt"></tr></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"><tr></span>
-<span class="nt"><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">></span>
-<span class="nt"></td></span>
-<span class="nt"><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">></span>
-<span class="nt"><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">/></span>
-<span class="nt"><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">/></span> <span class="nt"><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">></span>21 or older<span class="nt"></label></span>
-<span class="nt"></td></span>
+ <span class="nt"><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">></td></span>
+ <span class="nt"><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">></span>
+ <span class="nt"><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">/></span>
+ <span class="nt"><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">/></span>
+ <span class="nt"><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">></span>21 or older<span
class="nt"></label></span>
+ <span class="nt"></td></span>
<span class="nt"></tr></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"><tr></span>
-<span class="nt"><td</span> <span class="na">class=</span><span
class="s">"tdLabel"</span><span class="nt">></span>
-<span class="nt"><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">></span>Car models owned:<span
class="nt"></label></td></span>
-<span class="nt"><td></span>
-<span class="nt"><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">/></span>
-<span class="nt"><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">></span>Ford<span
class="nt"></label></span>
-<span class="nt"><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">/></span>
-<span class="nt"><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">></span>Chrysler<span
class="nt"></label></span>
-<span class="nt"><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">/></span>
-<span class="nt"><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">></span>Toyota<span
class="nt"></label></span>
-<span class="nt"><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">/></span>
-<span class="nt"><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">></span>Nissan<span
class="nt"></label></span>
-<span class="nt"><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">/></span>
-<span class="nt"></td></span>
+ <span class="nt"><td</span> <span class="na">class=</span><span
class="s">"tdLabel"</span><span class="nt">></span>
+ <span class="nt"><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">></span>Car models owned:<span class="nt"></label></span>
+ <span class="nt"></td></span>
+ <span class="nt"><td></span>
+ <span class="nt"><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">/></span>
+ <span class="nt"><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">></span>Ford<span
class="nt"></label></span>
+
+ <span class="nt"><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">/></span>
+ <span class="nt"><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">></span>Chrysler<span
class="nt"></label></span>
+
+ <span class="nt"><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">/></span>
+ <span class="nt"><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">></span>Toyota<span
class="nt"></label></span>
+
+ <span class="nt"><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">/></span>
+ <span class="nt"><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">></span>Nissan<span
class="nt"></label></span>
+ <span class="nt"><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">/></span>
+ <span class="nt"></td></span>
<span class="nt"></tr></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"><</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"><</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"><</span>%@ taglib prefix="s" uri="/struts-tags" %>
<span class="cp"><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01
Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"></span>
<span class="nt"><html></span>
- <span class="nt"><head></span>
- <span class="nt"><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">></span>
- <span class="nt"><title></span>Basic Struts 2 Application -
Welcome<span class="nt"></title></span>
- <span class="nt"></head></span>
- <span class="nt"><body></span>
- <span class="nt"><h1></span>Welcome To Struts 2!<span
class="nt"></h1></span>
- <span class="nt"><p><a</span> <span class="na">href=</span><span
class="s">"<s:url action='hello'/>"</span><span
class="nt">></span>Hello World<span class="nt"></a></p></span>
- <span class="nt"></body></span>
+ <span class="nt"><head></span>
+ <span class="nt"><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">></span>
+ <span class="nt"><title></span>Basic Struts 2 Application -
Welcome<span class="nt"></title></span>
+ <span class="nt"></head></span>
+ <span class="nt"><body></span>
+ <span class="nt"><h1></span>Welcome To Struts 2!<span
class="nt"></h1></span>
+ <span class="nt"><p><a</span> <span
class="na">href=</span><span class="s">"<s:url
action='hello'/>"</span><span class="nt">></span>Hello World<span
class="nt"></a></p></span>
+ <span class="nt"></body></span>
<span class="nt"></html></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"><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">></span>
- <span class="nt"><interceptors></span>
- <span class="nt"><interceptor-stack</span> <span
class="na">name=</span><span class="s">"appDefault"</span><span
class="nt">></span>
- <span class="nt"><interceptor-ref</span> <span
class="na">name=</span><span class="s">"defaultStack"</span><span
class="nt">></span>
- <span class="nt"><param</span> <span
class="na">name=</span><span class="s">"exception.logEnabled"</span><span
class="nt">></span>true<span class="nt"></param></span>
- <span class="nt"><param</span> <span
class="na">name=</span><span class="s">"exception.logLevel"</span><span
class="nt">></span>ERROR<span class="nt"></param></span>
- <span class="nt"><param</span> <span
class="na">name=</span><span class="s">"params.excludeParams"</span><span
class="nt">></span>dojo..*,^struts..*,^session..*,^request..*,^application..*,^servlet(Request|Response)..*,parameters...*<span
class="nt"></param></span>
- <span class="nt"></interceptor-ref></span>
- <span class="nt"></interceptor-stack></span>
- <span class="nt"></interceptors></span>
-
- <span class="nt"><default-interceptor-ref</span> <span
class="na">name=</span><span class="s">"appDefault"</span> <span
class="nt">/></span>
-...
+<div class="highlighter-rouge"><pre class="highlight"><code><span
class="nt"><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">></span>
+ <span class="nt"><interceptors></span>
+ <span class="nt"><interceptor-stack</span> <span
class="na">name=</span><span class="s">"appDefault"</span><span
class="nt">></span>
+ <span class="nt"><interceptor-ref</span> <span
class="na">name=</span><span class="s">"defaultStack"</span><span
class="nt">></span>
+ <span class="nt"><param</span> <span
class="na">name=</span><span class="s">"exception.logEnabled"</span><span
class="nt">></span>true<span class="nt"></param></span>
+ <span class="nt"><param</span> <span
class="na">name=</span><span class="s">"exception.logLevel"</span><span
class="nt">></span>ERROR<span class="nt"></param></span>
+ <span class="nt"><param</span> <span
class="na">name=</span><span class="s">"params.excludeParams"</span><span
class="nt">></span>dojo..*,^struts..*,^session..*,^request..*,^application..*,^servlet(Request|Response)..*,parameters...*<span
class="nt"></param></span>
+ <span class="nt"></interceptor-ref></span>
+ <span class="nt"></interceptor-stack></span>
+ <span class="nt"></interceptors></span>
+
+ <span class="nt"><default-interceptor-ref</span> <span
class="na">name=</span><span class="s">"appDefault"</span> <span
class="nt">/></span>
+ ...
+<span class="nt"></package></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>