Modified:
websites/production/struts/content/docs/building-struts-2-normal-release.html
==============================================================================
---
websites/production/struts/content/docs/building-struts-2-normal-release.html
(original)
+++
websites/production/struts/content/docs/building-struts-2-normal-release.html
Mon Feb 29 19:38:05 2016
@@ -139,11 +139,11 @@ under the License.
<div class="pagecontent">
<div class="wiki-content">
<div id="ConfluenceContent"><h1
id="BuildingStruts2-Normalrelease-Content">Content</h1><p><style
type="text/css">/*<![CDATA[*/
-div.rbtoc1453884620028 {padding: 0px;}
-div.rbtoc1453884620028 ul {list-style: none;margin-left: 0px;}
-div.rbtoc1453884620028 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1456773758648 {padding: 0px;}
+div.rbtoc1456773758648 ul {list-style: none;margin-left: 0px;}
+div.rbtoc1456773758648 li {margin-left: 0px;padding-left: 0px;}
-/*]]>*/</style></p><div class="toc-macro rbtoc1453884620028">
+/*]]>*/</style></p><div class="toc-macro rbtoc1456773758648">
<ul class="toc-indentation"><li><span class="TOCOutline">1</span> <a
shape="rect" href="#BuildingStruts2-Normalrelease-Gettingready">Getting
ready</a></li><li><span class="TOCOutline">2</span> <a shape="rect"
href="#BuildingStruts2-Normalrelease-UpdateDraftDocswhenneeded">Update Draft
Docs when needed</a></li><li><span class="TOCOutline">3</span> <a shape="rect"
href="#BuildingStruts2-Normalrelease-Besureyourlocalcopyisup-to-date">Be sure
your local copy is up-to-date</a></li><li><span class="TOCOutline">4</span> <a
shape="rect" href="#BuildingStruts2-Normalrelease-Preparerelease">Prepare
release</a></li><li><span class="TOCOutline">5</span> <a shape="rect"
href="#BuildingStruts2-Normalrelease-Performtherelease">Perform the
release</a></li><li><span class="TOCOutline">6</span> <a shape="rect"
href="#BuildingStruts2-Normalrelease-Movetheassemblies">Move the
assemblies</a></li><li><span class="TOCOutline">7</span> <a shape="rect"
href="#BuildingStruts2-Normalrelease-Announceavailabili
ty">Announce availability</a></li><li><span class="TOCOutline">8</span> <a
shape="rect" href="#BuildingStruts2-Normalrelease-Pushchanges">Push
changes</a></li><li><span class="TOCOutline">9</span> <a shape="rect"
href="#BuildingStruts2-Normalrelease-Voteonit">Vote on it</a></li><li><span
class="TOCOutline">10</span> <a shape="rect"
href="#BuildingStruts2-Normalrelease-Copyfiles">Copy files</a></li><li><span
class="TOCOutline">11</span> <a shape="rect"
href="#BuildingStruts2-Normalrelease-Promoterelease">Promote
release</a></li><li><span class="TOCOutline">12</span> <a shape="rect"
href="#BuildingStruts2-Normalrelease-Cleanupoldreleases">Clean up old
releases</a></li><li><span class="TOCOutline">13</span> <a shape="rect"
href="#BuildingStruts2-Normalrelease-Waitforrsync">Wait for
rsync</a></li><li><span class="TOCOutline">14</span> <a shape="rect"
href="#BuildingStruts2-Normalrelease-Updatesite">Update site</a></li><li><span
class="TOCOutline">15</span> <a shape="rect" href="#Buildin
gStruts2-Normalrelease-Redeploythedocs(Optional)">Redeploy the docs
(Optional)</a></li><li><span class="TOCOutline">16</span> <a shape="rect"
href="#BuildingStruts2-Normalrelease-Postannouncements">Post
announcements</a></li></ul>
</div><h2 id="BuildingStruts2-Normalrelease-BuildingSteps(Struts)">Building
Steps (Struts)</h2><h3 id="BuildingStruts2-Normalrelease-Gettingready">Getting
ready</h3><ol><li>Create an "Struts 2.x.y omnibus ticket" ticket in JIRA to
refer to in upcoming release related commit comments and for general
documentation purposes. Mark it with priority "Blocker".</li><li>Switch to
branch <code>develop</code></li><li>Ensure that the master POM and Struts
Annotations have current releases</li><li>Review JIRA for any issues without a
fix version set, and for any issues that should be resolved for the pending
release.</li><li>Ensure that there are no repositories or pluginRepositories
listed in the poms.</li><li>If you have committed all changes regarding the
release process, close the omnibus ticket as it is the last open ticket for the
upcoming release</li><li>Release the upcoming version in JIRA (under
Administration/Manage Releases) and tag the release date</li><li>Add next
milestone ve
rsion to the JIRA roadmap</li><li>Create DONE and TODO filters for the new
version, share with all, and remove obsolete TODO filter</li><li>Create a new
Version Notes page in Confluence, link from <a shape="rect"
href="migration-guide.html">Migration Guide</a>, and link to prior release page
and JIRA DONE filters of the version to release</li><li>Export wiki pages and
put them under <code>/docs</code></li></ol><h3
id="BuildingStruts2-Normalrelease-UpdateDraftDocswhenneeded">Update Draft Docs
when needed</h3><p>Checkout <code>struts-site</code> project (see details
at the bottom of this page) and perform export:</p><div class="code panel pdl"
style="border-width: 1px;"><div class="codeContent panelContent pdl">
<pre class="brush: java; gutter: false; theme: Default"
style="font-size:12px;">cd struts-site
Modified:
websites/production/struts/content/docs/building-struts-annotations.html
==============================================================================
--- websites/production/struts/content/docs/building-struts-annotations.html
(original)
+++ websites/production/struts/content/docs/building-struts-annotations.html
Mon Feb 29 19:38:05 2016
@@ -140,11 +140,11 @@ under the License.
<div class="wiki-content">
<div id="ConfluenceContent"><h1
id="BuildingStrutsAnnotations-Content">Content</h1>
<style type="text/css">/*<![CDATA[*/
-div.rbtoc1453884615253 {padding: 0px;}
-div.rbtoc1453884615253 ul {list-style: none;margin-left: 0px;}
-div.rbtoc1453884615253 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1456773757873 {padding: 0px;}
+div.rbtoc1456773757873 ul {list-style: none;margin-left: 0px;}
+div.rbtoc1456773757873 li {margin-left: 0px;padding-left: 0px;}
-/*]]>*/</style><div class="toc-macro rbtoc1453884615253">
+/*]]>*/</style><div class="toc-macro rbtoc1456773757873">
<ul class="toc-indentation"><li><span class="TOCOutline">1</span> <a
shape="rect" href="#BuildingStrutsAnnotations-Content">Content</a>
<ul class="toc-indentation"><li><span class="TOCOutline">1.1</span> <a
shape="rect"
href="#BuildingStrutsAnnotations-BuildingSteps(StrutsAnnotations)">Building
Steps (Struts Annotations)</a>
<ul class="toc-indentation"><li><span class="TOCOutline">1.1.1</span> <a
shape="rect"
href="#BuildingStrutsAnnotations-Obtainafreshcheckoutofstrutsannotations">Obtain
a fresh check out of struts annotations</a></li><li><span
class="TOCOutline">1.1.2</span> <a shape="rect"
href="#BuildingStrutsAnnotations-Preparerelease">Prepare
release</a></li><li><span class="TOCOutline">1.1.3</span> <a shape="rect"
href="#BuildingStrutsAnnotations-Performrelease">Perform
release</a></li><li><span class="TOCOutline">1.1.4</span> <a shape="rect"
href="#BuildingStrutsAnnotations-SendaVOTEemail">Send a VOTE
email</a></li><li><span class="TOCOutline">1.1.5</span> <a shape="rect"
href="#BuildingStrutsAnnotations-Promoterelease">Promote release</a></li></ul>
Modified: websites/production/struts/content/docs/building-struts-master.html
==============================================================================
--- websites/production/struts/content/docs/building-struts-master.html
(original)
+++ websites/production/struts/content/docs/building-struts-master.html Mon Feb
29 19:38:05 2016
@@ -140,11 +140,11 @@ under the License.
<div class="wiki-content">
<div id="ConfluenceContent"><h1
id="BuildingStrutsMaster-Content">Content</h1>
<style type="text/css">/*<![CDATA[*/
-div.rbtoc1453884624327 {padding: 0px;}
-div.rbtoc1453884624327 ul {list-style: none;margin-left: 0px;}
-div.rbtoc1453884624327 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1456773767967 {padding: 0px;}
+div.rbtoc1456773767967 ul {list-style: none;margin-left: 0px;}
+div.rbtoc1456773767967 li {margin-left: 0px;padding-left: 0px;}
-/*]]>*/</style><div class="toc-macro rbtoc1453884624327">
+/*]]>*/</style><div class="toc-macro rbtoc1456773767967">
<ul class="toc-indentation"><li><span class="TOCOutline">1</span> <a
shape="rect" href="#BuildingStrutsMaster-BuildingSteps(Struts)">Building Steps
(Struts)</a>
<ul class="toc-indentation"><li><span class="TOCOutline">1.1</span> <a
shape="rect" href="#BuildingStrutsMaster-Obtainafreshcheckout.">Obtain a fresh
checkout.</a></li><li><span class="TOCOutline">1.2</span> <a shape="rect"
href="#BuildingStrutsMaster-Changesitetarget">Change site
target</a></li><li><span class="TOCOutline">1.3</span> <a shape="rect"
href="#BuildingStrutsMaster-Preparerelease">Prepare release</a></li><li><span
class="TOCOutline">1.4</span> <a shape="rect"
href="#BuildingStrutsMaster-Performtherelease">Perform the
release</a></li><li><span class="TOCOutline">1.5</span> <a shape="rect"
href="#BuildingStrutsMaster-Announceavailability">Announce
availability</a></li><li><span class="TOCOutline">1.6</span> <a shape="rect"
href="#BuildingStrutsMaster-Voteonit">Vote on it</a></li><li><span
class="TOCOutline">1.7</span> <a shape="rect"
href="#BuildingStrutsMaster-Promoterelease">Promote release</a></li><li><span
class="TOCOutline">1.8</span> <a shape="rect" href="#BuildingS
trutsMaster-Waitforrsync">Wait for rsync</a></li><li><span
class="TOCOutline">1.9</span> <a shape="rect"
href="#BuildingStrutsMaster-Postannouncements">Post announcements</a></li></ul>
</li></ul>
Modified: websites/production/struts/content/docs/cdi-plugin.html
==============================================================================
--- websites/production/struts/content/docs/cdi-plugin.html (original)
+++ websites/production/struts/content/docs/cdi-plugin.html Mon Feb 29 19:38:05
2016
@@ -139,11 +139,11 @@ under the License.
<div class="pagecontent">
<div class="wiki-content">
<div id="ConfluenceContent"><style type="text/css">/*<![CDATA[*/
-div.rbtoc1453884633827 {padding: 0px;}
-div.rbtoc1453884633827 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1453884633827 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1456773768877 {padding: 0px;}
+div.rbtoc1456773768877 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1456773768877 li {margin-left: 0px;padding-left: 0px;}
-/*]]>*/</style><div class="toc-macro rbtoc1453884633827">
+/*]]>*/</style><div class="toc-macro rbtoc1456773768877">
<ul class="toc-indentation"><li><a shape="rect"
href="#CDIPlugin-Overview">Overview</a></li><li><a shape="rect"
href="#CDIPlugin-Setup">Setup</a>
<ul class="toc-indentation"><li><a shape="rect"
href="#CDIPlugin-MavenSetup">Maven Setup</a></li><li><a shape="rect"
href="#CDIPlugin-ManualIntegration">Manual Integration</a></li><li><a
shape="rect" href="#CDIPlugin-Configuration">Configuration</a></li></ul>
</li><li><a shape="rect" href="#CDIPlugin-Usage">Usage</a>
Modified:
websites/production/struts/content/docs/configuration-provider-configuration.html
==============================================================================
---
websites/production/struts/content/docs/configuration-provider-configuration.html
(original)
+++
websites/production/struts/content/docs/configuration-provider-configuration.html
Mon Feb 29 19:38:05 2016
@@ -138,12 +138,8 @@ under the License.
<div class="pagecontent">
<div class="wiki-content">
- <div id="ConfluenceContent"><p>The ConfigurationProvider interface
describes the framework's configuration. By default, the framework loads its
configurations via an XML document by using the
<code>StrutsXmlConfigurationProvider</code>. The provider can be configured
through a Dispatcher's <a shape="rect"
href="dispatcherlistener.html">DispatcherListener</a>. </p>
-
-<h2 id="ConfigurationProvider&Configuration-Example">Example</h2>
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent
panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default"
style="font-size:12px;">
- static {
+ <div id="ConfluenceContent"><p>The ConfigurationProvider interface
describes the framework's configuration. By default, the framework loads its
configurations via an XML document by using the
<code>StrutsXmlConfigurationProvider</code>. The provider can be configured
through a Dispatcher's <a shape="rect"
href="dispatcherlistener.html">DispatcherListener</a>.</p><h2
id="ConfigurationProvider&Configuration-Example">Example</h2><div
class="code panel pdl" style="border-width: 1px;"><div class="codeContent
panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default"
style="font-size:12px;"> static {
Dispatcher.addDispatcherListener(new DispatcherListener() {
....
public void dispatcherInitialized(Dispatcher du) {
@@ -154,9 +150,7 @@ under the License.
});
}
</pre>
-</div></div>
-
-<h2 id="ConfigurationProvider&Configuration-BackTo:">Back To: <a
shape="rect" href="architects-guide.html">Architects Guide</a></h2></div>
+</div></div><h2
id="ConfigurationProvider&Configuration-Configurationprovider">Configuration
provider</h2><p><code>ConfigurationProvider</code> is the basic piece of
configuration used to tie all the options together in
<code>ConfigurationManager</code>. There is few different implementations that
are already used internally by the Apache Struts:</p><ul
style="list-style-type: square;"><li><code style="line-height:
1.42857;">XmlConfigurationProvider</code> - proprietary XWork implementation
which are using <code>xwork.xml</code> file as source of
configuration </li><li><code>StrutsXmlConfigurationProvider</code> -
primary configuration provider, represents <code>struts.xml</code>
and <code>struts-plugin.xml</code>
files</li><li><code>PropertiesConfigurationProvider</code> - used to
load <code>struts.properties</code></li><li><code>ServletContextAwareConfigurationProvider</code>
- marking interface allowing to inject <code>ServletContext</code> into
provi
der</li></ul><p>To inject your custom configuration provider
use <code>configProviders</code> <code><init-param/></code>
in <a shape="rect" href="webxml.html">web.xml</a></p><h2
id="ConfigurationProvider&Configuration-BackTo:">Back To: <a shape="rect"
href="architects-guide.html">Architects Guide</a></h2></div>
</div>
Modified: websites/production/struts/content/docs/control-tags.html
==============================================================================
--- websites/production/struts/content/docs/control-tags.html (original)
+++ websites/production/struts/content/docs/control-tags.html Mon Feb 29
19:38:05 2016
@@ -133,7 +133,7 @@ under the License.
<p>@see src/META-INF/taglib.tld </p>
-<h2 id="ControlTags-Next:">Next: <a shape="rect" class="createlink"
href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=test&title=Data+Tags">Data
Tags</a></h2></div>
+<h2 id="ControlTags-Next:">Next: <a shape="rect" class="unresolved"
href="#">Data Tags</a></h2></div>
</div>
Modified: websites/production/struts/content/docs/convention-plugin.html
==============================================================================
--- websites/production/struts/content/docs/convention-plugin.html (original)
+++ websites/production/struts/content/docs/convention-plugin.html Mon Feb 29
19:38:05 2016
@@ -139,11 +139,11 @@ under the License.
<div class="pagecontent">
<div class="wiki-content">
<div id="ConfluenceContent"><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1453884533921 {padding: 0px;}
-div.rbtoc1453884533921 ul {list-style: none;margin-left: 0px;}
-div.rbtoc1453884533921 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1456773694526 {padding: 0px;}
+div.rbtoc1456773694526 ul {list-style: none;margin-left: 0px;}
+div.rbtoc1456773694526 li {margin-left: 0px;padding-left: 0px;}
-/*]]>*/</style></p><div class="toc-macro rbtoc1453884533921">
+/*]]>*/</style></p><div class="toc-macro rbtoc1456773694526">
<ul class="toc-indentation"><li><span class="TOCOutline">1</span> <a
shape="rect"
href="#ConventionPlugin-Introduction">Introduction</a></li><li><span
class="TOCOutline">2</span> <a shape="rect"
href="#ConventionPlugin-Setup">Setup</a></li><li><span
class="TOCOutline">3</span> <a shape="rect"
href="#ConventionPlugin-ConvertingaCodebehindbasedapplicationtoConvention">Converting
a Codebehind based application to Convention</a></li><li><span
class="TOCOutline">4</span> <a shape="rect"
href="#ConventionPlugin-Helloworld">Hello world</a></li><li><span
class="TOCOutline">5</span> <a shape="rect"
href="#ConventionPlugin-Codebehindhelloworld">Code behind hello
world</a></li><li><span class="TOCOutline">6</span> <a shape="rect"
href="#ConventionPlugin-Resultsandresultcodes">Results and result codes</a>
<ul class="toc-indentation"><li><span class="TOCOutline">6.1</span> <a
shape="rect" href="#ConventionPlugin-Multiplenames">Multiple names</a></li></ul>
</li><li><span class="TOCOutline">7</span> <a shape="rect"
href="#ConventionPlugin-Chaining">Chaining</a></li><li><span
class="TOCOutline">8</span> <a shape="rect"
href="#ConventionPlugin-XWorkpackages">XWork packages</a></li><li><span
class="TOCOutline">9</span> <a shape="rect"
href="#ConventionPlugin-Annotationreference">Annotation reference</a>
Modified:
websites/production/struts/content/docs/create-struts-2-web-application-with-artifacts-in-web-inf-lib-and-use-ant-to-build-the-application.html
==============================================================================
---
websites/production/struts/content/docs/create-struts-2-web-application-with-artifacts-in-web-inf-lib-and-use-ant-to-build-the-application.html
(original)
+++
websites/production/struts/content/docs/create-struts-2-web-application-with-artifacts-in-web-inf-lib-and-use-ant-to-build-the-application.html
Mon Feb 29 19:38:05 2016
@@ -263,7 +263,7 @@ under the License.
</div></div>
<p>This minimal Struts 2 configuration file tells the framework that if the
URL ends in index.action to redirect the browser to index.jsp.</p>
-<p>For more information about the struts.xml configuration file see <a
shape="rect" class="createlink"
href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&title=XML&linkCreation=true&fromPageId=14811863">XML</a>.</p>
+<p>For more information about the struts.xml configuration file see <a
shape="rect" class="unresolved" href="#">XML</a>.</p>
<h3
id="CreateStruts2WebApplicationWithArtifactsInWEB-INFlibandUseAntToBuildTheApplication-Step7-BuildandRuntheApplication">Step
7 - Build and Run the Application</h3>
<p>With all of the above in place run the Ant target that creates the war file
(in the example download that target is archive). Remove the previously
created war file and exploded web application folder from your Servlet
container's webapps folder. Copy to your Servlet container's webapps folder
the new war you just created. </p>
Modified: websites/production/struts/content/docs/crud-demo-i.html
==============================================================================
--- websites/production/struts/content/docs/crud-demo-i.html (original)
+++ websites/production/struts/content/docs/crud-demo-i.html Mon Feb 29
19:38:05 2016
@@ -645,7 +645,7 @@ errors.required.age.limit=Please provide
<h2 id="CRUDDemoI-Conclusion">Conclusion</h2>
-<p>This 'quick intro' turned out a bit longer than I anticipated. We haven't
even barely touched the possibilities with Struts 2 - different templates, IoC
(Pico, Spring), annotations, REST-ful action mappings, components, Hibernate
integration, ajax support, pdf/xml/rss/.. generation, groovy, ... More info on
<a shape="rect" class="createlink"
href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&title=3rd+party+integration&linkCreation=true&fromPageId=14178">3rd
party integration</a>.</p>
+<p>This 'quick intro' turned out a bit longer than I anticipated. We haven't
even barely touched the possibilities with Struts 2 - different templates, IoC
(Pico, Spring), annotations, REST-ful action mappings, components, Hibernate
integration, ajax support, pdf/xml/rss/.. generation, groovy, ... More info on
<a shape="rect" class="unresolved" href="#">3rd party integration</a>.</p>
<p>When you look at the various frameworks out there, they all let you create
a certain type of (web) application really, really quickly. It's only when you
want to add new/different/complex things, that you discover the limitations of
the framework, often meaning serious hacking to get it working. Struts 2 is
different. It is no out-of-the-box framework, where you just click a few
buttons to generate a blog/cms/product catalog, but it's a framework in the
true spirit of the word. Its architecture and design is so flexible that we yet
have to discover where we cannot use it for, and as such it's a great overall
framework that should belong in the backpack of any serious Java
(web)application programmer.</p></div>
</div>
Modified: websites/production/struts/content/docs/cssxhtml-form-template.html
==============================================================================
--- websites/production/struts/content/docs/cssxhtml-form-template.html
(original)
+++ websites/production/struts/content/docs/cssxhtml-form-template.html Mon Feb
29 19:38:05 2016
@@ -128,7 +128,7 @@ under the License.
<div id="ConfluenceContent">
-<p>The css_xhtml <a shape="rect" class="createlink"
href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=test&title=form">form</a>
template is almost exactly like the <a shape="rect" class="createlink"
href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=test&title=xhtml+form+template">xhtml
form template</a>, including support for <a shape="rect"
href="pure-javascript-client-side-validation.html">Pure JavaScript Client Side
Validation</a>. The only difference is that instead of printing out an opening
and closing <code><table></code> element, there are no elements. Instead,
the CSS rules for the individual HTML tags are assumed to handle all dislay
logic. However, as noted, client side validation is still supported.</p></div>
+<p>The css_xhtml <a shape="rect" class="unresolved" href="#">form</a> template
is almost exactly like the <a shape="rect" class="unresolved" href="#">xhtml
form template</a>, including support for <a shape="rect"
href="pure-javascript-client-side-validation.html">Pure JavaScript Client Side
Validation</a>. The only difference is that instead of printing out an opening
and closing <code><table></code> element, there are no elements. Instead,
the CSS rules for the individual HTML tags are assumed to handle all dislay
logic. However, as noted, client side validation is still supported.</p></div>
</div>
Modified: websites/production/struts/content/docs/faqs.html
==============================================================================
--- websites/production/struts/content/docs/faqs.html (original)
+++ websites/production/struts/content/docs/faqs.html Mon Feb 29 19:38:05 2016
@@ -189,7 +189,7 @@ under the License.
<h3 id="FAQs-Tags"><a shape="rect"
href="tag-developers-guide.html">Tags</a></h3>
-<ul><li><a shape="rect"
href="why-do-the-form-tags-put-table-tags-around-controls.html">Why do the form
tags put table tags around controls</a>?</li><li><a shape="rect"
href="how-can-i-put-a-string-literal-in-a-javascript-call-for-instance-in-an-onchange-attribute.html">How
can I put a String literal in a Javascript call, for instance in an onChange
attribute</a>?</li><li><a shape="rect"
href="why-wont-the-if-tag-evaluate-a-one-char-string.html">Why won't the 'if'
tag evaluate a one char string</a>?</li><li><a shape="rect"
href="why-does-freemarker-complain-that-theres-an-error-in-my-user-directive-when-i-used-jsp-tag.html">Why
does FreeMarker complain that there's an error in my user-directive when I
used JSP Tag</a>?</li><li><a shape="rect"
href="can-an-action-tag-run-another-method-apart-from-the-default-execute-method.html">Can
an action tag run another method apart from the default execute
method</a>?</li><li><a shape="rect"
href="why-didnt-my-action-tag-get-executed-when-i-hav
e-validation-errors.html">Why didn't my action tag get executed when I have
validation errors</a>?</li><li><a shape="rect"
href="why-are-request-parameters-appended-to-our-hyperlinks.html">Why are
request parameters appended to our hyperlinks</a>?</li><li><a shape="rect"
class="createlink"
href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&title=why+doesn%27t+the+if+tag+evaluate+params+properly&linkCreation=true&fromPageId=14182">Why
doesn't the if tag evaluate test="#parameters.someParam ... "
properly</a></li><li><a shape="rect"
href="how-do-i-render-a-single-radio-button.html">How do I render a single
radio button</a>?</li><li><a shape="rect"
href="why-do-i-get-a-javaxelelexception-when-using-ognl-with-jsp21.html">Why do
I get a javax.el.ELException when using OGNL with JSP2.1?</a></li><li><a
shape="rect"
href="why-cant-i-use-jstl-style-el-expressions-in-struts-tags.html">Why can't I
use JSTL-style EL expressions in Struts tags?</a><
/li><li><a shape="rect"
href="how-can-i-iterate-over-a-range-like-with-jstls-foreach-tag.html">How can
I iterate over a range, like with JSTL's forEach tag?</a></li></ul>
+<ul><li><a shape="rect"
href="why-do-the-form-tags-put-table-tags-around-controls.html">Why do the form
tags put table tags around controls</a>?</li><li><a shape="rect"
href="how-can-i-put-a-string-literal-in-a-javascript-call-for-instance-in-an-onchange-attribute.html">How
can I put a String literal in a Javascript call, for instance in an onChange
attribute</a>?</li><li><a shape="rect"
href="why-wont-the-if-tag-evaluate-a-one-char-string.html">Why won't the 'if'
tag evaluate a one char string</a>?</li><li><a shape="rect"
href="why-does-freemarker-complain-that-theres-an-error-in-my-user-directive-when-i-used-jsp-tag.html">Why
does FreeMarker complain that there's an error in my user-directive when I
used JSP Tag</a>?</li><li><a shape="rect"
href="can-an-action-tag-run-another-method-apart-from-the-default-execute-method.html">Can
an action tag run another method apart from the default execute
method</a>?</li><li><a shape="rect"
href="why-didnt-my-action-tag-get-executed-when-i-hav
e-validation-errors.html">Why didn't my action tag get executed when I have
validation errors</a>?</li><li><a shape="rect"
href="why-are-request-parameters-appended-to-our-hyperlinks.html">Why are
request parameters appended to our hyperlinks</a>?</li><li><a shape="rect"
class="unresolved" href="#">Why doesn't the if tag evaluate
test="#parameters.someParam ... " properly</a></li><li><a shape="rect"
href="how-do-i-render-a-single-radio-button.html">How do I render a single
radio button</a>?</li><li><a shape="rect"
href="why-do-i-get-a-javaxelelexception-when-using-ognl-with-jsp21.html">Why do
I get a javax.el.ELException when using OGNL with JSP2.1?</a></li><li><a
shape="rect"
href="why-cant-i-use-jstl-style-el-expressions-in-struts-tags.html">Why can't I
use JSTL-style EL expressions in Struts tags?</a></li><li><a shape="rect"
href="how-can-i-iterate-over-a-range-like-with-jstls-foreach-tag.html">How can
I iterate over a range, like with JSTL's forEach tag?</a></li></ul>
<h3 id="FAQs-POJOs">POJOs</h3>
Modified: websites/production/struts/content/docs/file-upload.html
==============================================================================
--- websites/production/struts/content/docs/file-upload.html (original)
+++ websites/production/struts/content/docs/file-upload.html Mon Feb 29
19:38:05 2016
@@ -139,11 +139,11 @@ under the License.
<div class="pagecontent">
<div class="wiki-content">
<div id="ConfluenceContent"><p>The Struts 2 framework provides
built-in support for processing file uploads that conform to <a shape="rect"
class="external-link" href="http://www.ietf.org/rfc/rfc1867.txt"
rel="nofollow">RFC 1867</a>, "Form-based File Upload in HTML". When correctly
configured the framework will pass uploaded file(s) into your Action class.
Support for individual and multiple file uploads are provided. When a file is
uploaded it will typically be stored in a temporary directory. Uploaded files
should be processed or moved by your Action class to ensure the data is not
lost. Be aware that servers may have a security policy in place that prohibits
you from writing to directories other than the temporary directory and the
directories that belong to your web application.</p><p><style
type="text/css">/*<![CDATA[*/
-div.rbtoc1453884514716 {padding: 0px;}
-div.rbtoc1453884514716 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1453884514716 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1456773683348 {padding: 0px;}
+div.rbtoc1456773683348 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1456773683348 li {margin-left: 0px;padding-left: 0px;}
-/*]]>*/</style></p><div class="toc-macro rbtoc1453884514716">
+/*]]>*/</style></p><div class="toc-macro rbtoc1456773683348">
<ul class="toc-indentation"><li><a shape="rect"
href="#FileUpload-Dependencies">Dependencies</a></li><li><a shape="rect"
href="#FileUpload-BasicUsage">Basic Usage</a></li><li><a shape="rect"
href="#FileUpload-UploadingMultipleFiles">Uploading Multiple Files</a>
<ul class="toc-indentation"><li><a shape="rect"
href="#FileUpload-UploadingMultipleFilesusingArrays">Uploading Multiple Files
using Arrays</a></li><li><a shape="rect"
href="#FileUpload-UploadingMultipleFilesusingLists">Uploading Multiple Files
using Lists</a></li></ul>
</li><li><a shape="rect" href="#FileUpload-AdvancedConfiguration">Advanced
Configuration</a>
Modified: websites/production/struts/content/docs/form-tags.html
==============================================================================
--- websites/production/struts/content/docs/form-tags.html (original)
+++ websites/production/struts/content/docs/form-tags.html Mon Feb 29 19:38:05
2016
@@ -148,7 +148,7 @@ under the License.
<h2 id="FormTags-TooltipRelatedAttributes">Tooltip Related Attributes</h2>
<p><table border="1" summary=""><tr><td colspan="1"
rowspan="1">Attribute</td><td colspan="1" rowspan="1">Data Type</td><td
colspan="1" rowspan="1">Default</td><td colspan="1"
rowspan="1">Description</td></tr><tr><td colspan="1"
rowspan="1">tooltip</td><td colspan="1" rowspan="1">String</td><td colspan="1"
rowspan="1">none</td><td colspan="1" rowspan="1">Set the tooltip of this
particular component</td></tr><tr><td colspan="1"
rowspan="1">jsTooltipEnabled</td><td colspan="1" rowspan="1">String</td><td
colspan="1" rowspan="1">false</td><td colspan="1" rowspan="1">Enable js tooltip
rendering</td></tr><tr><td colspan="1" rowspan="1">tooltipIcon</td><td
colspan="1" rowspan="1">String</td><td colspan="1"
rowspan="1">/struts/static/tooltip/tooltip.gif</td><td colspan="1"
rowspan="1">The url to the tooltip icon</td></tr><tr><td colspan="1"
rowspan="1">tooltipDelay</td><td colspan="1" rowspan="1">String</td><td
colspan="1" rowspan="1">500</td><td colspan="1" rowspan="1">Tooltip shows up aft
er the specified timeout (miliseconds). A behavior similar to that of OS based
tooltips.</td></tr><tr><td colspan="1" rowspan="1">key</td><td colspan="1"
rowspan="1">simple</td><td colspan="1" rowspan="1">String</td><td colspan="1"
rowspan="1">The name of the property this input field represents. This will
auto populate the name, label, and value</td></tr></table></p>
<h2 id="FormTags-GeneralAttributes">General Attributes</h2>
-<p><table border="1" summary=""><thead><tr><td colspan="1"
rowspan="1">Attribute</td><td colspan="1" rowspan="1">Theme</td><td colspan="1"
rowspan="1">Data Types</td><td colspan="1"
rowspan="1">Description</td></tr></thead><tbody><tr><td colspan="1"
rowspan="1">cssClass</td><td colspan="1" rowspan="1">simple</td><td colspan="1"
rowspan="1">String</td><td colspan="1" rowspan="1">define html class
attribute</td></tr><tr><td colspan="1" rowspan="1">cssStyle</td><td colspan="1"
rowspan="1">simple</td><td colspan="1" rowspan="1">String</td><td colspan="1"
rowspan="1">define html style attribute</td></tr><tr><td colspan="1"
rowspan="1">cssClass</td><td colspan="1" rowspan="1">simple</td><td colspan="1"
rowspan="1">String</td><td colspan="1" rowspan="1">error class
attribute</td></tr><tr><td colspan="1" rowspan="1">cssStyle</td><td colspan="1"
rowspan="1">simple</td><td colspan="1" rowspan="1">String</td><td colspan="1"
rowspan="1">error style attribute</td></tr><tr><td colspan="1" rowspan
="1">title</td><td colspan="1" rowspan="1">simple</td><td colspan="1"
rowspan="1">String</td><td colspan="1" rowspan="1">define html title
attribute</td></tr><tr><td colspan="1" rowspan="1">disabled</td><td colspan="1"
rowspan="1">simple</td><td colspan="1" rowspan="1">String</td><td colspan="1"
rowspan="1">define html disabled attribute</td></tr><tr><td colspan="1"
rowspan="1">label</td><td colspan="1" rowspan="1">xhtml</td><td colspan="1"
rowspan="1">String</td><td colspan="1" rowspan="1">define label of form
element</td></tr><tr><td colspan="1" rowspan="1">labelPosition</td><td
colspan="1" rowspan="1">xhtml</td><td colspan="1" rowspan="1">String</td><td
colspan="1" rowspan="1">define label position of form element (top/left),
default to left</td></tr><tr><td colspan="1"
rowspan="1">requiredPosition</td><td colspan="1" rowspan="1">xhtml</td><td
colspan="1" rowspan="1">String</td><td colspan="1" rowspan="1">define required
label position of form element (left/right), default to rig
ht</td></tr><tr><td colspan="1" rowspan="1">errorPosition</td><td colspan="1"
rowspan="1">xhtml</td><td colspan="1" rowspan="1">String</td><td colspan="1"
rowspan="1">define error position of form element (top|bottom), default to
top</td></tr><tr><td colspan="1" rowspan="1">name</td><td colspan="1"
rowspan="1">simple</td><td colspan="1" rowspan="1">String</td><td colspan="1"
rowspan="1">Form Element's field name mapping</td></tr><tr><td colspan="1"
rowspan="1">required</td><td colspan="1" rowspan="1">xhtml</td><td colspan="1"
rowspan="1">Boolean</td><td colspan="1" rowspan="1">add * to label (true to add
false otherwise)</td></tr><tr><td colspan="1" rowspan="1">tabIndex</td><td
colspan="1" rowspan="1">simple</td><td colspan="1" rowspan="1">String</td><td
colspan="1" rowspan="1">define html tabindex attribute</td></tr><tr><td
colspan="1" rowspan="1">value</td><td colspan="1" rowspan="1">simple</td><td
colspan="1" rowspan="1">Object</td><td colspan="1" rowspan="1">define value of
form
element</td></tr></tbody></table></p>
+<p><table border="1" summary=""><thead><tr><td colspan="1"
rowspan="1">Attribute</td><td colspan="1" rowspan="1">Theme</td><td colspan="1"
rowspan="1">Data Types</td><td colspan="1"
rowspan="1">Description</td></tr></thead><tbody><tr><td colspan="1"
rowspan="1">cssClass</td><td colspan="1" rowspan="1">simple</td><td colspan="1"
rowspan="1">String</td><td colspan="1" rowspan="1">define html class
attribute</td></tr><tr><td colspan="1" rowspan="1">cssStyle</td><td colspan="1"
rowspan="1">simple</td><td colspan="1" rowspan="1">String</td><td colspan="1"
rowspan="1">define html style attribute</td></tr><tr><td colspan="1"
rowspan="1">cssErrorClass</td><td colspan="1" rowspan="1">simple</td><td
colspan="1" rowspan="1">String</td><td colspan="1" rowspan="1">error class
attribute</td></tr><tr><td colspan="1" rowspan="1">cssErrorStyle</td><td
colspan="1" rowspan="1">simple</td><td colspan="1" rowspan="1">String</td><td
colspan="1" rowspan="1">error style attribute</td></tr><tr><td colspan="
1" rowspan="1">title</td><td colspan="1" rowspan="1">simple</td><td
colspan="1" rowspan="1">String</td><td colspan="1" rowspan="1">define html
title attribute</td></tr><tr><td colspan="1" rowspan="1">disabled</td><td
colspan="1" rowspan="1">simple</td><td colspan="1" rowspan="1">String</td><td
colspan="1" rowspan="1">define html disabled attribute</td></tr><tr><td
colspan="1" rowspan="1">label</td><td colspan="1" rowspan="1">xhtml</td><td
colspan="1" rowspan="1">String</td><td colspan="1" rowspan="1">define label of
form element</td></tr><tr><td colspan="1" rowspan="1">labelPosition</td><td
colspan="1" rowspan="1">xhtml</td><td colspan="1" rowspan="1">String</td><td
colspan="1" rowspan="1">define label position of form element (top/left),
default to left</td></tr><tr><td colspan="1"
rowspan="1">requiredPosition</td><td colspan="1" rowspan="1">xhtml</td><td
colspan="1" rowspan="1">String</td><td colspan="1" rowspan="1">define required
label position of form element (left/right), defa
ult to right</td></tr><tr><td colspan="1" rowspan="1">errorPosition</td><td
colspan="1" rowspan="1">xhtml</td><td colspan="1" rowspan="1">String</td><td
colspan="1" rowspan="1">define error position of form element (top|bottom),
default to top</td></tr><tr><td colspan="1" rowspan="1">name</td><td
colspan="1" rowspan="1">simple</td><td colspan="1" rowspan="1">String</td><td
colspan="1" rowspan="1">Form Element's field name mapping</td></tr><tr><td
colspan="1" rowspan="1">required</td><td colspan="1" rowspan="1">xhtml</td><td
colspan="1" rowspan="1">Boolean</td><td colspan="1" rowspan="1">add * to label
(true to add false otherwise)</td></tr><tr><td colspan="1"
rowspan="1">tabIndex</td><td colspan="1" rowspan="1">simple</td><td colspan="1"
rowspan="1">String</td><td colspan="1" rowspan="1">define html tabindex
attribute</td></tr><tr><td colspan="1" rowspan="1">value</td><td colspan="1"
rowspan="1">simple</td><td colspan="1" rowspan="1">Object</td><td colspan="1"
rowspan="1">define val
ue of form element</td></tr></tbody></table></p>
<div class="confluence-information-macro confluence-information-macro-note"><p
class="title">When some attributes don't apply</p><span class="aui-icon
aui-icon-small aui-iconfont-warning
confluence-information-macro-icon"></span><div
class="confluence-information-macro-body"><p>Some tag attributes may not be
utilized by all, or any, of the templates. For example, the form tag supports
the <code>tabindex</code> attribute, but none of the themes render the
<code>tabindex</code>.</p></div></div><h2
id="FormTags-Value/NameRelationship">Value/Name Relationship</h2><p>In many of
the tags (except for the form tag) there is a unique relationship between the
<code>name</code> and <code>value</code> attributes. The <code>name</code>
attribute provides the name for the tag, which in turn is used as the control
attribute when the form is submitted. The value submitted is bound to the
<code>name</code>. In most cases, the <code>name</code> maps to a simple
JavaBean property, such as "postalCode"
. On a submit, the value would be set to the property by calling the
<code>setPostalCode</code> mutator.</p><p>Likewise, a form control could be
populated by calling a JavaBean accessor, like <code>getPostalCode</code>. In
the expression language, we can refer to the JavaBean property by name. An
expression like "%{postalCode}" would in turn call
<code>getPostalCode</code>.</p><div class="code panel pdl" style="border-width:
1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width:
1px;"><b>Using Expressions to populate a form for editing</b></div><div
class="codeContent panelContent pdl">
<pre class="brush: xml; gutter: false; theme: Default"
style="font-size:12px;"><@s.form action="updateAddress">
<@s.textfield label="Postal Code" name="postalCode"
value="%{postalCode}"/>
Modified: websites/production/struts/content/docs/freemarker.html
==============================================================================
--- websites/production/struts/content/docs/freemarker.html (original)
+++ websites/production/struts/content/docs/freemarker.html Mon Feb 29 19:38:05
2016
@@ -139,11 +139,11 @@ under the License.
<div class="pagecontent">
<div class="wiki-content">
<div id="ConfluenceContent"><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1453884162352 {padding: 0px;}
-div.rbtoc1453884162352 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1453884162352 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1456773315678 {padding: 0px;}
+div.rbtoc1456773315678 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1456773315678 li {margin-left: 0px;padding-left: 0px;}
-/*]]>*/</style></p><div class="toc-macro rbtoc1453884162352">
+/*]]>*/</style></p><div class="toc-macro rbtoc1456773315678">
<ul class="toc-indentation"><li><a shape="rect"
href="#FreeMarker-GettingStarted">Getting Started</a></li><li><a shape="rect"
href="#FreeMarker-Servlet/JSPScopedObjects">Servlet / JSP Scoped Objects</a>
<ul class="toc-indentation"><li><a shape="rect"
href="#FreeMarker-ApplicationScopeAttribute">Application Scope
Attribute</a></li><li><a shape="rect"
href="#FreeMarker-SessionScopeAttribute">Session Scope Attribute</a></li><li><a
shape="rect" href="#FreeMarker-RequestScopeAttribute">Request Scope
Attribute</a></li><li><a shape="rect"
href="#FreeMarker-RequestParameter">Request Parameter</a></li><li><a
shape="rect" href="#FreeMarker-Contextparameter">Context parameter</a></li></ul>
</li><li><a shape="rect" href="#FreeMarker-TemplateLoading">Template
Loading</a></li><li><a shape="rect"
href="#FreeMarker-VariableResolution">Variable Resolution</a></li><li><a
shape="rect" href="#FreeMarker-TagSupport">Tag Support</a></li><li><a
shape="rect" href="#FreeMarker-TipsandTricks">Tips and Tricks</a>
Modified: websites/production/struts/content/docs/guides.html
==============================================================================
--- websites/production/struts/content/docs/guides.html (original)
+++ websites/production/struts/content/docs/guides.html Mon Feb 29 19:38:05 2016
@@ -125,7 +125,7 @@ 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="confluence-information-macro
confluence-information-macro-information"><span class="aui-icon aui-icon-small
aui-iconfont-info confluence-information-macro-icon"></span><div
class="confluence-information-macro-body"><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-CoreDevelopersGuidehttps://cwiki.apache.org/confluence/pages/viewpage.action?pageId=13945"><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">re
sults</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">A
ctions</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/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.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="https://depressedprogrammer.wordpress.com/2007/06/18/unit-testing-struts-2-actions-sprin
g-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">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-TagDevelopersGuidehttps://cwiki.apache.org/confluence/
pages/viewpage.action?pageId=14324"><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.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 shap
e="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-PluginDevelopersGuidehttps://cwiki.apache.org/confluence/pages/viewpage.action?pageId=44163"><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 wit
h 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><h3
id="Guides-BundledPlugins">Bundled Plugins</h3><div class="table-wrap"><table
class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1"
class="confluenceTd"><ul><li><a shape="rect"
href="bean-validation-plugin.html">Bean Validation Plugin</a> (2.5+)</li><li><a
shape="rect" href="cdi-plugin.html">CDI (JSR 299) Plugin</a>
(2.3.1+)</li><li><a shape="rect" href="codebehind-plugin.html">Codebehind
Plugin</a> (<strong>< 2.5</strong>)</li><li><a shape="rect"
href="config-browser-plugin.html">Config Browser Plugin</a></li><li><a
shape="rect" href="convention-plugin.html">Convention Plugin</a>
(2.1.3+)</li><li><a shape="rect" href="dwr-plugin.html">DWR
Plugin</a></li><li><a shap
e="rect" href="embedded-jsp-plugin.html">Embedded JSP Plugin</a>
(2.1.7+)</li><li><a shape="rect" href="jasperreports-plugin.html">JasperReports
Plugin</a></li><li><a shape="rect" href="java-8-support-plugin.html">Java 8
Support Plugin</a> (2.3.21+)</li><li><a shape="rect"
href="javatemplates-plugin.html">Javatemplates Plugin</a> (2.1.3+)</li><li><a
shape="rect" href="jfreechart-plugin.html">JFreeChart Plugin</a></li><li><a
shape="rect" href="jsf-plugin.html">JSF Plugin</a> <span>(</span><strong><
2.5</strong><span>)</span></li><li><a shape="rect" href="json-plugin.html">JSON
Plugin</a> (2.1.7+)</li><li><a shape="rect" href="junit-plugin.html">JUnit
Plugin</a></li></ul></td><td colspan="1" rowspan="1"
class="confluenceTd"><ul><li><a shape="rect" href="oval-plugin.html">OVal
Plugin</a> (2.1.7+)</li><li><a shape="rect" href="osgi-plugin.html">OSGi
Plugin</a> (2.1.7+)</li><li><a shape="rect" href="plexus-plugin.html">Plexus
Plugin</a></li><li><a shape="rect" href="portlet-plugin.htm
l">Portlet Plugin</a></li><li><a shape="rect"
href="portlet-tiles-plugin.html">Portlet Tiles Plugin</a> (2.3.5+)</li><li><a
shape="rect" href="rest-plugin.html">REST Plugin</a> (2.1.1+)</li><li><a
shape="rect" href="sitegraph-plugin.html">SiteGraph Plugin</a></li><li><a
shape="rect" href="sitemesh-plugin.html">SiteMesh Plugin</a></li><li><a
shape="rect" href="spring-plugin.html">Spring Plugin</a></li><li><a
shape="rect" href="struts-1-plugin.html">Struts 1 Plugin</a>
<span>(</span><strong>< 2.5</strong><span>)</span></li><li><a shape="rect"
href="testng-plugin.html">TestNG Plugin</a></li><li><a shape="rect"
href="tiles-2-plugin.html">Tiles 2 Plugin</a></li><li><a shape="rect"
href="tiles-3-plugin.html">Tiles 3
Plugin</a></li></ul></td></tr></tbody></table></div><p><img class="emoticon
emoticon-tick"
src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png"
data-emoticon-name="tick" alt="(tick)"> For a comp
lete 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-ArchitectsGuidehttps://cwiki.apache.org/confluence/pages/viewpage.action?pageId=45478"><a
shape="rect" href="architects-guide.html">Architects Guide</a></h2><p>
+ <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="confluence-information-macro
confluence-information-macro-information"><span class="aui-icon aui-icon-small
aui-iconfont-info confluence-information-macro-icon"></span><div
class="confluence-information-macro-body"><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-CoreDevelopersGuidehttps://cwiki.apache.org/confluence/pages/viewpage.action?pageId=13945"><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">re
sults</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">A
ctions</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/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.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="https://depressedprogrammer.wordpress.com/2007/06/18/unit-testing-struts-2-actions-sprin
g-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">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-TagDevelopersGuidehttps://cwiki.apache.org/confluence/
pages/viewpage.action?pageId=14324"><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.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 shap
e="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-PluginDevelopersGuidehttps://cwiki.apache.org/confluence/pages/viewpage.action?pageId=44163"><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 wit
h 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><h3
id="Guides-BundledPlugins">Bundled Plugins</h3><div class="table-wrap"><table
class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1"
class="confluenceTd"><ul><li><a shape="rect"
href="bean-validation-plugin.html">Bean Validation Plugin</a> (2.5+)</li><li><a
shape="rect" href="cdi-plugin.html">CDI (JSR 299) Plugin</a>
(2.3.1+)</li><li><a shape="rect" href="codebehind-plugin.html">Codebehind
Plugin</a> (<strong>< 2.5</strong>)</li><li><a shape="rect"
href="config-browser-plugin.html">Config Browser Plugin</a></li><li><a
shape="rect" href="convention-plugin.html">Convention Plugin</a>
(2.1.3+)</li><li><a shape="rect" href="dwr-plugin.html">DWR
Plugin</a></li><li><a shap
e="rect" href="embedded-jsp-plugin.html">Embedded JSP Plugin</a>
(2.1.7+)</li><li><a shape="rect" href="jasperreports-plugin.html">JasperReports
Plugin</a></li><li><a shape="rect" href="java-8-support-plugin.html">Java 8
Support Plugin</a> (2.3.21+)</li><li><a shape="rect"
href="javatemplates-plugin.html">Javatemplates Plugin</a> (2.1.3+)</li><li><a
shape="rect" href="jfreechart-plugin.html">JFreeChart Plugin</a></li><li><a
shape="rect" href="jsf-plugin.html">JSF Plugin</a> <span>(</span><strong><
2.5</strong><span>)</span></li><li><a shape="rect" href="json-plugin.html">JSON
Plugin</a> (2.1.7+)</li><li><a shape="rect" href="junit-plugin.html">JUnit
Plugin</a></li></ul></td><td colspan="1" rowspan="1"
class="confluenceTd"><ul><li><a shape="rect" href="oval-plugin.html">OVal
Plugin</a> (2.1.7+)</li><li><a shape="rect" href="osgi-plugin.html">OSGi
Plugin</a> (2.1.7+)</li><li><a shape="rect" href="plexus-plugin.html">Plexus
Plugin</a></li><li><a shape="rect" href="portlet-plugin.htm
l">Portlet Plugin</a></li><li><a shape="rect"
href="portlet-tiles-plugin.html">Portlet Tiles Plugin</a> (2.3.5+)</li><li><a
shape="rect" href="rest-plugin.html">REST Plugin</a> (2.1.1+)</li><li><a
shape="rect" href="sitegraph-plugin.html">SiteGraph Plugin</a></li><li><a
shape="rect" href="sitemesh-plugin.html">SiteMesh Plugin</a></li><li><a
shape="rect" href="spring-plugin.html">Spring Plugin</a></li><li><a
shape="rect" href="struts-1-plugin.html">Struts 1 Plugin</a>
<span>(</span><strong>< 2.5</strong><span>)</span></li><li><a shape="rect"
href="testng-plugin.html">TestNG Plugin</a></li><li><a shape="rect"
href="tiles-plugin.html">Tiles Plugin</a></li><li><a shape="rect"
href="tiles-3-plugin.html">Tiles 3 Plugin</a> <span>(</span><strong><
2.5</strong><span>)</span></li></ul></td></tr></tbody></table></div><p><img
class="emoticon emoticon-tick"
src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.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-ArchitectsGuidehttps://cwiki.apache.org/confluence/pages/viewpage.action?pageId=45478"><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-MigrationGuidehttps://cwiki.apache.org/confluence/pages/viewpage.action?pageId=13981"><a
shape="rect" href="migration-guide.html">Migration Guide</a></h2><p>Getting
here from there.</p><h3 id="Guides-VersionNotes2.5.x">Version Notes
2.5.x</h3><ul><li><a shape="rect" href="version-notes-25.html">Version Notes
2.5</a></li></ul><h3 id="Guides-VersionNotes2.3.x">Version Notes
2.3.x</h3><ul><li><a shape="rect" href="version-notes-23241.html">Version Notes
2.3.24.1</a></li><li><a shape="rect" href="version-notes-2324.html">Version
Notes 2.3.24</a></li><li><a shape="rect"
href="version-notes-23201.html">Version Notes 2.3.20.1</a></li><li><a
shape="rect" href="version-notes-2320.html">Version Notes 2.3.20</a></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 s
hape="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="ve
rsion-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="r
ect" 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></l
i><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" rowsp
an="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.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" rowsp
an="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-ContributorsGuidehttps://cwiki.apache.org/confluence/pages/viewpage.action?pageId=14041"><a
shape="rect" href="contributors-guide.html">Contributors Guide</a></h2><p>
Modified:
websites/production/struts/content/docs/how-to-build-the-portlet-war-for-a-specific-portal-server.html
==============================================================================
---
websites/production/struts/content/docs/how-to-build-the-portlet-war-for-a-specific-portal-server.html
(original)
+++
websites/production/struts/content/docs/how-to-build-the-portlet-war-for-a-specific-portal-server.html
Mon Feb 29 19:38:05 2016
@@ -146,7 +146,7 @@ under the License.
<ul><li>Use the <code>container</code> system property to target a specific
container, e.g. '-Dcontainer=exo'.
- <ul><li>Several containers are <a shape="rect" class="createlink"
href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&title=Which%2Bportal%2Bservers%2Bare%2Bsupported&linkCreation=true&fromPageId=14159">supported</a>.</li><li>Example
command:
+ <ul><li>Several containers are <a shape="rect" class="unresolved"
href="#">supported</a>.</li><li>Example command:
<ul><li><div class="code panel pdl" style="border-width:
1px;"><div class="codeContent panelContent pdl">
<pre class="brush: java; gutter: false; theme: Default"
style="font-size:12px;">
ant build-portlet \-Dcontainer=jboss-portal-2.2
Modified: websites/production/struts/content/docs/interceptors.html
==============================================================================
--- websites/production/struts/content/docs/interceptors.html (original)
+++ websites/production/struts/content/docs/interceptors.html Mon Feb 29
19:38:05 2016
@@ -139,11 +139,11 @@ under the License.
<div class="pagecontent">
<div class="wiki-content">
<div id="ConfluenceContent"><div
class="confluence-information-macro confluence-information-macro-tip"><span
class="aui-icon aui-icon-small aui-iconfont-approve
confluence-information-macro-icon"></span><div
class="confluence-information-macro-body"><p>The default Interceptor stack is
designed to serve the needs of most applications. Most applications will
<strong>not</strong> need to add Interceptors or change the Interceptor
stack.</p></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 invocatio
n 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.rbtoc1453884069963 {padding: 0px;}
-div.rbtoc1453884069963 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1453884069963 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1456773217225 {padding: 0px;}
+div.rbtoc1456773217225 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1456773217225 li {margin-left: 0px;padding-left: 0px;}
-/*]]>*/</style></p><div class="toc-macro rbtoc1453884069963">
+/*]]>*/</style></p><div class="toc-macro rbtoc1456773217225">
<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/docs/json-plugin.html
==============================================================================
--- websites/production/struts/content/docs/json-plugin.html (original)
+++ websites/production/struts/content/docs/json-plugin.html Mon Feb 29
19:38:05 2016
@@ -150,7 +150,7 @@ under the License.
"array": [10, 20]
}
</pre>
-</div></div><p>The action must have a "setDoubleValue" method, taking either a
"float" or a "double" argument (the interceptor will convert the value to the
right one). There must be a "setNestedBean" whose argument type can be any
class, that has a "setName" method taking as argument an "String". There must
be a "setList" method that takes a "List" as argument, that list will contain:
"A" (String), 10 (Long), 20.20 (Double), Map ("firstName" -> "El Zorro").
The "setArray" method can take as parameter either a "List", or any numeric
array.</p><div class="confluence-information-macro
confluence-information-macro-tip"><span class="aui-icon aui-icon-small
aui-iconfont-approve confluence-information-macro-icon"></span><div
class="confluence-information-macro-body"><p>So serialize your objects to JSON
in javascript see <a shape="rect" class="external-link"
href="http://json.org/json2.js" rel="nofollow">json2</a>.</p></div></div><div
class="confluence-information-macro confluence-infor
mation-macro-note"><span class="aui-icon aui-icon-small aui-iconfont-warning
confluence-information-macro-icon"></span><div
class="confluence-information-macro-body"><p><code>root</code> attribute must
be set on the JSONInterceptor when dealing with JSON array.</p></div></div><h2
id="JSONPlugin-Installation">Installation</h2><p>This plugin can be installed
by copying the plugin jar into your application's <code>/WEB-INF/lib</code>
directory. No other files need to be copied or created.</p><p>To use maven, add
this to your pom:</p><div class="code panel pdl" style="border-width:
1px;"><div class="codeContent panelContent pdl">
+</div></div><p>The action must have a "setDoubleValue" method, taking either a
"float" or a "double" argument (the interceptor will convert the value to the
right one). There must be a "setNestedBean" whose argument type can be any
class, that has a "setName" method taking as argument an "String". There must
be a "setList" method that takes a "List" as argument, that list will contain:
"A" (String), 10 (Long), 20.20 (Double), Map ("firstName" -> "El Zorro").
The "setArray" method can take as parameter either a "List", or any numeric
array.</p><div class="confluence-information-macro
confluence-information-macro-tip"><span class="aui-icon aui-icon-small
aui-iconfont-approve confluence-information-macro-icon"></span><div
class="confluence-information-macro-body"><p>So serialize your objects to JSON
in javascript see <a shape="rect" class="external-link"
href="http://json.org/json2.js" rel="nofollow">json2</a>.</p></div></div><div
class="confluence-information-macro confluence-infor
mation-macro-note"><span class="aui-icon aui-icon-small aui-iconfont-warning
confluence-information-macro-icon"></span><div
class="confluence-information-macro-body"><p><code>root</code> attribute must
be set on the JSONInterceptor when dealing with JSON array.</p></div></div><div
class="confluence-information-macro confluence-information-macro-tip"><span
class="aui-icon aui-icon-small aui-iconfont-approve
confluence-information-macro-icon"></span><div
class="confluence-information-macro-body"><p>This plugin also provides <a
shape="rect" href="ajax-validation.html">AJAX
Validation</a>.</p></div></div><h2
id="JSONPlugin-Installation">Installation</h2><p>This plugin can be installed
by copying the plugin jar into your application's <code>/WEB-INF/lib</code>
directory. No other files need to be copied or created.</p><p>To use maven, add
this to your pom:</p><div class="code panel pdl" style="border-width:
1px;"><div class="codeContent panelContent pdl">
<pre class="brush: xml; gutter: false; theme: Default"
style="font-size:12px;"><dependencies>
...
<dependency>
@@ -218,7 +218,7 @@ under the License.
<param
name="wrapSuffix"><![CDATA[</textarea></body></html>]]></param>
</result>
</pre>
-</div></div><h3 id="JSONPlugin-WrapwithComments">Wrap with Comments</h3><div
class="confluence-information-macro confluence-information-macro-warning"><span
class="aui-icon aui-icon-small aui-iconfont-error
confluence-information-macro-icon"></span><div
class="confluence-information-macro-body"><p><em>wrapWithComments</em> is
deprecated from 0.34, use <em>wrapPrefix</em> and <em>wrapSuffix</em>
instead.</p></div></div><div class="confluence-information-macro
confluence-information-macro-warning"><span class="aui-icon aui-icon-small
aui-iconfont-error confluence-information-macro-icon"></span><div
class="confluence-information-macro-body"><p><em>wrapWithComments</em> can turn
safe JSON text into dangerous text. For example,</p><p><a shape="rect"
class="createlink"
href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&title=%22*%2F+alert%28%27XSS%27%29%3B+%2F*%22&linkCreation=true&fromPageId=2850922">"*/
alert('XSS'); /*"</a></p><p>Thanks to Douglas
Crockford for the tip!. Consider using <strong>prefix</strong>
instead.</p></div></div><p>If the serialized JSON is <em>{name: 'El
Zorro'}</em>. Then the output will be: <em>{}&& ({name: 'El
Zorro'}</em></p><p>If the "wrapWithComments" (false by default) attribute is
set to true, the generated JSON is wrapped with comments like:</p><div
class="code panel pdl" style="border-width: 1px;"><div class="codeContent
panelContent pdl">
+</div></div><h3 id="JSONPlugin-WrapwithComments">Wrap with Comments</h3><div
class="confluence-information-macro confluence-information-macro-warning"><span
class="aui-icon aui-icon-small aui-iconfont-error
confluence-information-macro-icon"></span><div
class="confluence-information-macro-body"><p><em>wrapWithComments</em> is
deprecated from 0.34, use <em>wrapPrefix</em> and <em>wrapSuffix</em>
instead.</p></div></div><div class="confluence-information-macro
confluence-information-macro-warning"><span class="aui-icon aui-icon-small
aui-iconfont-error confluence-information-macro-icon"></span><div
class="confluence-information-macro-body"><p><em>wrapWithComments</em> can turn
safe JSON text into dangerous text. For example,</p><p><a shape="rect"
class="unresolved" href="#">"*/ alert('XSS'); /*"</a></p><p>Thanks to Douglas
Crockford for the tip!. Consider using <strong>prefix</strong>
instead.</p></div></div><p>If the serialized JSON is <em>{name: 'El
Zorro'}</em>. Then the output wil
l be: <em>{}&& ({name: 'El Zorro'}</em></p><p>If the
"wrapWithComments" (false by default) attribute is set to true, the generated
JSON is wrapped with comments like:</p><div class="code panel pdl"
style="border-width: 1px;"><div class="codeContent panelContent pdl">
<pre class="brush: java; gutter: false; theme: Default"
style="font-size:12px;">/* {
"doubleVal": 10.10,
"nestedBean": {
Modified: websites/production/struts/content/docs/localization.html
==============================================================================
--- websites/production/struts/content/docs/localization.html (original)
+++ websites/production/struts/content/docs/localization.html Mon Feb 29
19:38:05 2016
@@ -139,11 +139,11 @@ under the License.
<div class="pagecontent">
<div class="wiki-content">
<div id="ConfluenceContent"><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1453884138831 {padding: 0px;}
-div.rbtoc1453884138831 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1453884138831 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1456773287474 {padding: 0px;}
+div.rbtoc1456773287474 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1456773287474 li {margin-left: 0px;padding-left: 0px;}
-/*]]>*/</style></p><div class="toc-macro rbtoc1453884138831">
+/*]]>*/</style></p><div class="toc-macro rbtoc1456773287474">
<ul class="toc-indentation"><li><a shape="rect"
href="#Localization-Overview">Overview</a></li><li><a shape="rect"
href="#Localization-ResourceBundleSearchOrder">Resource Bundle Search Order</a>
<ul class="toc-indentation"><li><a shape="rect"
href="#Localization-Defaultaction'sclass">Default action's class</a></li><li><a
shape="rect" href="#Localization-UsinggetTextfromaTag">Using getText from a
Tag</a></li><li><a shape="rect" href="#Localization-Usingthetexttag">Using the
text tag</a></li><li><a shape="rect" href="#Localization-UsingtheI18ntag">Using
the I18n tag</a></li><li><a shape="rect"
href="#Localization-UsingtheKeyattributeofUITags">Using the Key attribute of UI
Tags</a></li></ul>
</li><li><a shape="rect" href="#Localization-I18nInterceptor">I18n
Interceptor</a></li><li><a shape="rect"
href="#Localization-GlobalResources(struts.custom.i18n.resources)instruts.properties">Global
Resources (struts.custom.i18n.resources) in struts.properties</a></li><li><a
shape="rect" href="#Localization-FormattingDatesandNumbers">Formatting Dates
and Numbers</a></li><li><a shape="rect"
href="#Localization-ComparisonwithStruts1">Comparison with Struts
1</a></li><li><a shape="rect" href="#Localization-Next:">Next: Type
Conversion</a></li></ul>