Modified: websites/production/struts/content/release/2.3.x/docs/guides.html
==============================================================================
--- websites/production/struts/content/release/2.3.x/docs/guides.html (original)
+++ websites/production/struts/content/release/2.3.x/docs/guides.html Fri Nov
14 07:43:54 2014
@@ -125,29 +125,14 @@ under the License.
<div class="pagecontent">
<div class="wiki-content">
- <div id="ConfluenceContent"><p>Our in-depth guides focus on
specific areas of the framework, such as Views, the Core framework, and
Third-party Extensions.</p>
- <div class="aui-message hint shadowed information-macro">
+ <div id="ConfluenceContent"><p>Our in-depth guides focus on
specific areas of the framework, such as Views, the Core framework, and
Third-party Extensions.</p> <div class="aui-message hint shadowed
information-macro">
<span class="aui-icon icon-hint">Icon</span>
<div class="message-content">
<p>We started work on a new <a shape="rect"
href="user-guide.html">User Guide</a>, that should simplify learning process.
Please feel free to contribute!</p>
</div>
</div>
-
-
-
-
-<h2 id="Guides-CoreDevelopersGuide"><a shape="rect"
href="core-developers-guide.html">Core Developers Guide</a></h2>
-
-Struts 2 processes requests using three core types: <a shape="rect"
href="interceptor-configuration.html">interceptors</a>, <a shape="rect"
href="action-configuration.html">actions</a>, and <a shape="rect"
href="result-configuration.html">results</a>. Each may be configured via XML or
annotations.<div class="table-wrap"><table
class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1"
class="confluenceTd"><ul><li><a shape="rect"
href="tutorials.html">Tutorials</a> - Read me first!</li><li>Developing
Applications with Struts 2<ul><li><a shape="rect"
href="nutshell.html">Nutshell</a></li><li><a shape="rect"
href="ajax.html">AJAX</a></li><li><a shape="rect"
href="dependency-injection.html">Dependency Injection</a></li><li><a
shape="rect" href="profiling.html">Profiling</a></li><li><a shape="rect"
href="debugging.html">Debugging</a></li><li><a shape="rect"
href="devmode.html">Development
Mode</a></li></ul></li><li>Configuration<ul><li><a shape="rect"
href="convention-plugin.html">Co
nfiguration by Convention</a></li><li><a shape="rect"
href="annotations.html">Annotations</a></li><li><a shape="rect"
href="configuration-elements.html">Configuration Elements</a><ul><li><a
shape="rect" href="action-configuration.html">Actions</a>, <a shape="rect"
href="wildcard-mappings.html">Wildcard Mappings</a>, <a shape="rect"
href="bean-configuration.html">Beans</a>, <a shape="rect"
href="constant-configuration.html">Constants</a></li><li><a shape="rect"
href="exception-configuration.html">Exceptions</a>, <a shape="rect"
href="include-configuration.html">Includes</a>, <a shape="rect"
href="interceptor-configuration.html">Interceptors</a></li><li><a shape="rect"
href="namespace-configuration.html">Namespaces</a>, <a shape="rect"
href="package-configuration.html">Packages</a>, <a shape="rect"
href="result-configuration.html">Results</a></li><li><a shape="rect"
href="unknown-handlers.html">Unknown Handlers</a>, <a shape="rect"
href="dispatcher.html">Dispatcher</a></li></ul></li><
li><a shape="rect" href="configuration-files.html">Configuration
Files</a><ul><li><a shape="rect" href="webxml.html">web.xml</a></li><li><a
shape="rect" href="strutsxml.html">struts.xml</a></li><li><a shape="rect"
href="strutsproperties.html">struts.properties</a></li><li><a shape="rect"
href="struts-defaultxml.html">struts-default.xml</a></li><li><a shape="rect"
href="velocityproperties.html">velocity.properties</a></li><li><a shape="rect"
href="struts-defaultvm.html">struts-default.vm</a></li></ul></li><li><a
shape="rect" href="application-servers.html">Application Servers</a></li><li><a
shape="rect" href="performance-tuning.html">Performance
Tuning</a></li></ul></li><li><img class="emoticon emoticon-light-on"
src="https://cwiki.apache.org/confluence/s/en_GB-1988229788/4109/76e0dbb30bc8580e459c201f3535d84f9283a9ac.1/_/images/icons/emoticons/lightbulb_on.png"
data-emoticon-name="light-on" alt="(lightbulb)"><a shape="rect"
href="security.html">Security</a></li></ul></td><td colspan=
"1" rowspan="1" class="confluenceTd"><ul><li><a shape="rect"
href="testing-actions.html">Testing Actions</a><ul><li><a shape="rect"
class="external-link"
href="http://arsenalist.com/2007/06/18/unit-testing-struts-2-actions-spring-junit/"
rel="nofollow">(arsenalist)</a></li><li><a shape="rect" class="external-link"
href="http://fassisrosa.blogspot.com/2006/11/unit-testing-struts-20.html"
rel="nofollow">(rosa)</a></li></ul></li><li><a shape="rect"
href="interceptors.html">Interceptors</a><ul><li><a shape="rect"
href="writing-interceptors.html">Writing Interceptors</a></li><li><a
shape="rect"
href="parameters-interceptor.html#ParametersInterceptor-Excludingparameters">Excluding
Parameters</a></li></ul></li><li>Actions<ul><li><a shape="rect"
href="model-driven.html">Model Driven</a></li><li><a shape="rect"
href="action-chaining.html">Action Chaining</a></li><li><a shape="rect"
href="actioneventlistener.html">ActionEventListener</a></li></ul></li><li>Results<ul><li><a
shape="rect" href="
result-types.html">Result Types</a></li><li><a shape="rect"
href="dispatcherlistener.html">DispatcherListener</a></li><li><a shape="rect"
href="preresultlistener.html">PreResultListener</a></li></ul></li><li><a
shape="rect" href="validation.html">Validation</a></li><li><a shape="rect"
href="localization.html">Localization</a><ul><li><a shape="rect"
href="formatting-dates-and-numbers.html">Formatting Dates and
Numbers</a></li></ul></li><li><a shape="rect" href="type-conversion.html">Type
Conversion</a></li><li><a shape="rect" href="static-content.html">Static
Content</a></li><li>Portlets<ul><li><a shape="rect"
href="struts-2-portlet-tutorial.html">Tutorial</a></li><li><a shape="rect"
href="portlet-plugin.html">Configuration/Documentation</a></li></ul></li><li><a
shape="rect" href="logging.html">Logging</a></li><li><a shape="rect"
href="faqs.html">FAQs</a><ul><li><a shape="rect"
href="struts-2-maven-archetypes.html">Struts 2 Maven Archetypes</a></li><li><a
shape="rect" href="cookbook.
html">Cookbook</a></li></ul></li><li><a shape="rect" class="external-link"
href="http://struts.apache.org/2.x/struts2-core/apidocs/index.html">Javadoc
APIs</a></li></ul></td></tr></tbody></table></div>
-
-<h2 id="Guides-TagDevelopersGuide"><a shape="rect"
href="tag-developers-guide.html">Tag Developers Guide</a></h2>
-
-The framework offers a flexible view layer that supports multiple view
technologies, including JSP, FreeMaker, and Velocity.<div
class="table-wrap"><table class="confluenceTable"><tbody><tr><td colspan="1"
rowspan="1" class="confluenceTd"><ul><li><a shape="rect"
href="struts-tags.html">Struts Tags</a><ul><li><a shape="rect"
href="generic-tags.html">Generic Tags</a></li><li><a shape="rect"
href="ui-tags.html">UI Tags</a></li><li><a shape="rect"
href="themes-and-templates.html">Themes and Templates</a></li><li><a
shape="rect" href="tag-reference.html">Tag Reference</a></li><li><a
shape="rect" href="ajax-tags.html">Ajax Tags</a><ul><li><a shape="rect"
href="ajax-and-javascript-recipes.html">Ajax and JavaScript
Recipes</a></li></ul></li></ul></li><li><a shape="rect"
href="ognl.html">OGNL</a></li><li><a shape="rect" href="tag-syntax.html">Tag
Syntax</a></li><li><a shape="rect" href="alt-syntax.html">Alt
Syntax</a></li></ul></td><td colspan="1" rowspan="1"
class="confluenceTd"><ul><li><a
shape="rect" href="jsp.html">JSP</a><ul><li><a shape="rect"
href="jsp-tags.html">specific tags</a></li></ul></li><li><a shape="rect"
href="freemarker.html">FreeMarker</a><ul><li><a shape="rect"
href="freemarker-tags.html">specific tags</a></li></ul></li><li><a shape="rect"
href="velocity.html">Velocity</a><ul><li><a shape="rect"
href="velocity-tags.html">specific
tags</a></li></ul></li></ul></td></tr></tbody></table></div>
-
-<h2 id="Guides-PluginDevelopersGuide"><a shape="rect"
href="plugin-developers-guide.html">Plugin Developers Guide</a></h2>
-
-
-<p>Apache Struts 2 provides a simple <a shape="rect"
href="plugins.html">plugin architecture</a> so that developers can extend the
framework just by adding a JAR to the application's classpath. Since plugins
are contained in a JAR, they are easy to share with others. Several plugins are
bundled with the framework, and others are available from third-party sources.
</p>
+<h2 id="Guides-CoreDevelopersGuide"><a shape="rect"
href="core-developers-guide.html">Core Developers Guide</a></h2><p>Struts 2
processes requests using three core types: <a shape="rect"
href="interceptor-configuration.html">interceptors</a>, <a shape="rect"
href="action-configuration.html">actions</a>, and <a shape="rect"
href="result-configuration.html">results</a>. Each may be configured via XML or
annotations.</p><div class="table-wrap"><table
class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1"
class="confluenceTd"><ul><li><a shape="rect"
href="tutorials.html">Tutorials</a> - Read me first!</li><li>Developing
Applications with Struts 2<ul><li><a shape="rect"
href="nutshell.html">Nutshell</a></li><li><a shape="rect"
href="ajax.html">AJAX</a></li><li><a shape="rect"
href="dependency-injection.html">Dependency Injection</a></li><li><a
shape="rect" href="profiling.html">Profiling</a></li><li><a shape="rect"
href="debugging.html">Debugging</a></li><li><a shape="rect" href=
"devmode.html">Development Mode</a></li></ul></li><li>Configuration<ul><li><a
shape="rect" href="convention-plugin.html">Configuration by
Convention</a></li><li><a shape="rect"
href="annotations.html">Annotations</a></li><li><a shape="rect"
href="configuration-elements.html">Configuration Elements</a><ul><li><a
shape="rect" href="action-configuration.html">Actions</a>, <a shape="rect"
href="wildcard-mappings.html">Wildcard Mappings</a>, <a shape="rect"
href="bean-configuration.html">Beans</a>, <a shape="rect"
href="constant-configuration.html">Constants</a></li><li><a shape="rect"
href="exception-configuration.html">Exceptions</a>, <a shape="rect"
href="include-configuration.html">Includes</a>, <a shape="rect"
href="interceptor-configuration.html">Interceptors</a></li><li><a shape="rect"
href="namespace-configuration.html">Namespaces</a>, <a shape="rect"
href="package-configuration.html">Packages</a>, <a shape="rect"
href="result-configuration.html">Results</a></li><li><a shape="rec
t" href="unknown-handlers.html">Unknown Handlers</a>, <a shape="rect"
href="dispatcher.html">Dispatcher</a></li></ul></li><li><a shape="rect"
href="configuration-files.html">Configuration Files</a><ul><li><a shape="rect"
href="webxml.html">web.xml</a></li><li><a shape="rect"
href="strutsxml.html">struts.xml</a></li><li><a shape="rect"
href="strutsproperties.html">struts.properties</a></li><li><a shape="rect"
href="struts-defaultxml.html">struts-default.xml</a></li><li><a shape="rect"
href="velocityproperties.html">velocity.properties</a></li><li><a shape="rect"
href="struts-defaultvm.html">struts-default.vm</a></li></ul></li><li><a
shape="rect" href="application-servers.html">Application Servers</a></li><li><a
shape="rect" href="performance-tuning.html">Performance
Tuning</a></li></ul></li><li><img class="emoticon emoticon-light-on"
src="https://cwiki.apache.org/confluence/s/en_GB-1988229788/4109/76e0dbb30bc8580e459c201f3535d84f9283a9ac.1/_/images/icons/emoticons/lightbulb_on.png"
d
ata-emoticon-name="light-on" alt="(lightbulb)"><a shape="rect"
href="security.html">Security</a></li></ul></td><td colspan="1" rowspan="1"
class="confluenceTd"><ul><li><a shape="rect"
href="testing-actions.html">Testing Actions</a><ul><li><a shape="rect"
class="external-link"
href="http://arsenalist.com/2007/06/18/unit-testing-struts-2-actions-spring-junit/"
rel="nofollow">(arsenalist)</a></li><li><a shape="rect" class="external-link"
href="http://fassisrosa.blogspot.com/2006/11/unit-testing-struts-20.html"
rel="nofollow">(rosa)</a></li></ul></li><li><a shape="rect"
href="interceptors.html">Interceptors</a><ul><li><a shape="rect"
href="writing-interceptors.html">Writing Interceptors</a></li><li><a
shape="rect"
href="parameters-interceptor.html#ParametersInterceptor-Excludingparameters">Excluding
Parameters</a></li></ul></li><li>Actions<ul><li><a shape="rect"
href="model-driven.html">Model Driven</a></li><li><a shape="rect"
href="action-chaining.html">Action Chaining</a></li><li><a s
hape="rect"
href="actioneventlistener.html">ActionEventListener</a></li></ul></li><li>Results<ul><li><a
shape="rect" href="result-types.html">Result Types</a></li><li><a shape="rect"
href="dispatcherlistener.html">DispatcherListener</a></li><li><a shape="rect"
href="preresultlistener.html">PreResultListener</a></li></ul></li><li><a
shape="rect" href="validation.html">Validation</a></li><li><a shape="rect"
href="localization.html">Localization</a><ul><li><a shape="rect"
href="formatting-dates-and-numbers.html">Formatting Dates and
Numbers</a></li></ul></li><li><a shape="rect" href="type-conversion.html">Type
Conversion</a></li><li><a shape="rect" href="static-content.html">Static
Content</a></li><li>Portlets<ul><li><a shape="rect"
href="struts-2-portlet-tutorial.html">Tutorial</a></li><li><a shape="rect"
href="portlet-plugin.html">Configuration/Documentation</a></li></ul></li><li><a
shape="rect" href="logging.html">Logging</a></li><li><a shape="rect"
href="faqs.html">FAQs</a><ul><li>
<a shape="rect" href="struts-2-maven-archetypes.html">Struts 2 Maven
Archetypes</a></li><li><a shape="rect"
href="cookbook.html">Cookbook</a></li></ul></li><li><a shape="rect"
class="external-link"
href="http://struts.apache.org/2.x/struts2-core/apidocs/index.html">Javadoc
APIs</a></li></ul></td></tr></tbody></table></div><h2
id="Guides-TagDevelopersGuide"><a shape="rect"
href="tag-developers-guide.html">Tag Developers Guide</a></h2><p>The framework
offers a flexible view layer that supports multiple view technologies,
including JSP, FreeMaker, and Velocity.</p><div class="table-wrap"><table
class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1"
class="confluenceTd"><ul><li><a shape="rect" href="struts-tags.html">Struts
Tags</a><ul><li><a shape="rect" href="generic-tags.html">Generic
Tags</a></li><li><a shape="rect" href="ui-tags.html">UI Tags</a></li><li><a
shape="rect" href="themes-and-templates.html">Themes and
Templates</a></li><li><a shape="rect" href="tag-reference.htm
l">Tag Reference</a></li><li><a shape="rect" href="ajax-tags.html">Ajax
Tags</a><ul><li><a shape="rect" href="ajax-and-javascript-recipes.html">Ajax
and JavaScript Recipes</a></li></ul></li></ul></li><li><a shape="rect"
href="ognl.html">OGNL</a></li><li><a shape="rect" href="tag-syntax.html">Tag
Syntax</a></li><li><a shape="rect" href="alt-syntax.html">Alt
Syntax</a></li></ul></td><td colspan="1" rowspan="1"
class="confluenceTd"><ul><li><a shape="rect" href="jsp.html">JSP</a><ul><li><a
shape="rect" href="jsp-tags.html">specific tags</a></li></ul></li><li><a
shape="rect" href="freemarker.html">FreeMarker</a><ul><li><a shape="rect"
href="freemarker-tags.html">specific tags</a></li></ul></li><li><a shape="rect"
href="velocity.html">Velocity</a><ul><li><a shape="rect"
href="velocity-tags.html">specific
tags</a></li></ul></li></ul></td></tr></tbody></table></div><h2
id="Guides-PluginDevelopersGuide"><a shape="rect"
href="plugin-developers-guide.html">Plugin Developers Guide</a></h2><p>
+</p><p>Apache Struts 2 provides a simple <a shape="rect"
href="plugins.html">plugin architecture</a> so that developers can extend the
framework just by adding a JAR to the application's classpath. Since plugins
are contained in a JAR, they are easy to share with others. Several plugins are
bundled with the framework, and others are available from third-party sources.
</p>
<ul><li><a shape="rect" href="plugins.html">Plugins</a></li><li><a
shape="rect" href="extending-an-application-with-custom-plugins.html">Extending
an Application with Custom Plugins</a></li></ul>
@@ -159,22 +144,10 @@ The framework offers a flexible view lay
</td></tr></tbody></table></div>
-<p><img class="emoticon emoticon-tick"
src="https://cwiki.apache.org/confluence/s/en_GB-1988229788/4109/76e0dbb30bc8580e459c201f3535d84f9283a9ac.1/_/images/icons/emoticons/check.png"
data-emoticon-name="tick" alt="(tick)"> For a complete list of bundled and
third-party plugins, visit the <a shape="rect" class="external-link"
href="http://cwiki.apache.org/S2PLUGINS/home.html">Plugin Registry.</a>.</p>
-
-<h2 id="Guides-ArchitectsGuide"><a shape="rect"
href="architects-guide.html">Architects Guide</a></h2>
-
-
-<ul><li><a shape="rect" href="big-picture.html">Big Picture</a>
+<p><img class="emoticon emoticon-tick"
src="https://cwiki.apache.org/confluence/s/en_GB-1988229788/4109/76e0dbb30bc8580e459c201f3535d84f9283a9ac.1/_/images/icons/emoticons/check.png"
data-emoticon-name="tick" alt="(tick)"> For a complete list of bundled and
third-party plugins, visit the <a shape="rect" class="external-link"
href="http://cwiki.apache.org/S2PLUGINS/home.html">Plugin Registry.</a>.</p><h2
id="Guides-ArchitectsGuide"><a shape="rect"
href="architects-guide.html">Architects Guide</a></h2><p>
+</p><ul><li><a shape="rect" href="big-picture.html">Big Picture</a>
<ul><li><a shape="rect"
href="objectfactory.html">ObjectFactory</a></li><li><a shape="rect"
href="actionmapper.html">ActionMapper</a></li><li><a shape="rect"
href="action-proxy-actionproxy-factory.html">Action Proxy & ActionProxy
Factory</a></li><li><a shape="rect"
href="configuration-provider-configuration.html">Configuration Provider &
Configuration</a></li></ul>
- </li></ul>
-
-<h2 id="Guides-MigrationGuide"><a shape="rect"
href="migration-guide.html">Migration Guide</a></h2>
-
-Getting here from there.<h3 id="Guides-VersionNotes2.3.x">Version Notes
2.3.x</h3><ul><li><p><a shape="rect" href="version-notes-2318.html">Version
Notes 2.3.18</a> <img class="emoticon emoticon-warning"
src="https://cwiki.apache.org/confluence/s/en_GB-1988229788/4109/76e0dbb30bc8580e459c201f3535d84f9283a9ac.1/_/images/icons/emoticons/warning.png"
data-emoticon-name="warning" alt="(warning)"> This version is not yet
released!</p></li><li><a shape="rect" href="version-notes-23163.html">Version
Notes 2.3.16.3</a></li><li><a shape="rect"
href="version-notes-23162.html">Version Notes 2.3.16.2</a></li><li><a
shape="rect" href="version-notes-2316.html">Version Notes
2.3.16.1</a></li><li><a shape="rect" href="version-notes-2316.html">Version
Notes 2.3.16</a></li><li><a shape="rect"
href="version-notes-23153.html">Version Notes 2.3.15.3</a></li><li><a
shape="rect" href="version-notes-23152.html">Version Notes
2.3.15.2</a></li><li><a shape="rect" href="version-notes-23151.html">Version
Notes
2.3.15.1</a></li><li><a shape="rect" href="version-notes-2315.html">Version
Notes 2.3.15</a></li><li><a shape="rect"
href="version-notes-23143.html">Version Notes 2.3.14.3</a></li><li><a
shape="rect" href="version-notes-23142.html">Version Notes
2.3.14.2</a></li><li><a shape="rect" href="version-notes-23141.html">Version
Notes 2.3.14.1</a></li><li><a shape="rect"
href="version-notes-2314.html">Version Notes 2.3.14</a></li><li><a shape="rect"
href="version-notes-23120.html">Version Notes 2.3.12.0</a></li><li><a
shape="rect" href="version-notes-238.html">Version Notes 2.3.8</a></li><li><a
shape="rect" href="version-notes-237.html">Version Notes 2.3.7</a></li><li><a
shape="rect" href="version-notes-2341.html">Version Notes
2.3.4.1</a></li><li><a shape="rect" href="version-notes-234.html">Version Notes
2.3.4</a></li><li><a shape="rect" href="version-notes-233.html">Version Notes
2.3.3</a></li><li><a shape="rect" href="version-notes-2312.html">Version Notes
2.3.1.2</a></li><li><a shape=
"rect" href="version-notes-2311.html">Version Notes 2.3.1.1</a></li><li><a
shape="rect" href="version-notes-231.html">Version Notes 2.3.1</a></li></ul><h3
id="Guides-VersionNotes2.2.x">Version Notes 2.2.x</h3><ul><li><a shape="rect"
href="version-notes-2231.html">Version Notes 2.2.3.1</a></li><li><a
shape="rect" href="version-notes-223.html">Version Notes 2.2.3</a></li><li><a
shape="rect" href="version-notes-2211.html">Version Notes
2.2.1.1</a></li><li><a shape="rect" href="version-notes-221.html">Version Notes
2.2.1</a></li></ul><h3 id="Guides-VersionNotes2.1.x">Version Notes
2.1.x</h3><ul><li><a shape="rect" href="version-notes-2181.html">Version Notes
2.1.8.1</a></li><li><a shape="rect" href="version-notes-218.html">Version Notes
2.1.8</a></li><li><a shape="rect" href="version-notes-216.html">Version Notes
2.1.6</a></li><li><a shape="rect" href="version-notes-215.html">Version Notes
2.1.5</a></li><li><a shape="rect" href="version-notes-214.html">Version Notes
2.1.4</a></li><li><a
shape="rect" href="version-notes-213.html">Version Notes 2.1.3</a></li><li><a
shape="rect" href="version-notes-212.html">Version Notes 2.1.2</a></li><li><a
shape="rect" href="version-notes-211.html">Version Notes 2.1.1</a></li><li><a
shape="rect" href="version-notes-210.html">Version Notes 2.1.0</a></li></ul><h3
id="Guides-ReleaseNotes2.0.x">Release Notes 2.0.x</h3><ul><li><a shape="rect"
href="release-notes-2014.html">Release Notes 2.0.14</a></li><li><a shape="rect"
href="release-notes-2013.html">Release Notes 2.0.13</a></li><li><a shape="rect"
href="release-notes-2012.html">Release Notes 2.0.12</a></li><li><a shape="rect"
href="release-notes-20112.html">Release Notes 2.0.11.2</a></li><li><a
shape="rect" href="release-notes-20111.html">Release Notes
2.0.11.1</a></li><li><a shape="rect" href="release-notes-2011.html">Release
Notes 2.0.11</a></li><li><a shape="rect" href="release-notes-2010.html">Release
Notes 2.0.10</a></li><li><a shape="rect" href="release-notes-209.html">Release
Notes 2.0.9</a></li><li><a shape="rect" href="release-notes-208.html">Release
Notes 2.0.8</a></li><li><a shape="rect" href="release-notes-207.html">Release
Notes 2.0.7</a></li><li><a shape="rect" href="release-notes-206.html">Release
Notes 2.0.6</a></li><li><a shape="rect" href="release-notes-205.html">Release
Notes 2.0.5</a></li><li><a shape="rect" href="release-notes-204.html">Release
Notes 2.0.4</a></li><li><a shape="rect" href="release-notes-203.html">Release
Notes 2.0.3</a></li><li><a shape="rect" href="release-notes-202.html">Release
Notes 2.0.2</a></li><li><a shape="rect" href="release-notes-201.html">Release
Notes 2.0.1</a></li><li><a shape="rect" href="release-notes-200.html">Release
Notes 2.0.0</a></li></ul><h3 id="Guides-Struts1toStruts2">Struts 1 to Struts
2</h3><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th
colspan="1" rowspan="1" class="confluenceTh"><p><a shape="rect"
href="comparing-struts-1-and-2.html">Comparing Struts 1 and 2</a></p></th><td
colspan="1" rowspan="1" class="confluenceTd"><p>How are Struts 1 and Struts 2
alike? How are they different?</p></td></tr><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p><a shape="rect" href="struts-1-solutions.html">Struts 1
Solutions</a></p></th><td colspan="1" rowspan="1"
class="confluenceTd"><p>Various issues (and hopefully their solutions!)
encountered during migrations to Struts 2.</p></td></tr><tr><th colspan="1"
rowspan="1" class="confluenceTh"><p><a shape="rect"
href="migration-strategies.html">Migration Strategies</a></p></th><td
colspan="1" rowspan="1" class="confluenceTd"><p>Steps and overall strategies
for migrating Struts 1 applications to Struts 2.</p></td></tr><tr><th
colspan="1" rowspan="1" class="confluenceTh"><p><a shape="rect"
href="migration-tools.html">Migration Tools</a></p></th><td colspan="1"
rowspan="1" class="confluenceTd"><p>Development tools to help aid the migration
process.</p></td></tr></tbody></table></div><h4 id="Guides-Tutorials">Tutorials<
/h4><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th
colspan="1" rowspan="1" class="confluenceTh"><p><a shape="rect"
class="external-link" href="http://www.infoq.com/news/migrating-struts2"
rel="nofollow">Migrating Applications to Struts 2 </a></p></th><td colspan="1"
rowspan="1" class="confluenceTd"><p>A three-part series by Ian Roughley (Sep
2006)</p></td></tr></tbody></table></div><h4
id="Guides-Roadmap">Roadmap</h4><div class="table-wrap"><table
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p><a shape="rect" class="external-link"
href="http://struts.apache.org/roadmap.html#new">Roadmap FAQ</a></p></th><td
colspan="1" rowspan="1" class="confluenceTd"><p>What's in store for Struts
2?</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p><a
shape="rect" class="external-link"
href="http://www.oreillynet.com/onjava/blog/2006/10/my_history_of_struts_2.html"
rel="nofollow">A History of Struts 2</a></p></th><td c
olspan="1" rowspan="1" class="confluenceTd"><p>Don Brown's summary of
events</p></td></tr></tbody></table></div><h3
id="Guides-Webwork2.2toStruts2">Webwork 2.2 to Struts 2</h3><div
class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1"
rowspan="1" class="confluenceTh"><p><a shape="rect"
href="key-changes-from-webwork-2.html">Key Changes From WebWork
2</a></p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>What has been
removed or changed from WebWork 2.2 to Struts 2</p></td></tr><tr><th
colspan="1" rowspan="1" class="confluenceTh"><p><a shape="rect"
href="webwork-2-migration-strategies.html">WebWork 2 Migration
Strategies</a></p></th><td colspan="1" rowspan="1"
class="confluenceTd"><p>Steps and overall strategies for migrating WebWork 2
applications to Struts 2.</p></td></tr></tbody></table></div>
-
-<h2 id="Guides-ContributorsGuide"><a shape="rect"
href="contributors-guide.html">Contributors Guide</a></h2>
-
-<p>
+ </li></ul><h2 id="Guides-MigrationGuide"><a shape="rect"
href="migration-guide.html">Migration Guide</a></h2><p>Getting here from
there.</p><h3 id="Guides-VersionNotes2.3.x">Version Notes
2.3.x</h3><ul><li><p><a shape="rect" href="version-notes-2318.html">Version
Notes 2.3.18</a></p></li><li><p><a shape="rect"
href="version-notes-23163.html">Version Notes 2.3.16.3</a></p></li><li><a
shape="rect" href="version-notes-23162.html">Version Notes
2.3.16.2</a></li><li><a shape="rect" href="version-notes-2316.html">Version
Notes 2.3.16.1</a></li><li><a shape="rect"
href="version-notes-2316.html">Version Notes 2.3.16</a></li><li><a shape="rect"
href="version-notes-23153.html">Version Notes 2.3.15.3</a></li><li><a
shape="rect" href="version-notes-23152.html">Version Notes
2.3.15.2</a></li><li><a shape="rect" href="version-notes-23151.html">Version
Notes 2.3.15.1</a></li><li><a shape="rect"
href="version-notes-2315.html">Version Notes 2.3.15</a></li><li><a shape="rect"
href="version-notes-231
43.html">Version Notes 2.3.14.3</a></li><li><a shape="rect"
href="version-notes-23142.html">Version Notes 2.3.14.2</a></li><li><a
shape="rect" href="version-notes-23141.html">Version Notes
2.3.14.1</a></li><li><a shape="rect" href="version-notes-2314.html">Version
Notes 2.3.14</a></li><li><a shape="rect"
href="version-notes-23120.html">Version Notes 2.3.12.0</a></li><li><a
shape="rect" href="version-notes-238.html">Version Notes 2.3.8</a></li><li><a
shape="rect" href="version-notes-237.html">Version Notes 2.3.7</a></li><li><a
shape="rect" href="version-notes-2341.html">Version Notes
2.3.4.1</a></li><li><a shape="rect" href="version-notes-234.html">Version Notes
2.3.4</a></li><li><a shape="rect" href="version-notes-233.html">Version Notes
2.3.3</a></li><li><a shape="rect" href="version-notes-2312.html">Version Notes
2.3.1.2</a></li><li><a shape="rect" href="version-notes-2311.html">Version
Notes 2.3.1.1</a></li><li><a shape="rect" href="version-notes-231.html">Version
Notes 2.3.1</a>
</li></ul><h3 id="Guides-VersionNotes2.2.x">Version Notes 2.2.x</h3><ul><li><a
shape="rect" href="version-notes-2231.html">Version Notes
2.2.3.1</a></li><li><a shape="rect" href="version-notes-223.html">Version Notes
2.2.3</a></li><li><a shape="rect" href="version-notes-2211.html">Version Notes
2.2.1.1</a></li><li><a shape="rect" href="version-notes-221.html">Version Notes
2.2.1</a></li></ul><h3 id="Guides-VersionNotes2.1.x">Version Notes
2.1.x</h3><ul><li><a shape="rect" href="version-notes-2181.html">Version Notes
2.1.8.1</a></li><li><a shape="rect" href="version-notes-218.html">Version Notes
2.1.8</a></li><li><a shape="rect" href="version-notes-216.html">Version Notes
2.1.6</a></li><li><a shape="rect" href="version-notes-215.html">Version Notes
2.1.5</a></li><li><a shape="rect" href="version-notes-214.html">Version Notes
2.1.4</a></li><li><a shape="rect" href="version-notes-213.html">Version Notes
2.1.3</a></li><li><a shape="rect" href="version-notes-212.html">Version Notes
2.1.2
</a></li><li><a shape="rect" href="version-notes-211.html">Version Notes
2.1.1</a></li><li><a shape="rect" href="version-notes-210.html">Version Notes
2.1.0</a></li></ul><h3 id="Guides-ReleaseNotes2.0.x">Release Notes
2.0.x</h3><ul><li><a shape="rect" href="release-notes-2014.html">Release Notes
2.0.14</a></li><li><a shape="rect" href="release-notes-2013.html">Release Notes
2.0.13</a></li><li><a shape="rect" href="release-notes-2012.html">Release Notes
2.0.12</a></li><li><a shape="rect" href="release-notes-20112.html">Release
Notes 2.0.11.2</a></li><li><a shape="rect"
href="release-notes-20111.html">Release Notes 2.0.11.1</a></li><li><a
shape="rect" href="release-notes-2011.html">Release Notes 2.0.11</a></li><li><a
shape="rect" href="release-notes-2010.html">Release Notes 2.0.10</a></li><li><a
shape="rect" href="release-notes-209.html">Release Notes 2.0.9</a></li><li><a
shape="rect" href="release-notes-208.html">Release Notes 2.0.8</a></li><li><a
shape="rect" href="release-notes-207
.html">Release Notes 2.0.7</a></li><li><a shape="rect"
href="release-notes-206.html">Release Notes 2.0.6</a></li><li><a shape="rect"
href="release-notes-205.html">Release Notes 2.0.5</a></li><li><a shape="rect"
href="release-notes-204.html">Release Notes 2.0.4</a></li><li><a shape="rect"
href="release-notes-203.html">Release Notes 2.0.3</a></li><li><a shape="rect"
href="release-notes-202.html">Release Notes 2.0.2</a></li><li><a shape="rect"
href="release-notes-201.html">Release Notes 2.0.1</a></li><li><a shape="rect"
href="release-notes-200.html">Release Notes 2.0.0</a></li></ul><h3
id="Guides-Struts1toStruts2">Struts 1 to Struts 2</h3><div
class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1"
rowspan="1" class="confluenceTh"><p><a shape="rect"
href="comparing-struts-1-and-2.html">Comparing Struts 1 and 2</a></p></th><td
colspan="1" rowspan="1" class="confluenceTd"><p>How are Struts 1 and Struts 2
alike? How are they different?</p></td></tr><tr><th colspan="1"
rowspan="1" class="confluenceTh"><p><a shape="rect"
href="struts-1-solutions.html">Struts 1 Solutions</a></p></th><td colspan="1"
rowspan="1" class="confluenceTd"><p>Various issues (and hopefully their
solutions!) encountered during migrations to Struts 2.</p></td></tr><tr><th
colspan="1" rowspan="1" class="confluenceTh"><p><a shape="rect"
href="migration-strategies.html">Migration Strategies</a></p></th><td
colspan="1" rowspan="1" class="confluenceTd"><p>Steps and overall strategies
for migrating Struts 1 applications to Struts 2.</p></td></tr><tr><th
colspan="1" rowspan="1" class="confluenceTh"><p><a shape="rect"
href="migration-tools.html">Migration Tools</a></p></th><td colspan="1"
rowspan="1" class="confluenceTd"><p>Development tools to help aid the migration
process.</p></td></tr></tbody></table></div><h4
id="Guides-Tutorials">Tutorials</h4><div class="table-wrap"><table
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p><a shape="rect" cla
ss="external-link" href="http://www.infoq.com/news/migrating-struts2"
rel="nofollow">Migrating Applications to Struts 2 </a></p></th><td colspan="1"
rowspan="1" class="confluenceTd"><p>A three-part series by Ian Roughley (Sep
2006)</p></td></tr></tbody></table></div><h4
id="Guides-Roadmap">Roadmap</h4><div class="table-wrap"><table
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p><a shape="rect" class="external-link"
href="http://struts.apache.org/roadmap.html#new">Roadmap FAQ</a></p></th><td
colspan="1" rowspan="1" class="confluenceTd"><p>What's in store for Struts
2?</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p><a
shape="rect" class="external-link"
href="http://www.oreillynet.com/onjava/blog/2006/10/my_history_of_struts_2.html"
rel="nofollow">A History of Struts 2</a></p></th><td colspan="1" rowspan="1"
class="confluenceTd"><p>Don Brown's summary of
events</p></td></tr></tbody></table></div><h3 id="Guides-Webwork2.2toSt
ruts2">Webwork 2.2 to Struts 2</h3><div class="table-wrap"><table
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p><a shape="rect"
href="key-changes-from-webwork-2.html">Key Changes From WebWork
2</a></p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>What has been
removed or changed from WebWork 2.2 to Struts 2</p></td></tr><tr><th
colspan="1" rowspan="1" class="confluenceTh"><p><a shape="rect"
href="webwork-2-migration-strategies.html">WebWork 2 Migration
Strategies</a></p></th><td colspan="1" rowspan="1"
class="confluenceTd"><p>Steps and overall strategies for migrating WebWork 2
applications to Struts 2.</p></td></tr></tbody></table></div><h2
id="Guides-ContributorsGuide"><a shape="rect"
href="contributors-guide.html">Contributors Guide</a></h2><p>
</p><h3 id="Guides-Source">Source</h3>
@@ -195,17 +168,12 @@ Getting here from there.<h3 id="Guides-V
<h3 id="Guides-LicensingandCopyright">Licensing and Copyright</h3>
-<ul><li><a shape="rect" class="external-link"
href="http://people.apache.org/~cliffs/3party.html">Third Party Licensing
Policy RFC</a></li><li><a shape="rect" class="external-link"
href="http://www.apache.org/legal/src-headers.html">ASF Source Header and
Copyright Notice Policy</a></li><li><a shape="rect" class="external-link"
href="http://tinyurl.com/mw7t6" rel="nofollow">Author Tags</a></li></ul>
-<h2 id="Guides-Errata?">Errata?</h2>
-
- <div class="aui-message success shadowed information-macro">
+<ul><li><a shape="rect" class="external-link"
href="http://people.apache.org/~cliffs/3party.html">Third Party Licensing
Policy RFC</a></li><li><a shape="rect" class="external-link"
href="http://www.apache.org/legal/src-headers.html">ASF Source Header and
Copyright Notice Policy</a></li><li><a shape="rect" class="external-link"
href="http://tinyurl.com/mw7t6" rel="nofollow">Author Tags</a></li></ul><h2
id="Guides-Errata?">Errata?</h2> <div class="aui-message success shadowed
information-macro">
<span class="aui-icon icon-success">Icon</span>
<div class="message-content">
<p>To suggest a change or a correction to any part
of the documentation, log in and leave a comment on the appropriate page. We
are always looking for <a shape="rect" class="external-link"
href="http://struts.apache.org/2.x/docs/contributors-guide.html">help with the
documentation!</a></p>
</div>
</div>
-
-
<h2 id="Guides-Next:">Next: <a shape="rect"
href="faqs.html">FAQs</a></h2></div>
</div>
Modified:
websites/production/struts/content/release/2.3.x/docs/interceptors.html
==============================================================================
--- websites/production/struts/content/release/2.3.x/docs/interceptors.html
(original)
+++ websites/production/struts/content/release/2.3.x/docs/interceptors.html Fri
Nov 14 07:43:54 2014
@@ -145,11 +145,11 @@ under the License.
</div>
</div>
<p>Many Actions share common concerns. Some Actions need input validated.
Other Actions may need a file upload to be pre-processed. Another Action might
need protection from a double submit. Many Actions need drop-down lists and
other controls pre-populated before the page displays.</p><p>The framework
makes it easy to share solutions to these concerns using an "Interceptor"
strategy. When you request a resource that maps to an "action", the framework
invokes the Action object. But, before the Action is executed, the invocation
can be intercepted by another object. After the Action executes, the invocation
could be intercepted again. Unsurprisingly, we call these objects
"Interceptors."</p><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1405758310004 {padding: 0px;}
-div.rbtoc1405758310004 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1405758310004 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1411292100725 {padding: 0px;}
+div.rbtoc1411292100725 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1411292100725 li {margin-left: 0px;padding-left: 0px;}
-/*]]>*/</style></p><div class="toc-macro rbtoc1405758310004">
+/*]]>*/</style></p><div class="toc-macro rbtoc1411292100725">
<ul class="toc-indentation"><li><a shape="rect"
href="#Interceptors-UnderstandingInterceptors">Understanding
Interceptors</a></li><li><a shape="rect"
href="#Interceptors-ConfiguringInterceptors">Configuring
Interceptors</a></li><li><a shape="rect"
href="#Interceptors-StackingInterceptors">Stacking Interceptors</a>
<ul class="toc-indentation"><li><a shape="rect"
href="#Interceptors-TheDefaultConfiguration">The Default
Configuration</a></li></ul>
</li><li><a shape="rect" href="#Interceptors-FrameworkInterceptors">Framework
Interceptors</a>
Modified:
websites/production/struts/content/release/2.3.x/docs/migration-guide.html
==============================================================================
--- websites/production/struts/content/release/2.3.x/docs/migration-guide.html
(original)
+++ websites/production/struts/content/release/2.3.x/docs/migration-guide.html
Fri Nov 14 07:43:54 2014
@@ -125,7 +125,7 @@ under the License.
<div class="pagecontent">
<div class="wiki-content">
- <div id="ConfluenceContent"><p>Getting here from there.</p><h3
id="MigrationGuide-VersionNotes2.3.x">Version Notes 2.3.x</h3><ul><li><p><a
shape="rect" href="version-notes-2318.html">Version Notes 2.3.18</a> <img
class="emoticon emoticon-warning"
src="https://cwiki.apache.org/confluence/s/en_GB-1988229788/4109/76e0dbb30bc8580e459c201f3535d84f9283a9ac.1/_/images/icons/emoticons/warning.png"
data-emoticon-name="warning" alt="(warning)"> This version is not yet
released!</p></li><li><a shape="rect" href="version-notes-23163.html">Version
Notes 2.3.16.3</a></li><li><a shape="rect"
href="version-notes-23162.html">Version Notes 2.3.16.2</a></li><li><a
shape="rect" href="version-notes-2316.html">Version Notes
2.3.16.1</a></li><li><a shape="rect" href="version-notes-2316.html">Version
Notes 2.3.16</a></li><li><a shape="rect"
href="version-notes-23153.html">Version Notes 2.3.15.3</a></li><li><a
shape="rect" href="version-notes-23152.html">Version Notes
2.3.15.2</a></li><li><a sha
pe="rect" href="version-notes-23151.html">Version Notes
2.3.15.1</a></li><li><a shape="rect" href="version-notes-2315.html">Version
Notes 2.3.15</a></li><li><a shape="rect"
href="version-notes-23143.html">Version Notes 2.3.14.3</a></li><li><a
shape="rect" href="version-notes-23142.html">Version Notes
2.3.14.2</a></li><li><a shape="rect" href="version-notes-23141.html">Version
Notes 2.3.14.1</a></li><li><a shape="rect"
href="version-notes-2314.html">Version Notes 2.3.14</a></li><li><a shape="rect"
href="version-notes-23120.html">Version Notes 2.3.12.0</a></li><li><a
shape="rect" href="version-notes-238.html">Version Notes 2.3.8</a></li><li><a
shape="rect" href="version-notes-237.html">Version Notes 2.3.7</a></li><li><a
shape="rect" href="version-notes-2341.html">Version Notes
2.3.4.1</a></li><li><a shape="rect" href="version-notes-234.html">Version Notes
2.3.4</a></li><li><a shape="rect" href="version-notes-233.html">Version Notes
2.3.3</a></li><li><a shape="rect" href="version-notes
-2312.html">Version Notes 2.3.1.2</a></li><li><a shape="rect"
href="version-notes-2311.html">Version Notes 2.3.1.1</a></li><li><a
shape="rect" href="version-notes-231.html">Version Notes 2.3.1</a></li></ul><h3
id="MigrationGuide-VersionNotes2.2.x">Version Notes 2.2.x</h3><ul><li><a
shape="rect" href="version-notes-2231.html">Version Notes
2.2.3.1</a></li><li><a shape="rect" href="version-notes-223.html">Version Notes
2.2.3</a></li><li><a shape="rect" href="version-notes-2211.html">Version Notes
2.2.1.1</a></li><li><a shape="rect" href="version-notes-221.html">Version Notes
2.2.1</a></li></ul><h3 id="MigrationGuide-VersionNotes2.1.x">Version Notes
2.1.x</h3><ul><li><a shape="rect" href="version-notes-2181.html">Version Notes
2.1.8.1</a></li><li><a shape="rect" href="version-notes-218.html">Version Notes
2.1.8</a></li><li><a shape="rect" href="version-notes-216.html">Version Notes
2.1.6</a></li><li><a shape="rect" href="version-notes-215.html">Version Notes
2.1.5</a></li><li><a shape=
"rect" href="version-notes-214.html">Version Notes 2.1.4</a></li><li><a
shape="rect" href="version-notes-213.html">Version Notes 2.1.3</a></li><li><a
shape="rect" href="version-notes-212.html">Version Notes 2.1.2</a></li><li><a
shape="rect" href="version-notes-211.html">Version Notes 2.1.1</a></li><li><a
shape="rect" href="version-notes-210.html">Version Notes 2.1.0</a></li></ul><h3
id="MigrationGuide-ReleaseNotes2.0.x">Release Notes 2.0.x</h3><ul><li><a
shape="rect" href="release-notes-2014.html">Release Notes 2.0.14</a></li><li><a
shape="rect" href="release-notes-2013.html">Release Notes 2.0.13</a></li><li><a
shape="rect" href="release-notes-2012.html">Release Notes 2.0.12</a></li><li><a
shape="rect" href="release-notes-20112.html">Release Notes
2.0.11.2</a></li><li><a shape="rect" href="release-notes-20111.html">Release
Notes 2.0.11.1</a></li><li><a shape="rect"
href="release-notes-2011.html">Release Notes 2.0.11</a></li><li><a shape="rect"
href="release-notes-2010.html">Release
Notes 2.0.10</a></li><li><a shape="rect" href="release-notes-209.html">Release
Notes 2.0.9</a></li><li><a shape="rect" href="release-notes-208.html">Release
Notes 2.0.8</a></li><li><a shape="rect" href="release-notes-207.html">Release
Notes 2.0.7</a></li><li><a shape="rect" href="release-notes-206.html">Release
Notes 2.0.6</a></li><li><a shape="rect" href="release-notes-205.html">Release
Notes 2.0.5</a></li><li><a shape="rect" href="release-notes-204.html">Release
Notes 2.0.4</a></li><li><a shape="rect" href="release-notes-203.html">Release
Notes 2.0.3</a></li><li><a shape="rect" href="release-notes-202.html">Release
Notes 2.0.2</a></li><li><a shape="rect" href="release-notes-201.html">Release
Notes 2.0.1</a></li><li><a shape="rect" href="release-notes-200.html">Release
Notes 2.0.0</a></li></ul><h3 id="MigrationGuide-Struts1toStruts2">Struts 1 to
Struts 2</h3><div class="table-wrap"><table
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p><a shap
e="rect" href="comparing-struts-1-and-2.html">Comparing Struts 1 and
2</a></p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>How are
Struts 1 and Struts 2 alike? How are they different?</p></td></tr><tr><th
colspan="1" rowspan="1" class="confluenceTh"><p><a shape="rect"
href="struts-1-solutions.html">Struts 1 Solutions</a></p></th><td colspan="1"
rowspan="1" class="confluenceTd"><p>Various issues (and hopefully their
solutions!) encountered during migrations to Struts 2.</p></td></tr><tr><th
colspan="1" rowspan="1" class="confluenceTh"><p><a shape="rect"
href="migration-strategies.html">Migration Strategies</a></p></th><td
colspan="1" rowspan="1" class="confluenceTd"><p>Steps and overall strategies
for migrating Struts 1 applications to Struts 2.</p></td></tr><tr><th
colspan="1" rowspan="1" class="confluenceTh"><p><a shape="rect"
href="migration-tools.html">Migration Tools</a></p></th><td colspan="1"
rowspan="1" class="confluenceTd"><p>Development tools to help aid the mig
ration process.</p></td></tr></tbody></table></div><h4
id="MigrationGuide-Tutorials">Tutorials</h4><div class="table-wrap"><table
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p><a shape="rect" class="external-link"
href="http://www.infoq.com/news/migrating-struts2" rel="nofollow">Migrating
Applications to Struts 2 </a></p></th><td colspan="1" rowspan="1"
class="confluenceTd"><p>A three-part series by Ian Roughley (Sep
2006)</p></td></tr></tbody></table></div><h4
id="MigrationGuide-Roadmap">Roadmap</h4><div class="table-wrap"><table
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p><a shape="rect" class="external-link"
href="http://struts.apache.org/roadmap.html#new">Roadmap FAQ</a></p></th><td
colspan="1" rowspan="1" class="confluenceTd"><p>What's in store for Struts
2?</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p><a
shape="rect" class="external-link" href="http://www.oreillynet.com/
onjava/blog/2006/10/my_history_of_struts_2.html" rel="nofollow">A History of
Struts 2</a></p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>Don
Brown's summary of events</p></td></tr></tbody></table></div><h3
id="MigrationGuide-Webwork2.2toStruts2">Webwork 2.2 to Struts 2</h3><div
class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1"
rowspan="1" class="confluenceTh"><p><a shape="rect"
href="key-changes-from-webwork-2.html">Key Changes From WebWork
2</a></p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>What has been
removed or changed from WebWork 2.2 to Struts 2</p></td></tr><tr><th
colspan="1" rowspan="1" class="confluenceTh"><p><a shape="rect"
href="webwork-2-migration-strategies.html">WebWork 2 Migration
Strategies</a></p></th><td colspan="1" rowspan="1"
class="confluenceTd"><p>Steps and overall strategies for migrating WebWork 2
applications to Struts 2.</p></td></tr></tbody></table></div><h2
id="MigrationGuide-FAQs">FAQs</h2><ul><li><
a shape="rect"
href="where-do-we-get-the-latest-version-the-framework.html">Where do we get
the latest version the framework</a>?</li><li><a shape="rect"
href="what-are-some-of-the-frameworks-best-features.html">What are some of the
framework's best features</a>?</li><li><a shape="rect"
href="what-is-the-actioncontext.html">What is the
ActionContext?</a></li></ul><h2 id="MigrationGuide-Next:">Next: <a shape="rect"
href="contributors-guide.html">Contributors Guide</a></h2></div>
+ <div id="ConfluenceContent"><p>Getting here from there.</p><h3
id="MigrationGuide-VersionNotes2.3.x">Version Notes 2.3.x</h3><ul><li><p><a
shape="rect" href="version-notes-2318.html">Version Notes
2.3.18</a></p></li><li><p><a shape="rect"
href="version-notes-23163.html">Version Notes 2.3.16.3</a></p></li><li><a
shape="rect" href="version-notes-23162.html">Version Notes
2.3.16.2</a></li><li><a shape="rect" href="version-notes-2316.html">Version
Notes 2.3.16.1</a></li><li><a shape="rect"
href="version-notes-2316.html">Version Notes 2.3.16</a></li><li><a shape="rect"
href="version-notes-23153.html">Version Notes 2.3.15.3</a></li><li><a
shape="rect" href="version-notes-23152.html">Version Notes
2.3.15.2</a></li><li><a shape="rect" href="version-notes-23151.html">Version
Notes 2.3.15.1</a></li><li><a shape="rect"
href="version-notes-2315.html">Version Notes 2.3.15</a></li><li><a shape="rect"
href="version-notes-23143.html">Version Notes 2.3.14.3</a></li><li><a
shape="rect" hr
ef="version-notes-23142.html">Version Notes 2.3.14.2</a></li><li><a
shape="rect" href="version-notes-23141.html">Version Notes
2.3.14.1</a></li><li><a shape="rect" href="version-notes-2314.html">Version
Notes 2.3.14</a></li><li><a shape="rect"
href="version-notes-23120.html">Version Notes 2.3.12.0</a></li><li><a
shape="rect" href="version-notes-238.html">Version Notes 2.3.8</a></li><li><a
shape="rect" href="version-notes-237.html">Version Notes 2.3.7</a></li><li><a
shape="rect" href="version-notes-2341.html">Version Notes
2.3.4.1</a></li><li><a shape="rect" href="version-notes-234.html">Version Notes
2.3.4</a></li><li><a shape="rect" href="version-notes-233.html">Version Notes
2.3.3</a></li><li><a shape="rect" href="version-notes-2312.html">Version Notes
2.3.1.2</a></li><li><a shape="rect" href="version-notes-2311.html">Version
Notes 2.3.1.1</a></li><li><a shape="rect" href="version-notes-231.html">Version
Notes 2.3.1</a></li></ul><h3 id="MigrationGuide-VersionNotes2.2.x">Version No
tes 2.2.x</h3><ul><li><a shape="rect" href="version-notes-2231.html">Version
Notes 2.2.3.1</a></li><li><a shape="rect" href="version-notes-223.html">Version
Notes 2.2.3</a></li><li><a shape="rect" href="version-notes-2211.html">Version
Notes 2.2.1.1</a></li><li><a shape="rect" href="version-notes-221.html">Version
Notes 2.2.1</a></li></ul><h3 id="MigrationGuide-VersionNotes2.1.x">Version
Notes 2.1.x</h3><ul><li><a shape="rect" href="version-notes-2181.html">Version
Notes 2.1.8.1</a></li><li><a shape="rect" href="version-notes-218.html">Version
Notes 2.1.8</a></li><li><a shape="rect" href="version-notes-216.html">Version
Notes 2.1.6</a></li><li><a shape="rect" href="version-notes-215.html">Version
Notes 2.1.5</a></li><li><a shape="rect" href="version-notes-214.html">Version
Notes 2.1.4</a></li><li><a shape="rect" href="version-notes-213.html">Version
Notes 2.1.3</a></li><li><a shape="rect" href="version-notes-212.html">Version
Notes 2.1.2</a></li><li><a shape="rect" href="version-not
es-211.html">Version Notes 2.1.1</a></li><li><a shape="rect"
href="version-notes-210.html">Version Notes 2.1.0</a></li></ul><h3
id="MigrationGuide-ReleaseNotes2.0.x">Release Notes 2.0.x</h3><ul><li><a
shape="rect" href="release-notes-2014.html">Release Notes 2.0.14</a></li><li><a
shape="rect" href="release-notes-2013.html">Release Notes 2.0.13</a></li><li><a
shape="rect" href="release-notes-2012.html">Release Notes 2.0.12</a></li><li><a
shape="rect" href="release-notes-20112.html">Release Notes
2.0.11.2</a></li><li><a shape="rect" href="release-notes-20111.html">Release
Notes 2.0.11.1</a></li><li><a shape="rect"
href="release-notes-2011.html">Release Notes 2.0.11</a></li><li><a shape="rect"
href="release-notes-2010.html">Release Notes 2.0.10</a></li><li><a shape="rect"
href="release-notes-209.html">Release Notes 2.0.9</a></li><li><a shape="rect"
href="release-notes-208.html">Release Notes 2.0.8</a></li><li><a shape="rect"
href="release-notes-207.html">Release Notes 2.0.7</a></li><li
><a shape="rect" href="release-notes-206.html">Release Notes
>2.0.6</a></li><li><a shape="rect" href="release-notes-205.html">Release Notes
>2.0.5</a></li><li><a shape="rect" href="release-notes-204.html">Release Notes
>2.0.4</a></li><li><a shape="rect" href="release-notes-203.html">Release Notes
>2.0.3</a></li><li><a shape="rect" href="release-notes-202.html">Release Notes
>2.0.2</a></li><li><a shape="rect" href="release-notes-201.html">Release Notes
>2.0.1</a></li><li><a shape="rect" href="release-notes-200.html">Release Notes
>2.0.0</a></li></ul><h3 id="MigrationGuide-Struts1toStruts2">Struts 1 to
>Struts 2</h3><div class="table-wrap"><table
>class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1"
>class="confluenceTh"><p><a shape="rect"
>href="comparing-struts-1-and-2.html">Comparing Struts 1 and 2</a></p></th><td
>colspan="1" rowspan="1" class="confluenceTd"><p>How are Struts 1 and Struts 2
>alike? How are they different?</p></td></tr><tr><th colspan="1" rowspan="1"
>class="confluence
Th"><p><a shape="rect" href="struts-1-solutions.html">Struts 1
Solutions</a></p></th><td colspan="1" rowspan="1"
class="confluenceTd"><p>Various issues (and hopefully their solutions!)
encountered during migrations to Struts 2.</p></td></tr><tr><th colspan="1"
rowspan="1" class="confluenceTh"><p><a shape="rect"
href="migration-strategies.html">Migration Strategies</a></p></th><td
colspan="1" rowspan="1" class="confluenceTd"><p>Steps and overall strategies
for migrating Struts 1 applications to Struts 2.</p></td></tr><tr><th
colspan="1" rowspan="1" class="confluenceTh"><p><a shape="rect"
href="migration-tools.html">Migration Tools</a></p></th><td colspan="1"
rowspan="1" class="confluenceTd"><p>Development tools to help aid the migration
process.</p></td></tr></tbody></table></div><h4
id="MigrationGuide-Tutorials">Tutorials</h4><div class="table-wrap"><table
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p><a shape="rect" class="external-link" hre
f="http://www.infoq.com/news/migrating-struts2" rel="nofollow">Migrating
Applications to Struts 2 </a></p></th><td colspan="1" rowspan="1"
class="confluenceTd"><p>A three-part series by Ian Roughley (Sep
2006)</p></td></tr></tbody></table></div><h4
id="MigrationGuide-Roadmap">Roadmap</h4><div class="table-wrap"><table
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p><a shape="rect" class="external-link"
href="http://struts.apache.org/roadmap.html#new">Roadmap FAQ</a></p></th><td
colspan="1" rowspan="1" class="confluenceTd"><p>What's in store for Struts
2?</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p><a
shape="rect" class="external-link"
href="http://www.oreillynet.com/onjava/blog/2006/10/my_history_of_struts_2.html"
rel="nofollow">A History of Struts 2</a></p></th><td colspan="1" rowspan="1"
class="confluenceTd"><p>Don Brown's summary of
events</p></td></tr></tbody></table></div><h3
id="MigrationGuide-Webwork2.2toStruts2"
>Webwork 2.2 to Struts 2</h3><div class="table-wrap"><table
>class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1"
>class="confluenceTh"><p><a shape="rect"
>href="key-changes-from-webwork-2.html">Key Changes From WebWork
>2</a></p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>What has
>been removed or changed from WebWork 2.2 to Struts 2</p></td></tr><tr><th
>colspan="1" rowspan="1" class="confluenceTh"><p><a shape="rect"
>href="webwork-2-migration-strategies.html">WebWork 2 Migration
>Strategies</a></p></th><td colspan="1" rowspan="1"
>class="confluenceTd"><p>Steps and overall strategies for migrating WebWork 2
>applications to Struts 2.</p></td></tr></tbody></table></div><h2
>id="MigrationGuide-FAQs">FAQs</h2><ul><li><a shape="rect"
>href="where-do-we-get-the-latest-version-the-framework.html">Where do we get
>the latest version the framework</a>?</li><li><a shape="rect"
>href="what-are-some-of-the-frameworks-best-features.html">What are some of
>the framework's best features
</a>?</li><li><a shape="rect" href="what-is-the-actioncontext.html">What is
the ActionContext?</a></li></ul><h2 id="MigrationGuide-Next:">Next: <a
shape="rect" href="contributors-guide.html">Contributors Guide</a></h2></div>
</div>
<div class="tabletitle">
Modified:
websites/production/struts/content/release/2.3.x/docs/model-driven.html
==============================================================================
--- websites/production/struts/content/release/2.3.x/docs/model-driven.html
(original)
+++ websites/production/struts/content/release/2.3.x/docs/model-driven.html Fri
Nov 14 07:43:54 2014
@@ -138,18 +138,8 @@ under the License.
<div class="pagecontent">
<div class="wiki-content">
- <div id="ConfluenceContent"><p>Struts 2 does not have "forms" like
Struts 1 did. In Struts 2 request parameters are bound directly to fields in
the actions class, and this class is placed on top of the stack when the action
is executed. </p>
-
-<p>If an action class implements the interface
<code>com.opensymphony.xwork2.ModelDriven</code> then it needs to return an
object from the <code>getModel()</code> method. Struts will then populate the
fields of this object with the request parameters, and this object will be
placed on top of the stack once the action is executed. Validation will also be
performed on this model object, instead of the action. </p>
-
-<h2 id="ModelDriven-Interceptor">Interceptor</h2>
-<p>To use <code>ModelDriven</code> actions, make sure that the <a shape="rect"
href="model-driven-interceptor.html">Model Driven Interceptor</a> is applied to
your action. This interceptor is part of the default interceptor stack
<code>defaultStack</code> so it is applied to all actions by default. </p>
-
-<h2 id="ModelDriven-Example">Example</h2>
-<p>Action class:</p>
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent
panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false"
type="syntaxhighlighter"><![CDATA[
-public class ModelDrivenAction implements ModelDriven {
+ <div id="ConfluenceContent"><p>Struts 2 does not have "forms" like
Struts 1 did. In Struts 2 request parameters are bound directly to fields in
the actions class, and this class is placed on top of the stack when the action
is executed.</p><p>If an action class implements the interface
<code>com.opensymphony.xwork2.ModelDriven</code> then it needs to return an
object from the <code>getModel()</code> method. Struts will then populate the
fields of this object with the request parameters, and this object will be
placed on top of the stack once the action is executed. Validation will also be
performed on this model object, instead of the action. Please read
about <a shape="rect"
href="visitorfieldvalidator-annotation.html">VisitorFieldValidator
Annotation</a> which can help you validate model's fields.</p><h2
id="ModelDriven-Interceptor">Interceptor</h2><p>To use <code>ModelDriven</code>
actions, make sure that the <a shape="rect"
href="model-driven-interceptor.html">M
odel Driven Interceptor</a> is applied to your action. This interceptor is
part of the default interceptor stack <code>defaultStack</code> so it is
applied to all actions by default.</p><h2
id="ModelDriven-Example">Example</h2><p>Action class:</p><div class="code panel
pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false"
type="syntaxhighlighter"><![CDATA[public class ModelDrivenAction implements
ModelDriven {
public String execute() throws Exception {
return SUCCESS;
}
@@ -159,11 +149,8 @@ public class ModelDrivenAction implement
}
}
]]></script>
-</div></div>
-<p>Gangster class (model):</p>
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent
panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false"
type="syntaxhighlighter"><![CDATA[
-public class Gangster implements Serializable {
+</div></div><p>Gangster class (model):</p><div class="code panel pdl"
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false"
type="syntaxhighlighter"><![CDATA[public class Gangster implements Serializable
{
private String name;
private int age;
private String description;
@@ -195,11 +182,8 @@ public class Gangster implements Seriali
}
}
]]></script>
-</div></div>
-<p>JSP for creating a Gangster:</p>
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent
panelContent pdl">
-<script class="theme: Default; brush: html; gutter: false"
type="syntaxhighlighter"><![CDATA[
-<s:form action="modelDrivenResult" method="POST"
namespace="/modelDriven">
+</div></div><p>JSP for creating a Gangster:</p><div class="code panel pdl"
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: html; gutter: false"
type="syntaxhighlighter"><![CDATA[<s:form
action="modelDrivenResult" method="POST"
namespace="/modelDriven">
<s:textfield label="Gangster Name" name="name" />
<s:textfield label="Gangster Age" name="age" />
<s:checkbox label="Gangster Busted Before"
name="bustedBefore" />
Modified: websites/production/struts/content/release/2.3.x/docs/rest-plugin.html
==============================================================================
--- websites/production/struts/content/release/2.3.x/docs/rest-plugin.html
(original)
+++ websites/production/struts/content/release/2.3.x/docs/rest-plugin.html Fri
Nov 14 07:43:54 2014
@@ -145,11 +145,11 @@ under the License.
</div>
</div>
<p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1405758685177 {padding: 0px;}
-div.rbtoc1405758685177 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1405758685177 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1415950670950 {padding: 0px;}
+div.rbtoc1415950670950 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1415950670950 li {margin-left: 0px;padding-left: 0px;}
-/*]]>*/</style></p><div class="toc-macro rbtoc1405758685177">
+/*]]>*/</style></p><div class="toc-macro rbtoc1415950670950">
<ul class="toc-indentation"><li><span class="TOCOutline">1</span> <a
shape="rect" href="#RESTPlugin-Overview">Overview</a>
<ul class="toc-indentation"><li><span class="TOCOutline">1.1</span> <a
shape="rect" href="#RESTPlugin-Features">Features</a></li><li><span
class="TOCOutline">1.2</span> <a shape="rect"
href="#RESTPlugin-MappingRESTURLstoStruts2Actions">Mapping REST URLs to Struts
2 Actions</a>
<ul class="toc-indentation"><li><span class="TOCOutline">1.2.1</span> <a
shape="rect" href="#RESTPlugin-RESTfulURLMappingLogic">RESTful URL Mapping
Logic</a></li></ul>
@@ -161,7 +161,7 @@ div.rbtoc1405758685177 li {margin-left:
</li></ul>
</li><li><span class="TOCOutline">2.2</span> <a shape="rect"
href="#RESTPlugin-WriteYourControllerActions">Write Your Controller
Actions</a></li></ul>
</li><li><span class="TOCOutline">3</span> <a shape="rect"
href="#RESTPlugin-AdvancedTopics">Advanced Topics</a>
-<ul class="toc-indentation"><li><span class="TOCOutline">3.1</span> <a
shape="rect" href="#RESTPlugin-CustomContentTypeHandlers">Custom
ContentTypeHandlers</a></li><li><span class="TOCOutline">3.2</span> <a
shape="rect" href="#RESTPlugin-Settings">Settings</a></li></ul>
+<ul class="toc-indentation"><li><span class="TOCOutline">3.1</span> <a
shape="rect" href="#RESTPlugin-CustomContentTypeHandlers">Custom
ContentTypeHandlers</a></li><li><span class="TOCOutline">3.2</span> <a
shape="rect" href="#RESTPlugin-UseJacksonframeworkasJSONContentTypeHandler">Use
Jackson framework as JSON ContentTypeHandler</a></li><li><span
class="TOCOutline">3.3</span> <a shape="rect"
href="#RESTPlugin-Settings">Settings</a></li></ul>
</li><li><span class="TOCOutline">4</span> <a shape="rect"
href="#RESTPlugin-Resources">Resources</a></li><li><span
class="TOCOutline">5</span> <a shape="rect"
href="#RESTPlugin-VersionHistory">Version History</a></li></ul>
</div><h2 id="RESTPlugin-Overview">Overview</h2><p>The REST Pluginprovides
high level support for the implementation of RESTful resource based web
applicationsThe REST plugin can cooperate with the <a shape="rect"
href="convention-plugin.html">Convention Plugin</a> to support a zero
configuration approach to declaring your actions and results, but you can
always use the REST plugin with XML style configuration if you like.</p><p>If
you prefer to see a working code example, instead of reading through an
explanation, you can download the <a shape="rect" class="external-link"
href="http://struts.apache.org/2.x/index.html">struts2 sample apps</a> and
check out the <code>struts2-rest-showcase</code> application, a complete WAR
file, that demonstrates a simple REST web program.</p><h3
id="RESTPlugin-Features">Features</h3><ul><li>Ruby on Rails REST-style
URLs</li><li>Zero XML config when used with Convention Plugin</li><li>Built-in
serialization and deserialization support for XML and JSO
N</li><li>Automatic error handling</li><li>Type-safe configuration of the HTTP
response</li><li>Automatic conditional GET support</li></ul><h3
id="RESTPlugin-MappingRESTURLstoStruts2Actions">Mapping REST URLs to Struts 2
Actions</h3><p>The main functionality of the REST plugin lies in the
interpretation of incoming request URL's according the RESTful rules. In the
Struts 2 framework, this 'mapping' of request URL's to Actions is handled by in
implementation of the <a shape="rect" class="external-link"
href="http://struts.apache.org/2.x/struts2-core/apidocs/org/apache/struts2/dispatcher/mapper/ActionMapper.html"><code>ActionMapper</code></a>
interface. Out of the box, Struts 2 uses the <a shape="rect"
class="external-link"
href="http://struts.apache.org/2.x/struts2-core/apidocs/org/apache/struts2/dispatcher/mapper/DefaultActionMapper.html"><code>DefaultActionMapper</code></a>
to map URL's to Actions via the logic you are probably already familiar
with.</p> <div class="aui-message
warning shadowed information-macro">
<span class="aui-icon icon-warning">Icon</span>
@@ -268,7 +268,25 @@ public class OrdersController implements
</div></div><p>Then, tell the REST Plugin to override the handler for the
desired extension with yours. In <code>struts.properties</code>, it would look
like this:</p><div class="code panel pdl" style="border-width: 1px;"><div
class="codeContent panelContent pdl">
<script class="theme: Default; brush: java; gutter: false"
type="syntaxhighlighter"><![CDATA[struts.rest.handlerOverride.xml=myXml
]]></script>
-</div></div><h3 id="RESTPlugin-Settings">Settings</h3><p>The following
settings can be customized. See the <a shape="rect" class="external-link"
href="http://cwiki.apache.org/confluence/display/WW/Configuration+Files">developer
guide</a>.<br clear="none"> For more configuration options see the <a
shape="rect" href="convention-plugin.html">Convention Plugin
Documentation</a></p><div class="table-wrap"><table
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p>Setting</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Description</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Default</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Possible Values</p></th></tr><tr><td colspan="1"
rowspan="1"
class="confluenceTd"><p><code>struts.rest.handlerOverride.EXTENSION</code></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>The alias for the
<code>ContentTypeHandler</code> implementation that handles the EXTENSION val
ue</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>N/A</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>Any declared alias for a
<code>ContentTypeHandler</code> implementation</p></td></tr><tr><td colspan="1"
rowspan="1"
class="confluenceTd"><p><code>struts.rest.defaultExtension</code></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>The default extension to use
when none is explicitly specified in the request</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p><code>xhtml</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>Any extension</p></td></tr><tr><td
colspan="1" rowspan="1"
class="confluenceTd"><p><code>struts.rest.validationFailureStatusCode</code></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>The HTTP status code to return
on validation failure</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><code>400</code></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Any HTTP status code as
an integer</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><code>struts.rest.namespace</code></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>Optional parameter to specify
namespace for REST services</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><code>/</code></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>eg. /rest</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><code>struts.rest.content.restrictToGET</code></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>Optional parameter, if set to
true blocks returning content from any other methods than GET, if set to false,
the content can be returned for any kind of method</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>eg. put struts.rest.content.restrictToGET =
false in struts.properties</p></td></tr></tbody></table></div><h2
id="RESTPlugin-Resources">Resource
s</h2><ul><li><a shape="rect" class="external-link"
href="http://www.b-simple.de/documents"
rel="nofollow">http://www.b-simple.de/documents</a> - Short RESTful Rails
tutorial (PDF, multiple languages)</li><li><a shape="rect"
class="external-link"
href="http://www.amazon.com/RESTful-Web-Services-Leonard-Richardson/dp/0596529260"
rel="nofollow">RESTful Web Services</a> - Highly recommend book from
O'Reilly</li><li><a shape="rect" class="external-link"
href="http://raibledesigns.com/rd/entry/go_light_with_apache_struts"
rel="nofollow">Go Light with Apache Struts 2 and REST</a> - Presentation by Don
Brown at ApacheCon US 2008</li></ul><h2 id="RESTPlugin-VersionHistory">Version
History</h2><p>From Struts 2.1.1+</p></div>
+</div></div><h3
id="RESTPlugin-UseJacksonframeworkasJSONContentTypeHandler">Use Jackson
framework as JSON ContentTypeHandler</h3><p>The default JSON Content Handler is
build on top of the <a shape="rect" class="external-link"
href="http://json-lib.sourceforge.net/" rel="nofollow">JSON-lib</a>. If you
prefer to use the <a shape="rect" class="external-link"
href="http://jackson.codehaus.org/" rel="nofollow">Jackson framework</a> for
JSON serialisation, you can configure the JacksonLibHandler as Content Handler
for your json requests. </p><p>First you need to add the jackson
dependency to your web application by downloading the jar file and put it under
WEB-INF/lib or by adding following xml snippet to your dependencies section in
the pom.xml when you are using maven as build system.</p><div class="code panel
pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: xml; gutter: false"
type="syntaxhighlighter"><![CDATA[<dependency>
+ <groupId>org.codehaus.jackson</groupId>
+ <artifactId>jackson-jaxrs</artifactId>
+ <version>1.9.13</version>
+</dependency>
+]]></script>
+</div></div><p>Now you can overwrite the Content Handler with the Jackson
Content Handler in the struts.xml:</p><div class="code panel pdl"
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: xml; gutter: false"
type="syntaxhighlighter"><![CDATA[<bean
type="org.apache.struts2.rest.handler.ContentTypeHandler"
name="jackson"
class="org.apache.struts2.rest.handler.JacksonLibHandler"/>
+<constant name="struts.rest.handlerOverride.json"
value="jackson"/>
+
+<!-- Set to false if the json content can be returned for any kind of http
method -->
+<constant name="struts.rest.content.restrictToGET"
value="false"/>
+
+<!-- Set encoding to UTF-8, default is ISO-8859-1 -->
+<constant name="struts.i18n.encoding"
value="UTF-8"/>
+
+]]></script>
+</div></div><p> </p><h3 id="RESTPlugin-Settings">Settings</h3><p>The
following settings can be customized. See the <a shape="rect"
class="external-link"
href="http://cwiki.apache.org/confluence/display/WW/Configuration+Files">developer
guide</a>.<br clear="none"> For more configuration options see the <a
shape="rect" href="convention-plugin.html">Convention Plugin
Documentation</a></p><div class="table-wrap"><table
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p>Setting</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Description</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Default</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Possible Values</p></th></tr><tr><td colspan="1"
rowspan="1"
class="confluenceTd"><p><code>struts.rest.handlerOverride.EXTENSION</code></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>The alias for the
<code>ContentTypeHandler</code> implementation that handles the
EXTENSION value</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>N/A</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Any declared alias for a
<code>ContentTypeHandler</code> implementation</p></td></tr><tr><td colspan="1"
rowspan="1"
class="confluenceTd"><p><code>struts.rest.defaultExtension</code></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>The default extension to use
when none is explicitly specified in the request</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p><code>xhtml</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>Any extension</p></td></tr><tr><td
colspan="1" rowspan="1"
class="confluenceTd"><p><code>struts.rest.validationFailureStatusCode</code></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>The HTTP status code to return
on validation failure</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><code>400</code></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Any HTTP st
atus code as an integer</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><code>struts.rest.namespace</code></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>Optional parameter to specify
namespace for REST services</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><code>/</code></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>eg. /rest</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><code>struts.rest.content.restrictToGET</code></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>Optional parameter, if set to
true blocks returning content from any other methods than GET, if set to false,
the content can be returned for any kind of method</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>eg. put struts.rest.content.restrictToGET =
false in struts.properties</p></td></tr></tbody></table></div><h2
id="RESTPlugin-Resour
ces">Resources</h2><ul><li><a shape="rect" class="external-link"
href="http://www.b-simple.de/documents"
rel="nofollow">http://www.b-simple.de/documents</a> - Short RESTful Rails
tutorial (PDF, multiple languages)</li><li><a shape="rect"
class="external-link"
href="http://www.amazon.com/RESTful-Web-Services-Leonard-Richardson/dp/0596529260"
rel="nofollow">RESTful Web Services</a> - Highly recommend book from
O'Reilly</li><li><a shape="rect" class="external-link"
href="http://raibledesigns.com/rd/entry/go_light_with_apache_struts"
rel="nofollow">Go Light with Apache Struts 2 and REST</a> - Presentation by Don
Brown at ApacheCon US 2008</li></ul><h2 id="RESTPlugin-VersionHistory">Version
History</h2><p>From Struts 2.1.1+</p></div>
</div>
Modified: websites/production/struts/content/release/2.3.x/docs/security.html
==============================================================================
--- websites/production/struts/content/release/2.3.x/docs/security.html
(original)
+++ websites/production/struts/content/release/2.3.x/docs/security.html Fri Nov
14 07:43:54 2014
@@ -138,7 +138,18 @@ under the License.
<div class="pagecontent">
<div class="wiki-content">
- <div id="ConfluenceContent"><h3
id="Security-Securitytips">Security tips</h3><p>The Apache Struts 2 doesn't
provide any security mechanism - it is just a pure web framework. Below are few
tips you should consider during application development with the Apache Struts
2.</p><h4 id="Security-RestrictaccesstotheConfigBrowser">Restrict access to the
Config Browser</h4><p><a shape="rect" href="config-browser-plugin.html">Config
Browser Plugin</a> exposes internal configuration and should be used only
during development phase. If you must use it on production site, we strictly
recommend restricting access to it - you can use  Basic Authentication or
any other security mechanism (e.g. <a shape="rect" class="external-link"
href="http://shiro.apache.org/">Apache Shiro</a>)</p><h4
id="Security-Don'tmixdifferentaccesslevelsinthesamenamespace">Don't mix
different access levels in the same namespace</h4><p>Very often access to
different resources is controlled based on URL p
atterns, see snippet below. Because of that you cannot mix actions with
different security levels in the same namespace. Always group actions in one
namespace by security level.</p><div class="code panel pdl"
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+ <div id="ConfluenceContent"><h3
id="Security-/*<![CDATA[*/div.rbtoc1415950673266{padding:0px;}div.rbtoc1415950673266ul{list-style:disc;margin-left:0px;}div.rbtoc1415950673266li{margin-left:0px;padding-left:0px;}/*]]>*/SecuritytipsRestrictaccesstotheConfigBrowserDon'tmixdifferentaccesslevels"><style
type="text/css">/*<![CDATA[*/
+div.rbtoc1415950673266 {padding: 0px;}
+div.rbtoc1415950673266 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1415950673266 li {margin-left: 0px;padding-left: 0px;}
+
+/*]]>*/</style></h3><div class="toc-macro rbtoc1415950673266">
+<ul class="toc-indentation"><li><a shape="rect"
href="#Security-Securitytips">Security tips</a>
+<ul class="toc-indentation"><li><a shape="rect"
href="#Security-RestrictaccesstotheConfigBrowser">Restrict access to the Config
Browser</a></li><li><a shape="rect"
href="#Security-Don'tmixdifferentaccesslevelsinthesamenamespace">Don't mix
different access levels in the same namespace</a></li></ul>
+</li><li><a shape="rect" href="#Security-Internalsecuritymechanism">Internal
security mechanism</a>
+<ul class="toc-indentation"><li><a shape="rect"
href="#Security-OGNLisusedtocallaction'smethods">OGNL is used to call action's
methods</a></li></ul>
+</li></ul>
+</div><h3 id="Security-Securitytips">Security tips</h3><p>The Apache Struts 2
doesn't provide any security mechanism - it is just a pure web framework. Below
are few tips you should consider during application development with the Apache
Struts 2.</p><h4 id="Security-RestrictaccesstotheConfigBrowser">Restrict access
to the Config Browser</h4><p><a shape="rect"
href="config-browser-plugin.html">Config Browser Plugin</a> exposes
internal configuration and should be used only during development phase. If you
must use it on production site, we strictly recommend restricting access to it
- you can use  Basic Authentication or any other security mechanism (e.g.
<a shape="rect" class="external-link" href="http://shiro.apache.org/">Apache
Shiro</a>)</p><h4
id="Security-Don'tmixdifferentaccesslevelsinthesamenamespace">Don't mix
different access levels in the same namespace</h4><p>Very often access to
different resources is controlled based on URL patterns, see snippet below.
Becaus
e of that you cannot mix actions with different security levels in the same
namespace. Always group actions in one namespace by security level.</p><div
class="code panel pdl" style="border-width: 1px;"><div class="codeContent
panelContent pdl">
<script class="theme: Default; brush: xml; gutter: false"
type="syntaxhighlighter"><![CDATA[ <security-constraint>
<web-resource-collection>
<web-resource-name>admin</web-resource-name>
@@ -149,7 +160,52 @@ under the License.
</auth-constraint>
</security-constraint>
]]></script>
-</div></div></div>
+</div></div><h3 id="Security-Internalsecuritymechanism">Internal security
mechanism</h3><p>The Apache Struts 2 contains internal security manager which
blocks access to particular classes and Java packages - it's a OGNL-wide
mechanism which means it affects any aspect of the framework ie. incoming
parameters, expressions used in JSPs, etc.</p><p>The defaults are as
follow:</p><div class="code panel pdl" style="border-width: 1px;"><div
class="codeContent panelContent pdl">
+<script class="theme: Default; brush: xml; gutter: false"
type="syntaxhighlighter"><![CDATA[ <constant
name="struts.excludedClasses"
+ value="
+ java.lang.Object,
+ java.lang.Runtime,
+ java.lang.System,
+ java.lang.Class,
+ java.lang.ClassLoader,
+ java.lang.Shutdown,
+ ognl.OgnlContext,
+ ognl.MemberAccess,
+ ognl.ClassResolver,
+ ognl.TypeConverter,
+ com.opensymphony.xwork2.ActionContext" />
+ <!-- this must be valid regex, each '.' in package name must be
escaped! -->
+ <constant name="struts.excludedPackageNamePatterns"
value="^java\.lang\..*,^ognl.*,^javax.*" />]]></script>
+</div></div><p>Any expression or target which evaluates to one of these will
be blocked and you see a WARN in logs:</p><div class="preformatted panel"
style="border-width: 1px;"><div class="preformattedContent panelContent">
+<pre>[WARNING] Target class [class example.MyBean] or declaring class of
member type [public example.MyBean()] are excluded!</pre>
+</div></div><p>In that case <code>new MyBean()</code> was used to create
a new instance of class (inside JSP) - it's blocked
because <code>target</code> of such expression is evaluated
to <code>java.lang.Class</code></p> <div class="aui-message warning
shadowed information-macro">
+ <span class="aui-icon icon-warning">Icon</span>
+ <div class="message-content">
+ <p>It is possible to redefine the above constants
in <code>struts.xml</code> but try to avoid this and rather change design of
your application!</p>
+ </div>
+ </div>
+<h4 id="Security-OGNLisusedtocallaction'smethods">OGNL is used to call
action's methods</h4><p>This can impact actions which have large inheritance
hierarchy and use the same method's name throughout the hierarchy, this was
reported as an issue <a shape="rect" class="external-link"
href="https://issues.apache.org/jira/browse/WW-4405">WW-4405</a>. See the
example below:</p><div class="code panel pdl" style="border-width: 1px;"><div
class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false"
type="syntaxhighlighter"><![CDATA[public class RealAction extends BaseAction {
+ @Action("save")
+ public String save() throws Exception {
+ super.save();
+ return SUCCESS;
+ }
+}
+Â
+public class BaseAction extends AbstractAction {
+ public String save() throws Exception {
+ save(Double.MAX_VALUE);
+ return SUCCESS;
+ }
+}
+Â
+public abstract class AbstractAction extends ActionSupport {
+ protected void save(Double val) {
+ // some logic
+ }
+}]]></script>
+</div></div><p>In such case OGNL cannot properly map which method to call when
request is coming. This is do the OGNL limitation. To solve the problem don't
use the same method's names through the hierarchy, you can simply change the
action's method from <code>save()</code>
to <code>saveAction()</code> and leaving annotation as is to
allow <span style="line-height: 1.4285715;">call this action
via </span><code style="line-height: 1.4285715;">/save.action</code><span
style="line-height: 1.4285715;"> request.</span></p></div>
</div>
Modified:
websites/production/struts/content/release/2.3.x/docs/sitegraph-plugin.html
==============================================================================
--- websites/production/struts/content/release/2.3.x/docs/sitegraph-plugin.html
(original)
+++ websites/production/struts/content/release/2.3.x/docs/sitegraph-plugin.html
Fri Nov 14 07:43:54 2014
@@ -179,7 +179,8 @@ siteGraph.render();
<table><tr><td colspan="1" rowspan="1" class="gallery-image"
style="width: 300px">
<a shape="rect" class="gallery-link"
href="sitegraph-plugin.data/example.gif?api=v2" rel="gallery-0"
target="_gallery_slideshow" title=""><img border="0"
src="sitegraph-plugin.thumbs/example.gif" width="300" height="243"></a>
</td></tr><tr><td colspan="1"
rowspan="1"></td></tr></table>
-</div><h4 id="SiteGraphPlugin-Settings">Settings</h4><p>This plugin doesn't
allow for any global settings.</p><h4
id="SiteGraphPlugin-Installation">Installation</h4><p>The SiteGraph plugin jar
is distributed with Struts, so if you're up and running, you don't need to do
download any additional Java packages. However, SiteGraph does require the
"dot" package by <a shape="rect" class="external-link"
href="http://www.graphviz.org" rel="nofollow">GraphViz</a>.</p><p>You'll need
to download the latest version of GraphViz and make sure that the dot
executable (dot.exe in Windows) is in your command path. In Windows the
GraphViz installer typically automatically adds <code>dot.exe</code> to your
path. However, you may need to do this by hand depending on your system
configuration.</p></div>
+</div>
+<h4 id="SiteGraphPlugin-Settings">Settings</h4><p>This plugin doesn't allow
for any global settings.</p><h4
id="SiteGraphPlugin-Installation">Installation</h4><p>The SiteGraph plugin jar
is distributed with Struts, so if you're up and running, you don't need to do
download any additional Java packages. However, SiteGraph does require the
"dot" package by <a shape="rect" class="external-link"
href="http://www.graphviz.org" rel="nofollow">GraphViz</a>.</p><p>You'll need
to download the latest version of GraphViz and make sure that the dot
executable (dot.exe in Windows) is in your command path. In Windows the
GraphViz installer typically automatically adds <code>dot.exe</code> to your
path. However, you may need to do this by hand depending on your system
configuration.</p></div>
</div>