Modified: websites/production/struts/content/docs/iterator.html
==============================================================================
--- websites/production/struts/content/docs/iterator.html (original)
+++ websites/production/struts/content/docs/iterator.html Wed Jan 27 09:26:50
2016
@@ -151,7 +151,7 @@ java.util.Enumeration, java.util.Map, or
<h1 id="iterator-Parameters">Parameters</h1>
-<p><table width="100%"><tr><td colspan="6" rowspan="1"><h4>Dynamic Attributes
Allowed:</h4> false</td></tr><tr><td colspan="6"
rowspan="1"> </td></tr><tr><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Name</h4></th><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Required</h4></th><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Default</h4></th><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Evaluated</h4></th><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Type</h4></th><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Description</h4></th></tr><tr><td align="left" colspan="1"
rowspan="1" valign="top">begin</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">0</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">Integer</td><td align="left" colspan="1" rowspan="1"
valign="top">if spe
cified the iteration will start on that index</td></tr><tr><td align="left"
colspan="1" rowspan="1" valign="top">end</td><td align="left" colspan="1"
rowspan="1" valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">Size of the 'values' List or array, or 0 if 'step' is
negative</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">Integer</td><td align="left" colspan="1" rowspan="1"
valign="top">if specified the iteration will end on that
index(inclusive)</td></tr><tr><td align="left" colspan="1" rowspan="1"
valign="top">id</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top"></td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">String</td><td align="left" colspan="1" rowspan="1"
valign="top">Deprecated. Use 'var' instead</td></tr><tr><td align="left" colspa
n="1" rowspan="1" valign="top">status</td><td align="left" colspan="1"
rowspan="1" valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">Boolean</td><td align="left" colspan="1" rowspan="1"
valign="top">If specified, an instanceof IteratorStatus will be pushed into
stack upon each iteration</td></tr><tr><td align="left" colspan="1" rowspan="1"
valign="top">step</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">1</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">Integer</td><td align="left" colspan="1" rowspan="1"
valign="top">if specified the iteration index will be increased by this value
on each iteration. It can be a negative value, in which case 'begin' must be
greater than 'end'</td></tr>
<tr><td align="left" colspan="1" rowspan="1" valign="top">value</td><td
align="left" colspan="1" rowspan="1" valign="top">false</td><td align="left"
colspan="1" rowspan="1" valign="top"></td><td align="left" colspan="1"
rowspan="1" valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">String</td><td align="left" colspan="1" rowspan="1"
valign="top">the iteratable source to iterate over, else an the object itself
will be put into a newly created List</td></tr><tr><td align="left" colspan="1"
rowspan="1" valign="top">var</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top"></td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">String</td><td align="left" colspan="1" rowspan="1"
valign="top">Name used to reference the value pushed into the Value
Stack</td></tr></table></p>
+<p><table width="100%"><tr><td colspan="6" rowspan="1"><h4>Dynamic Attributes
Allowed:</h4> false</td></tr><tr><td colspan="6"
rowspan="1"> </td></tr><tr><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Name</h4></th><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Required</h4></th><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Default</h4></th><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Evaluated</h4></th><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Type</h4></th><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Description</h4></th></tr><tr><td align="left" colspan="1"
rowspan="1" valign="top">begin</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">0</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">Integer</td><td align="left" colspan="1" rowspan="1"
valign="top">if spe
cified the iteration will start on that index</td></tr><tr><td align="left"
colspan="1" rowspan="1" valign="top">end</td><td align="left" colspan="1"
rowspan="1" valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">Size of the 'values' List or array, or 0 if 'step' is
negative</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">Integer</td><td align="left" colspan="1" rowspan="1"
valign="top">if specified the iteration will end on that
index(inclusive)</td></tr><tr><td align="left" colspan="1" rowspan="1"
valign="top">status</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">Boolean</td><td align="left" colspan="1" rowspan="1"
valign="top">If specified, an instanceof IteratorStatus will be pushe
d into stack upon each iteration</td></tr><tr><td align="left" colspan="1"
rowspan="1" valign="top">step</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">1</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">Integer</td><td align="left" colspan="1" rowspan="1"
valign="top">if specified the iteration index will be increased by this value
on each iteration. It can be a negative value, in which case 'begin' must be
greater than 'end'</td></tr><tr><td align="left" colspan="1" rowspan="1"
valign="top">value</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top"></td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">String</td><td align="left" colspan="1" rowspan="1"
valign="top">the iteratable source to iterate ove
r, else an the object itself will be put into a newly created
List</td></tr><tr><td align="left" colspan="1" rowspan="1"
valign="top">var</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top"></td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">String</td><td align="left" colspan="1" rowspan="1"
valign="top">Name used to reference the value pushed into the Value
Stack</td></tr></table></p>
<h1 id="iterator-Examples">Examples</h1>
Modified: websites/production/struts/content/docs/localization.html
==============================================================================
--- websites/production/struts/content/docs/localization.html (original)
+++ websites/production/struts/content/docs/localization.html Wed Jan 27
09:26:50 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.rbtoc1441088113804 {padding: 0px;}
-div.rbtoc1441088113804 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1441088113804 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1453884138831 {padding: 0px;}
+div.rbtoc1453884138831 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1453884138831 li {margin-left: 0px;padding-left: 0px;}
-/*]]>*/</style></p><div class="toc-macro rbtoc1441088113804">
+/*]]>*/</style></p><div class="toc-macro rbtoc1453884138831">
<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>
Modified: websites/production/struts/content/docs/merge.html
==============================================================================
--- websites/production/struts/content/docs/merge.html (original)
+++ websites/production/struts/content/docs/merge.html Wed Jan 27 09:26:50 2016
@@ -156,7 +156,7 @@ be the logic.</p>
<h2 id="merge-Parameters">Parameters</h2>
-<p><table width="100%"><tr><td colspan="6" rowspan="1"><h4>Dynamic Attributes
Allowed:</h4> false</td></tr><tr><td colspan="6"
rowspan="1"> </td></tr><tr><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Name</h4></th><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Required</h4></th><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Default</h4></th><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Evaluated</h4></th><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Type</h4></th><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Description</h4></th></tr><tr><td align="left" colspan="1"
rowspan="1" valign="top">id</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top"></td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">String</td><td align="left" colspan="1" rowspan="1"
valign="top">Deprecated.
Use 'var' instead</td></tr><tr><td align="left" colspan="1" rowspan="1"
valign="top">var</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top"></td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">String</td><td align="left" colspan="1" rowspan="1"
valign="top">The name where the resultant merged iterator will be stored in the
stack's context</td></tr></table></p>
+<p><table width="100%"><tr><td colspan="6" rowspan="1"><h4>Dynamic Attributes
Allowed:</h4> false</td></tr><tr><td colspan="6"
rowspan="1"> </td></tr><tr><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Name</h4></th><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Required</h4></th><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Default</h4></th><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Evaluated</h4></th><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Type</h4></th><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Description</h4></th></tr><tr><td align="left" colspan="1"
rowspan="1" valign="top">var</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top"></td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">String</td><td align="left" colspan="1" rowspan="1"
valign="top">The name w
here the resultant merged iterator will be stored in the stack's
context</td></tr></table></p>
<h2 id="merge-Examples">Examples</h2>
Modified: websites/production/struts/content/docs/one-time-steps.html
==============================================================================
--- websites/production/struts/content/docs/one-time-steps.html (original)
+++ websites/production/struts/content/docs/one-time-steps.html Wed Jan 27
09:26:50 2016
@@ -140,11 +140,11 @@ under the License.
<div class="wiki-content">
<div id="ConfluenceContent"><h1
id="Onetimesteps-Content">Content</h1>
<style type="text/css">/*<![CDATA[*/
-div.rbtoc1440489346579 {padding: 0px;}
-div.rbtoc1440489346579 ul {list-style: none;margin-left: 0px;}
-div.rbtoc1440489346579 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1453884610727 {padding: 0px;}
+div.rbtoc1453884610727 ul {list-style: none;margin-left: 0px;}
+div.rbtoc1453884610727 li {margin-left: 0px;padding-left: 0px;}
-/*]]>*/</style><div class="toc-macro rbtoc1440489346579">
+/*]]>*/</style><div class="toc-macro rbtoc1453884610727">
<ul class="toc-indentation"><li><span class="TOCOutline">1</span> <a
shape="rect" href="#Onetimesteps-Content">Content</a>
<ul class="toc-indentation"><li><span class="TOCOutline">1.1</span> <a
shape="rect" href="#Onetimesteps-Keysandconfiguration">Keys and
configuration</a>
<ul class="toc-indentation"><li><span class="TOCOutline">1.1.1</span> <a
shape="rect" href="#Onetimesteps-CreateandinstallaSSHkey">Create and install a
SSH key</a></li><li><span class="TOCOutline">1.1.2</span> <a shape="rect"
href="#Onetimesteps-CreateaPGPkey">Create a PGP key</a></li><li><span
class="TOCOutline">1.1.3</span> <a shape="rect"
href="#Onetimesteps-UpdateMavensettingsforourservers">Update Maven settings for
our servers</a></li><li><span class="TOCOutline">1.1.4</span> <a shape="rect"
href="#Onetimesteps-IncreaseMemorySettingsforMaven">Increase Memory Settings
for Maven</a></li></ul>
Modified: websites/production/struts/content/docs/property.html
==============================================================================
--- websites/production/struts/content/docs/property.html (original)
+++ websites/production/struts/content/docs/property.html Wed Jan 27 09:26:50
2016
@@ -141,7 +141,7 @@ under the License.
<div id="ConfluenceContent"><div
class="confluence-information-macro confluence-information-macro-note"><span
class="aui-icon aui-icon-small aui-iconfont-warning
confluence-information-macro-icon"></span><div
class="confluence-information-macro-body"><p>Please make sure you have read the
<a shape="rect" href="tag-syntax.html">Tag Syntax</a> document and understand
how tag attribute syntax works.</p></div></div><h1
id="property-Description">Description</h1><p></p><p>
Used to get the property of a <i>value</i>, which will default to the top of
the stack if none is specified.
-</p><h1 id="property-Parameters">Parameters</h1><p><table width="100%"><tr><td
colspan="6" rowspan="1"><h4>Dynamic Attributes Allowed:</h4>
false</td></tr><tr><td colspan="6" rowspan="1"> </td></tr><tr><th
align="left" colspan="1" rowspan="1" valign="top"><h4>Name</h4></th><th
align="left" colspan="1" rowspan="1" valign="top"><h4>Required</h4></th><th
align="left" colspan="1" rowspan="1" valign="top"><h4>Default</h4></th><th
align="left" colspan="1" rowspan="1" valign="top"><h4>Evaluated</h4></th><th
align="left" colspan="1" rowspan="1" valign="top"><h4>Type</h4></th><th
align="left" colspan="1" rowspan="1"
valign="top"><h4>Description</h4></th></tr><tr><td align="left" colspan="1"
rowspan="1" valign="top">default</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top"></td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">String</td><td align="l
eft" colspan="1" rowspan="1" valign="top">The default value to be used if
<u>value</u> attribute is null</td></tr><tr><td align="left" colspan="1"
rowspan="1" valign="top">escape</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">true</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">Boolean</td><td align="left" colspan="1" rowspan="1"
valign="top">Deprecated. Use 'escapeHtml'. Whether to escape
HTML</td></tr><tr><td align="left" colspan="1" rowspan="1"
valign="top">escapeCsv</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">Boolean</td><td align="left" colspan="1" rowspan="1"
valign="top">Whether to escape CSV (useful to escape a value for a col
umn)</td></tr><tr><td align="left" colspan="1" rowspan="1"
valign="top">escapeHtml</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">true</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">Boolean</td><td align="left" colspan="1" rowspan="1"
valign="top">Whether to escape HTML</td></tr><tr><td align="left" colspan="1"
rowspan="1" valign="top">escapeJavaScript</td><td align="left" colspan="1"
rowspan="1" valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">Boolean</td><td align="left" colspan="1" rowspan="1"
valign="top">Whether to escape Javascript</td></tr><tr><td align="left"
colspan="1" rowspan="1" valign="top">escapeXml</td><td align="left" colspan="1"
rowspan="1" valign="top">false</td><t
d align="left" colspan="1" rowspan="1" valign="top">false</td><td align="left"
colspan="1" rowspan="1" valign="top">false</td><td align="left" colspan="1"
rowspan="1" valign="top">Boolean</td><td align="left" colspan="1" rowspan="1"
valign="top">Whether to escape XML</td></tr><tr><td align="left" colspan="1"
rowspan="1" valign="top">value</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top"><top of stack></td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">Object</td><td align="left" colspan="1" rowspan="1"
valign="top">Value to be displayed</td></tr></table></p><h1
id="property-Examples">Examples</h1><div class="code panel pdl"
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</p><h1 id="property-Parameters">Parameters</h1><p><table width="100%"><tr><td
colspan="6" rowspan="1"><h4>Dynamic Attributes Allowed:</h4>
false</td></tr><tr><td colspan="6" rowspan="1"> </td></tr><tr><th
align="left" colspan="1" rowspan="1" valign="top"><h4>Name</h4></th><th
align="left" colspan="1" rowspan="1" valign="top"><h4>Required</h4></th><th
align="left" colspan="1" rowspan="1" valign="top"><h4>Default</h4></th><th
align="left" colspan="1" rowspan="1" valign="top"><h4>Evaluated</h4></th><th
align="left" colspan="1" rowspan="1" valign="top"><h4>Type</h4></th><th
align="left" colspan="1" rowspan="1"
valign="top"><h4>Description</h4></th></tr><tr><td align="left" colspan="1"
rowspan="1" valign="top">default</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top"></td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">String</td><td align="l
eft" colspan="1" rowspan="1" valign="top">The default value to be used if
<u>value</u> attribute is null</td></tr><tr><td align="left" colspan="1"
rowspan="1" valign="top">escapeCsv</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">Boolean</td><td align="left" colspan="1" rowspan="1"
valign="top">Whether to escape CSV (useful to escape a value for a
column)</td></tr><tr><td align="left" colspan="1" rowspan="1"
valign="top">escapeHtml</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">true</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">Boolean</td><td align="left" colspan="1" rowspan="1"
valign="top">Whether to escape HTML</td></tr><tr><td alig
n="left" colspan="1" rowspan="1" valign="top">escapeJavaScript</td><td
align="left" colspan="1" rowspan="1" valign="top">false</td><td align="left"
colspan="1" rowspan="1" valign="top">false</td><td align="left" colspan="1"
rowspan="1" valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">Boolean</td><td align="left" colspan="1" rowspan="1"
valign="top">Whether to escape Javascript</td></tr><tr><td align="left"
colspan="1" rowspan="1" valign="top">escapeXml</td><td align="left" colspan="1"
rowspan="1" valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">Boolean</td><td align="left" colspan="1" rowspan="1"
valign="top">Whether to escape XML</td></tr><tr><td align="left" colspan="1"
rowspan="1" valign="top">value</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rows
pan="1" valign="top"><top of stack></td><td align="left" colspan="1"
rowspan="1" valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">Object</td><td align="left" colspan="1" rowspan="1"
valign="top">Value to be displayed</td></tr></table></p><h1
id="property-Examples">Examples</h1><div class="code panel pdl"
style="border-width: 1px;"><div class="codeContent panelContent pdl">
<script class="brush: xml; gutter: false; theme: Default"
type="syntaxhighlighter"><![CDATA[
<s:push value="myBean">
Modified: websites/production/struts/content/docs/rest-plugin.html
==============================================================================
--- websites/production/struts/content/docs/rest-plugin.html (original)
+++ websites/production/struts/content/docs/rest-plugin.html Wed Jan 27
09:26:50 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-information"><span class="aui-icon aui-icon-small
aui-iconfont-info confluence-information-macro-icon"></span><div
class="confluence-information-macro-body"><p>This plugin is only available with
Struts 2.1.1 or later</p></div></div><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1443119322444 {padding: 0px;}
-div.rbtoc1443119322444 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1443119322444 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1453884501969 {padding: 0px;}
+div.rbtoc1453884501969 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1453884501969 li {margin-left: 0px;padding-left: 0px;}
-/*]]>*/</style></p><div class="toc-macro rbtoc1443119322444">
+/*]]>*/</style></p><div class="toc-macro rbtoc1453884501969">
<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>
Modified: websites/production/struts/content/docs/result-configuration.html
==============================================================================
--- websites/production/struts/content/docs/result-configuration.html (original)
+++ websites/production/struts/content/docs/result-configuration.html Wed Jan
27 09:26:50 2016
@@ -139,13 +139,13 @@ under the License.
<div class="pagecontent">
<div class="wiki-content">
<div id="ConfluenceContent"><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1443767274995 {padding: 0px;}
-div.rbtoc1443767274995 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1443767274995 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1453884188561 {padding: 0px;}
+div.rbtoc1453884188561 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1453884188561 li {margin-left: 0px;padding-left: 0px;}
-/*]]>*/</style></p><div class="toc-macro rbtoc1443767274995">
+/*]]>*/</style></p><div class="toc-macro rbtoc1453884188561">
<ul class="toc-indentation"><li><a shape="rect"
href="#ResultConfiguration-ResultElements">Result Elements</a>
-<ul class="toc-indentation"><li><a shape="rect"
href="#ResultConfiguration-IntelligentDefaults">Intelligent
Defaults</a></li></ul>
+<ul class="toc-indentation"><li><a shape="rect"
href="#ResultConfiguration-IntelligentDefaults">Intelligent
Defaults</a></li><li><a shape="rect"
href="#ResultConfiguration-Multiplenames">Multiple names</a></li></ul>
</li><li><a shape="rect" href="#ResultConfiguration-GlobalResults">Global
Results</a></li><li><a shape="rect"
href="#ResultConfiguration-DynamicResults">Dynamic Results</a></li></ul>
</div><p>When an <a shape="rect" href="action.html">action</a> class method
completes, it returns a String. The value of the String is used to select a
result element. An action mapping will often have a set of results representing
different possible outcomes. A standard set of result tokens are defined by the
<code>ActionSupport</code> base class.</p><div class="code panel pdl"
style="border-width: 1px;"><div class="codeHeader panelHeader pdl"
style="border-bottom-width: 1px;"><b>Predefined result names</b></div><div
class="codeContent panelContent pdl">
<pre class="brush: java; gutter: false; theme: Default"
style="font-size:12px;">String SUCCESS = "success";
@@ -188,7 +188,12 @@ String LOGIN = "login";
<result name="*">/hello/Other.jsp</result>
</action>
</pre>
-</div></div><p><img class="emoticon emoticon-information"
src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/information.png"
data-emoticon-name="information" alt="(info)"> The name="*" is
<strong>not</strong> a wildcard pattern, it is a special name that is only
selected if an exact match is not found.</p><p><img class="emoticon
emoticon-warning"
src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/warning.png"
data-emoticon-name="warning" alt="(warning)"> In most cases if an action
returns an unrecognized result name this would be a programming error and
should be fixed.</p><h2 id="ResultConfiguration-GlobalResults">Global
Results</h2><p>Most often, results are nested with the action element. But some
results apply to multiple actions. In a secure application, a client might try
to access a page without being authorized, and many actions may n
eed access to a "logon" result.</p><p>If actions need to share results, a set
of global results can be defined for each package. The framework will first
look for a local result nested in the action. If a local match is not found,
then the global results are checked.</p><div class="code panel pdl"
style="border-width: 1px;"><div class="codeHeader panelHeader pdl"
style="border-bottom-width: 1px;"><b>Defining global results</b></div><div
class="codeContent panelContent pdl">
+</div></div><p><img class="emoticon emoticon-information"
src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/information.png"
data-emoticon-name="information" alt="(info)"> The name="*" is
<strong>not</strong> a wildcard pattern, it is a special name that is only
selected if an exact match is not found.</p><p><img class="emoticon
emoticon-warning"
src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/warning.png"
data-emoticon-name="warning" alt="(warning)"> In most cases if an action
returns an unrecognized result name this would be a programming error and
should be fixed.</p><h3 id="ResultConfiguration-Multiplenames">Multiple
names</h3><p>It is possible to define multiple names for the same
result:</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;"><action name="save">
+ <result>success.jsp</result>
+ <result name="error, input">input-form.jsp</result>
+</action></pre>
+</div></div><p>Such functionality was added in Struts 2.5</p><h2
id="ResultConfiguration-GlobalResults">Global Results</h2><p>Most often,
results are nested with the action element. But some results apply to multiple
actions. In a secure application, a client might try to access a page without
being authorized, and many actions may need access to a "logon"
result.</p><p>If actions need to share results, a set of global results can be
defined for each package. The framework will first look for a local result
nested in the action. If a local match is not found, then the global results
are checked.</p><div class="code panel pdl" style="border-width: 1px;"><div
class="codeHeader panelHeader pdl" style="border-bottom-width:
1px;"><b>Defining global results</b></div><div class="codeContent panelContent
pdl">
<pre class="brush: xml; gutter: false; theme: Default"
style="font-size:12px;"><global-results>
<result name="error">/Error.jsp</result>
<result name="invalid.token">/Error.jsp</result>
Modified: websites/production/struts/content/docs/s2-026.html
==============================================================================
--- websites/production/struts/content/docs/s2-026.html (original)
+++ websites/production/struts/content/docs/s2-026.html Wed Jan 27 09:26:50 2016
@@ -138,7 +138,7 @@ under the License.
<div class="pagecontent">
<div class="wiki-content">
- <div id="ConfluenceContent"><h2
id="S2-026-Summary">Summary</h2>Special <code>top</code> object can be used to
access Struts' internals<div class="table-wrap"><table
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p>Who should read this</p></th><td colspan="1"
rowspan="1" class="confluenceTd"><p>All Struts 2 developers and
users</p></td></tr><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p>Impact of vulnerability</p></th><td colspan="1"
rowspan="1" class="confluenceTd"><p>Manipulation of Struts' internals, altering
of user session</p></td></tr><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p>Maximum security rating</p></th><td colspan="1"
rowspan="1" class="confluenceTd"><p>High</p></td></tr><tr><th colspan="1"
rowspan="1" class="confluenceTh"><p>Recommendation</p></th><td colspan="1"
rowspan="1" class="confluenceTd"><p>Update regex used to excluded vulnerable
incoming parameters. An upgrade to <a shape="rect" class="ext
ernal-link" href="http://struts.apache.org/download.cgi#struts23241">Struts
2.3.24.1</a> is recommended.</p></td></tr><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p>Affected Software</p></th><td colspan="1" rowspan="1"
class="confluenceTd"><p>Struts 2.0.0 - Struts <span style="color:
rgb(23,35,59);">Struts 2.3.24</span></p></td></tr><tr><th colspan="1"
rowspan="1" class="confluenceTh"><p>Reporter</p></th><td colspan="1"
rowspan="1" class="confluenceTd"><p><span style="line-height: 1.42857;">rskvp93
at gmail dot com from </span>Viettel Information Security
Center</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>CVE
Identifier</p></th><td colspan="1" rowspan="1" class="confluenceTd"><p><span
style="color: rgb(34,34,34);"><a shape="rect" class="external-link"
href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-5209"
rel="nofollow">CVE-2015-5209</a></span></p></td></tr></tbody></table></div><h2
id="S2-026-Problem">Problem</h2><p>ValueStack defines s
pecial <code>top</code> object which represents root of execution context. It
can be used to manipulate Struts' internals or can be used to affect
container's settings</p><h2 id="S2-026-Solution">Solution</h2><p>Applying
better regex which includes pattern to exclude request parameters trying to
use <code>top</code> object. We recommend upgrading to Struts
2.3.24.1.</p><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>Support for expression using
<code>top</code> will be dropped in upcoming Struts version
2.5!</p></div></div><h2 id="S2-026-Backwardcompatibility">Backward
compatibility</h2><p>If an application is using parameter named
<code>top</code> to access action's properties, it won't be set on the
action. In other case no backward compatibility problems are
expected.</p><h2 id="S2-02
6-Workaround">Workaround</h2><p>Applying the below patterns will solve the
problem as well:</p><div class="code panel pdl" style="border-width: 1px;"><div
class="codeContent panelContent pdl">
+ <div id="ConfluenceContent"><h2
id="S2-026-Summary">Summary</h2>Special <code>top</code> object can be used to
access Struts' internals<div class="table-wrap"><table
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p>Who should read this</p></th><td colspan="1"
rowspan="1" class="confluenceTd"><p>All Struts 2 developers and
users</p></td></tr><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p>Impact of vulnerability</p></th><td colspan="1"
rowspan="1" class="confluenceTd"><p>Manipulation of Struts' internals, altering
of user session</p></td></tr><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p>Maximum security rating</p></th><td colspan="1"
rowspan="1" class="confluenceTd"><p>High</p></td></tr><tr><th colspan="1"
rowspan="1" class="confluenceTh"><p>Recommendation</p></th><td colspan="1"
rowspan="1" class="confluenceTd"><p>Update regex used to excluded vulnerable
incoming parameters. An upgrade to <a shape="rect" class="ext
ernal-link" href="http://struts.apache.org/download.cgi#struts23241">Struts
2.3.24.1</a> is recommended.</p></td></tr><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p>Affected Software</p></th><td colspan="1" rowspan="1"
class="confluenceTd"><p>Struts 2.0.0 - Struts <span style="color:
rgb(23,35,59);">Struts 2.3.24</span></p></td></tr><tr><th colspan="1"
rowspan="1" class="confluenceTh"><p>Reporter</p></th><td colspan="1"
rowspan="1" class="confluenceTd"><p><span style="line-height: 1.42857;">rskvp93
at gmail dot com from </span>Viettel Information Security
Center</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>CVE
Identifier</p></th><td colspan="1" rowspan="1" class="confluenceTd"><p><span
style="color: rgb(34,34,34);"><a shape="rect" class="external-link"
href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-5209"
rel="nofollow">CVE-2015-5209</a></span></p></td></tr></tbody></table></div><h2
id="S2-026-Problem">Problem</h2><p>ValueStack defines s
pecial <code>top</code> object which represents root of execution context. It
can be used to manipulate Struts' internals or can be used to affect
container's settings</p><h2 id="S2-026-Solution">Solution</h2><p>Applying
better regex which includes pattern to exclude request parameters trying to
use <code>top</code> object. We recommend upgrading to Struts
2.3.24.1.</p><h2 id="S2-026-Backwardcompatibility">Backward
compatibility</h2><p>If an application is using parameter named
<code>top</code> to access action's properties, it won't be set on the
action. In other case no backward compatibility problems are
expected.</p><h2 id="S2-026-Workaround">Workaround</h2><p>Applying the below
patterns will solve the problem as well:</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;">"(^|\\%\\{)((#?)(top(\\.|\\['|\\[\")|\\[\\d\\]\\.)?)(dojo|struts|session|request|response|application|servlet(Request|Response|Context)|parameters|context|_memberAccess)(\\.|\\[).*",
"^(action|method):.*"</pre>
</div></div></div>
Modified: websites/production/struts/content/docs/sample-announcements.html
==============================================================================
--- websites/production/struts/content/docs/sample-announcements.html (original)
+++ websites/production/struts/content/docs/sample-announcements.html Wed Jan
27 09:26:50 2016
@@ -127,11 +127,11 @@ under the License.
<div class="wiki-content">
<div id="ConfluenceContent"><h1
id="Sampleannouncements-Content">Content</h1>
<style type="text/css">/*<![CDATA[*/
-div.rbtoc1440489352374 {padding: 0px;}
-div.rbtoc1440489352374 ul {list-style: none;margin-left: 0px;}
-div.rbtoc1440489352374 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1453884616256 {padding: 0px;}
+div.rbtoc1453884616256 ul {list-style: none;margin-left: 0px;}
+div.rbtoc1453884616256 li {margin-left: 0px;padding-left: 0px;}
-/*]]>*/</style><div class="toc-macro rbtoc1440489352374">
+/*]]>*/</style><div class="toc-macro rbtoc1453884616256">
<ul class="toc-indentation"><li><span class="TOCOutline">1</span> <a
shape="rect" href="#Sampleannouncements-Content">Content</a>
<ul class="toc-indentation"><li><span class="TOCOutline">1.1</span> <a
shape="rect"
href="#Sampleannouncements-SampleStrutsAnnotationsRelease/QualityVote">Sample
Struts Annotations Release/Quality Vote</a></li><li><span
class="TOCOutline">1.2</span> <a shape="rect"
href="#Sampleannouncements-SampleTestBuildAnnouncement">Sample Test Build
Announcement</a></li><li><span class="TOCOutline">1.3</span> <a shape="rect"
href="#Sampleannouncements-SampleRelease/QualityVote">Sample Release/Quality
Vote</a></li><li><span class="TOCOutline">1.4</span> <a shape="rect"
href="#Sampleannouncements-SampleReleaseAnnouncement">Sample Release
Announcement</a></li><li><span class="TOCOutline">1.5</span> <a shape="rect"
href="#Sampleannouncements-Fast-TrackinganImportantSecurityRelease">Fast-Tracking
an Important Security Release</a></li></ul>
</li></ul>
Modified: websites/production/struts/content/docs/security.html
==============================================================================
--- websites/production/struts/content/docs/security.html (original)
+++ websites/production/struts/content/docs/security.html Wed Jan 27 09:26:50
2016
@@ -139,15 +139,15 @@ under the License.
<div class="pagecontent">
<div class="wiki-content">
<div id="ConfluenceContent"><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1440493861559 {padding: 0px;}
-div.rbtoc1440493861559 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1440493861559 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1453884667082 {padding: 0px;}
+div.rbtoc1453884667082 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1453884667082 li {margin-left: 0px;padding-left: 0px;}
-/*]]>*/</style></p><div class="toc-macro rbtoc1440493861559">
+/*]]>*/</style></p><div class="toc-macro rbtoc1453884667082">
<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><li><a shape="rect"
href="#Security-NeverexposeJSPfilesdirectly">Never expose JSP files
directly</a></li><li><a shape="rect" href="#Security-DisabledevMode">Disable
devMode</a></li></ul>
+<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><li><a shape="rect"
href="#Security-NeverexposeJSPfilesdirectly">Never expose JSP files
directly</a></li><li><a shape="rect" href="#Security-DisabledevMode">Disable
devMode</a></li><li><a shape="rect" href="#Security-UseUTF-8encoding">Use UTF-8
encoding</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-Accessingstaticmethods">Accessing static methods</a></li><li><a
shape="rect" href="#Security-OGNLisusedtocallaction'smethods">OGNL is used to
call action's methods</a></li><li><a shape="rect"
href="#Security-Accepted/Excludedpatterns">Accepted / Excluded
patterns</a></li></ul>
+<ul class="toc-indentation"><li><a shape="rect"
href="#Security-Accessingstaticmethods">Accessing static methods</a></li><li><a
shape="rect" href="#Security-OGNLisusedtocallaction'smethods">OGNL is used to
call action's methods</a></li><li><a shape="rect"
href="#Security-Accepted/Excludedpatterns">Accepted / Excluded
patterns</a></li><li><a shape="rect"
href="#Security-StrictMethodInvocation">Strict Method Invocation</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">
<pre class="brush: xml; gutter: false; theme: Default"
style="font-size:12px;"> <security-constraint>
@@ -177,22 +177,18 @@ div.rbtoc1440493861559 li {margin-left:
<description>Don't assign users to this role</description>
<role-name>no-users</role-name>
</security-role></pre>
-</div></div><p>The best approach is to used the both solutions.</p><h4
id="Security-DisabledevMode">Disable devMode</h4><p>The <code
style="line-height: 1.4285715;">devMode</code> is very useful option back can
expose your application presenting too many informations of application's
internals. Please always disable the <code>devMode</code> before deploying
your application to a production environment.</p><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">
-<pre class="brush: xml; gutter: false; theme: Default"
style="font-size:12px;"> <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.*" /></pre>
+</div></div><p>The best approach is to used the both solutions.</p><h4
id="Security-DisabledevMode">Disable devMode</h4><p>The <code
style="line-height: 1.4285715;">devMode</code> is very useful option back can
expose your application presenting too many informations of application's
internals. Please always disable the <code>devMode</code> before deploying
your application to a production environment.</p><h4
id="Security-UseUTF-8encoding">Use UTF-8 encoding</h4><p>Always
use <code>UTF-8</code> encoding when building an application with the
Apache Struts 2, when using JSPs please add the following header to each JSP
file</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;"><%@ page contentType="text/html; charset=UTF-8"
%></pre>
+</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>There are three options that
can be used to configure excluded packages and classes:</p><ul
style="list-style-type: square;"><li><code>struts.excludedClasses</code> -
comma-separated list of excluded
classes</li><li><code>struts.excludedPackageNamePatterns</code> - patterns used
to exclude packages based on RegEx - this option is slower than simple string
comparison but it's more
flexible</li><li><code>struts.excludedPackageNames</code> - comma-separated
list of excluded packages, it is used with simple string comparison
via <code>startWith</code> and <code>equals</code></li></ul><p>The
defaults are as follow:</p><div class="code p
anel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<pre class="brush: xml; gutter: false; theme: Default"
style="font-size:12px;"><constant name="struts.excludedClasses"
+ value="com.opensymphony.xwork2.ActionContext" />
+
+<!-- this must be valid regex, each '.' in package name must be escaped!
-->
+<!-- it's more flexible but slower than simple string comparison -->
+<!-- constant name="struts.excludedPackageNamePatterns"
value="^java\.lang\..*,^ognl.*,^(?!javax\.servlet\..+)(javax\..+)" / -->
+
+<!-- this is simpler version of the above used with string comparison -->
+<constant name="struts.excludedPackageNames" value="java.lang,ognl,javax"
/></pre>
</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="confluence-information-macro confluence-information-macro-note"><span
class="aui-icon aui-icon-small aui-iconfont-warning
confluence-information-macro-icon"></span><div
class="confluence-information-macro-body"><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-Accessingstaticmethods">Accessing static methods</h4><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>Support for accessing static
methods from expression will be disabled soon, please
consider re-factoring your application to avoid further problems! Please
check <a shape="rect" class="external-link"
href="https://issues.apache.org/jira/browse/WW-4348">WW-4348</a>.</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">
@@ -216,7 +212,7 @@ public abstract class AbstractAction ext
// some logic
}
}</pre>
-</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><h4
id="Security-Accepted/Excludedpatterns"><span style="line-height:
1.4285715;">Accepted / Excluded patterns</span></h4><p><span
style="line-height: 1.4285715;">As from version 2.3.20 the framework provides
two new interfaces which are used to accept / exclude param names and values
- <a shape="rect" class="external-link"
href="http://struts.apache.org/maven/xwork-core/apidocs/com/opensymphony/xwork2/security/AcceptedPatternsChecker.html"
>AcceptedPatternsChecker</a> and <a shape="rect" class="external-link"
>href="http://struts.apache.org/maven/xwork-core/apidocs/com/opensymphony/xwork2/security/ExcludedPatternsChecker.html">ExcludedPatternsChecker</a>
> with default implementations. These two interfaces are used by <a
>shape="rect" href="parameters-interceptor.html">Parameters Interceptor</a>
>and <a shape="rect" href="cookie-interceptor.html">Cookie
>Interceptor</a> to check if param can accepted or must be excluded. If you
>were using <code>excludeParams</code> previously please compare patterns
>used by you with these provided by the framework in default
>implementation.</span></p></div>
+</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><h4
id="Security-Accepted/Excludedpatterns"><span style="line-height:
1.4285715;">Accepted / Excluded patterns</span></h4><p><span
style="line-height: 1.4285715;">As from version 2.3.20 the framework provides
two new interfaces which are used to accept / exclude param names and values
- <a shape="rect" class="external-link"
href="http://struts.apache.org/maven/xwork-core/apidocs/com/opensymphony/xwork2/security/AcceptedPatternsChecker.html"
>AcceptedPatternsChecker</a> and <a shape="rect" class="external-link"
>href="http://struts.apache.org/maven/xwork-core/apidocs/com/opensymphony/xwork2/security/ExcludedPatternsChecker.html">ExcludedPatternsChecker</a>
> with default implementations. These two interfaces are used by <a
>shape="rect" href="parameters-interceptor.html">Parameters Interceptor</a>
>and <a shape="rect" href="cookie-interceptor.html">Cookie
>Interceptor</a> to check if param can accepted or must be excluded. If you
>were using <code>excludeParams</code> previously please compare patterns
>used by you with these provided by the framework in default
>implementation.</span></p><h4 id="Security-StrictMethodInvocation"><span
>style="line-height: 1.4285715;">Strict Method Invocation</span></h4><p><span
>style="line-height: 1.4285715;">This mechanism was introduced in version 2.5.
>It allows control what methods can be accessed with the bang "!" operator via
><a shape="rect" href="action-configuration.htm
l">Dynamic Method Invocation</a>. Please read more in Strict Method
Invocation section of <a shape="rect"
href="action-configuration.html">Action Configuration</a>.</span></p></div>
</div>
Modified: websites/production/struts/content/docs/set.html
==============================================================================
--- websites/production/struts/content/docs/set.html (original)
+++ websites/production/struts/content/docs/set.html Wed Jan 27 09:26:50 2016
@@ -159,7 +159,7 @@ If no scope is specified, it will defaul
<h1 id="set-Parameters">Parameters</h1>
-<p><table width="100%"><tr><td colspan="6" rowspan="1"><h4>Dynamic Attributes
Allowed:</h4> false</td></tr><tr><td colspan="6"
rowspan="1"> </td></tr><tr><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Name</h4></th><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Required</h4></th><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Default</h4></th><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Evaluated</h4></th><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Type</h4></th><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Description</h4></th></tr><tr><td align="left" colspan="1"
rowspan="1" valign="top">id</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top"></td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">String</td><td align="left" colspan="1" rowspan="1"
valign="top">Deprecated.
Use 'var' instead</td></tr><tr><td align="left" colspan="1" rowspan="1"
valign="top">name</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top"></td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">String</td><td align="left" colspan="1" rowspan="1"
valign="top">Deprecated. Use 'var' instead</td></tr><tr><td align="left"
colspan="1" rowspan="1" valign="top">scope</td><td align="left" colspan="1"
rowspan="1" valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">action</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">String</td><td align="left" colspan="1" rowspan="1"
valign="top">The scope in which to assign the variable. Can be
<b>application</b>, <b>session</b>, <b>request</b>, <b>page</b>, or
<b>action</b>.</td></tr><tr><td align="left" colspan="1" ro
wspan="1" valign="top">value</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top"></td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">String</td><td align="left" colspan="1" rowspan="1"
valign="top">The value that is assigned to the variable named
<i>name</i></td></tr><tr><td align="left" colspan="1" rowspan="1"
valign="top">var</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top"></td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">String</td><td align="left" colspan="1" rowspan="1"
valign="top">Name used to reference the value pushed into the Value
Stack</td></tr></table></p>
+<p><table width="100%"><tr><td colspan="6" rowspan="1"><h4>Dynamic Attributes
Allowed:</h4> false</td></tr><tr><td colspan="6"
rowspan="1"> </td></tr><tr><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Name</h4></th><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Required</h4></th><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Default</h4></th><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Evaluated</h4></th><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Type</h4></th><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Description</h4></th></tr><tr><td align="left" colspan="1"
rowspan="1" valign="top">scope</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">action</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">String</td><td align="left" colspan="1" rowspan="1" valign="top">Th
e scope in which to assign the variable. Can be <b>application</b>,
<b>session</b>, <b>request</b>, <b>page</b>, or <b>action</b>.</td></tr><tr><td
align="left" colspan="1" rowspan="1" valign="top">value</td><td align="left"
colspan="1" rowspan="1" valign="top">false</td><td align="left" colspan="1"
rowspan="1" valign="top"></td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">String</td><td align="left" colspan="1" rowspan="1"
valign="top">The value that is assigned to the variable named
<i>name</i></td></tr><tr><td align="left" colspan="1" rowspan="1"
valign="top">var</td><td align="left" colspan="1" rowspan="1"
valign="top"><strong>true</strong></td><td align="left" colspan="1" rowspan="1"
valign="top"></td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">String</td><td align="left" colspan="1" rowspan="1"
valign="top">Name used to reference th
e value pushed into the Value Stack</td></tr></table></p>
<h1 id="set-Examples">Examples</h1>
Modified: websites/production/struts/content/docs/sort.html
==============================================================================
--- websites/production/struts/content/docs/sort.html (original)
+++ websites/production/struts/content/docs/sort.html Wed Jan 27 09:26:50 2016
@@ -153,7 +153,7 @@ pushed into the stack and poped at the e
<h2 id="sort-Parameters">Parameters</h2>
-<p><table width="100%"><tr><td colspan="6" rowspan="1"><h4>Dynamic Attributes
Allowed:</h4> false</td></tr><tr><td colspan="6"
rowspan="1"> </td></tr><tr><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Name</h4></th><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Required</h4></th><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Default</h4></th><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Evaluated</h4></th><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Type</h4></th><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Description</h4></th></tr><tr><td align="left" colspan="1"
rowspan="1" valign="top">comparator</td><td align="left" colspan="1"
rowspan="1" valign="top"><strong>true</strong></td><td align="left" colspan="1"
rowspan="1" valign="top"></td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">java.util.Comparator</td><td align="left" colspan="1
" rowspan="1" valign="top">The comparator to use</td></tr><tr><td align="left"
colspan="1" rowspan="1" valign="top">id</td><td align="left" colspan="1"
rowspan="1" valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top"></td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">String</td><td align="left" colspan="1" rowspan="1"
valign="top">Deprecated. Use 'var' instead</td></tr><tr><td align="left"
colspan="1" rowspan="1" valign="top">source</td><td align="left" colspan="1"
rowspan="1" valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top"></td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">String</td><td align="left" colspan="1" rowspan="1"
valign="top">The iterable source to sort</td></tr><tr><td align="left"
colspan="1" rowspan="1" valign="top">var</td><td align="left" colspan="1"
rowspan="1" valign="to
p">false</td><td align="left" colspan="1" rowspan="1" valign="top"></td><td
align="left" colspan="1" rowspan="1" valign="top">false</td><td align="left"
colspan="1" rowspan="1" valign="top">String</td><td align="left" colspan="1"
rowspan="1" valign="top">The name to store the resultant iterator into page
context, if such name is supplied</td></tr></table></p>
+<p><table width="100%"><tr><td colspan="6" rowspan="1"><h4>Dynamic Attributes
Allowed:</h4> false</td></tr><tr><td colspan="6"
rowspan="1"> </td></tr><tr><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Name</h4></th><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Required</h4></th><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Default</h4></th><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Evaluated</h4></th><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Type</h4></th><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Description</h4></th></tr><tr><td align="left" colspan="1"
rowspan="1" valign="top">comparator</td><td align="left" colspan="1"
rowspan="1" valign="top"><strong>true</strong></td><td align="left" colspan="1"
rowspan="1" valign="top"></td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">java.util.Comparator</td><td align="left" colspan="1
" rowspan="1" valign="top">The comparator to use</td></tr><tr><td align="left"
colspan="1" rowspan="1" valign="top">source</td><td align="left" colspan="1"
rowspan="1" valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top"></td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">String</td><td align="left" colspan="1" rowspan="1"
valign="top">The iterable source to sort</td></tr><tr><td align="left"
colspan="1" rowspan="1" valign="top">var</td><td align="left" colspan="1"
rowspan="1" valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top"></td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">String</td><td align="left" colspan="1" rowspan="1"
valign="top">The name to store the resultant iterator into page context, if
such name is supplied</td></tr></table></p>
<h2 id="sort-Examples">Examples</h2>
Modified: websites/production/struts/content/docs/struts-2-blank-archetype.html
==============================================================================
--- websites/production/struts/content/docs/struts-2-blank-archetype.html
(original)
+++ websites/production/struts/content/docs/struts-2-blank-archetype.html Wed
Jan 27 09:26:50 2016
@@ -149,11 +149,11 @@ under the License.
<p><strong>Contents</strong></p>
<style type="text/css">/*<![CDATA[*/
-div.rbtoc1440489278291 {padding: 0px;}
-div.rbtoc1440489278291 ul {list-style: none;margin-left: 0px;padding-left:
1em;}
-div.rbtoc1440489278291 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1453884536773 {padding: 0px;}
+div.rbtoc1453884536773 ul {list-style: none;margin-left: 0px;padding-left:
1em;}
+div.rbtoc1453884536773 li {margin-left: 0px;padding-left: 0px;}
-/*]]>*/</style><div class="toc-macro rbtoc1440489278291">
+/*]]>*/</style><div class="toc-macro rbtoc1453884536773">
<ul class="toc-indentation"><li><span class="TOCOutline">1</span> <a
shape="rect"
href="#Struts2BlankArchetype-CreatingOurblank-archetypeProject">Creating Our
blank-archetype Project</a>
<ul class="toc-indentation"><li><span class="TOCOutline">1.1</span> <a
shape="rect" href="#Struts2BlankArchetype-Stagingrepository">Staging
repository</a></li></ul>
</li><li><span class="TOCOutline">2</span> <a shape="rect"
href="#Struts2BlankArchetype-ProjectStructure">Project Structure</a>
Modified: websites/production/struts/content/docs/struts-2-maven-archetypes.html
==============================================================================
--- websites/production/struts/content/docs/struts-2-maven-archetypes.html
(original)
+++ websites/production/struts/content/docs/struts-2-maven-archetypes.html Wed
Jan 27 09:26:50 2016
@@ -143,11 +143,11 @@ under the License.
<p><strong>Contents</strong></p>
<style type="text/css">/*<![CDATA[*/
-div.rbtoc1440489276784 {padding: 0px;}
-div.rbtoc1440489276784 ul {list-style: none;margin-left: 0px;padding-left:
1em;}
-div.rbtoc1440489276784 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1453884535519 {padding: 0px;}
+div.rbtoc1453884535519 ul {list-style: none;margin-left: 0px;padding-left:
1em;}
+div.rbtoc1453884535519 li {margin-left: 0px;padding-left: 0px;}
-/*]]>*/</style><div class="toc-macro rbtoc1440489276784">
+/*]]>*/</style><div class="toc-macro rbtoc1453884535519">
<ul class="toc-indentation"><li><span class="TOCOutline">1</span> <a
shape="rect"
href="#Struts2MavenArchetypes-Quickstart">Quickstart</a></li><li><span
class="TOCOutline">2</span> <a shape="rect"
href="#Struts2MavenArchetypes-AvailableArchetypes">Available Archetypes</a>
<ul class="toc-indentation"><li><span class="TOCOutline">2.1</span> <a
shape="rect"
href="#Struts2MavenArchetypes-TheBlankConventionArchetype(struts2-archetype-convention)">The
Blank Convention Archetype (struts2-archetype-convention)</a></li><li><span
class="TOCOutline">2.2</span> <a shape="rect"
href="#Struts2MavenArchetypes-TheBlankArchetype(struts2-archetype-blank)">The
Blank Archetype (struts2-archetype-blank)</a></li><li><span
class="TOCOutline">2.3</span> <a shape="rect"
href="#Struts2MavenArchetypes-TheStarterArchetype(struts2-archetype-starter)">The
Starter Archetype (struts2-archetype-starter)</a></li><li><span
class="TOCOutline">2.4</span> <a shape="rect"
href="#Struts2MavenArchetypes-TheAngularJSArchetype(struts2-archetype-angularjs)">The
AngularJS Archetype (struts2-archetype-angularjs)</a></li><li><span
class="TOCOutline">2.5</span> <a shape="rect"
href="#Struts2MavenArchetypes-ThePortletBlankArchetype(struts2-archetype-portlet)">The
Portlet Blank Archetype (struts2-ar
chetype-portlet)</a></li><li><span class="TOCOutline">2.6</span> <a
shape="rect"
href="#Struts2MavenArchetypes-ThePortletDatabaseArchetype(struts2-archetype-dbportlet)">The
Portlet Database Archetype (struts2-archetype-dbportlet)</a></li><li><span
class="TOCOutline">2.7</span> <a shape="rect"
href="#Struts2MavenArchetypes-ThePluginArchetype(struts2-archetype-plugin)">The
Plugin Archetype (struts2-archetype-plugin)</a></li></ul>
</li><li><span class="TOCOutline">3</span> <a shape="rect"
href="#Struts2MavenArchetypes-CreatinganApplicationUsingaMavenArchetype">Creating
an Application Using a Maven Archetype</a>
Modified:
websites/production/struts/content/docs/struts-2-spring-2-jpa-ajax.html
==============================================================================
--- websites/production/struts/content/docs/struts-2-spring-2-jpa-ajax.html
(original)
+++ websites/production/struts/content/docs/struts-2-spring-2-jpa-ajax.html Wed
Jan 27 09:26:50 2016
@@ -145,11 +145,11 @@ under the License.
<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>Following this tutorial verbatim
will require use of a Struts 2 deployment greater than 2.0.3</p></div></div>
<style type="text/css">/*<![CDATA[*/
-div.rbtoc1440489150697 {padding: 0px;}
-div.rbtoc1440489150697 ul {list-style: none;margin-left: 0px;}
-div.rbtoc1440489150697 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1453884419616 {padding: 0px;}
+div.rbtoc1453884419616 ul {list-style: none;margin-left: 0px;}
+div.rbtoc1453884419616 li {margin-left: 0px;padding-left: 0px;}
-/*]]>*/</style><div class="toc-macro rbtoc1440489150697">
+/*]]>*/</style><div class="toc-macro rbtoc1453884419616">
<ul class="toc-indentation"><li><a shape="rect"
href="#Struts2+Spring2+JPA+AJAX-Prerequisites">Prerequisites</a>
<ul class="toc-indentation"><li><a shape="rect"
href="#Struts2+Spring2+JPA+AJAX-Tomcat">Tomcat</a></li><li><a shape="rect"
href="#Struts2+Spring2+JPA+AJAX-MySql">MySql</a></li></ul>
</li><li><a shape="rect" href="#Struts2+Spring2+JPA+AJAX-Getthecode">Get the
code</a>
Modified: websites/production/struts/content/docs/struts-defaultxml.html
==============================================================================
--- websites/production/struts/content/docs/struts-defaultxml.html (original)
+++ websites/production/struts/content/docs/struts-defaultxml.html Wed Jan 27
09:26:50 2016
@@ -175,26 +175,20 @@ under the License.
and {@link com.opensymphony.xwork2.inject.Inject}
-->
<!DOCTYPE struts PUBLIC
- "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
- "http://struts.apache.org/dtds/struts-2.3.dtd">
+ "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
+ "http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<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" />
+ value="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\.servlet\..+)(javax\..+)"
/>
+ <!-- it's more flexible but slower than simple string comparison
-->
+ <!-- constant name="struts.excludedPackageNamePatterns"
value="^java\.lang\..*,^ognl.*,^(?!javax\.servlet\..+)(javax\..+)" /
-->
+
+ <!-- this is simpler version of the above used with string comparison
-->
+ <constant name="struts.excludedPackageNames"
value="java.lang,ognl,javax" />
<bean class="com.opensymphony.xwork2.ObjectFactory"
name="struts"/>
<bean type="com.opensymphony.xwork2.factory.ResultFactory"
name="struts"
class="org.apache.struts2.factory.StrutsResultFactory" />
@@ -307,7 +301,7 @@ under the License.
<bean
type="com.opensymphony.xwork2.security.ExcludedPatternsChecker"
name="struts"
class="com.opensymphony.xwork2.security.DefaultExcludedPatternsChecker"
scope="prototype" />
<bean
type="com.opensymphony.xwork2.security.AcceptedPatternsChecker"
name="struts"
class="com.opensymphony.xwork2.security.DefaultAcceptedPatternsChecker"
scope="prototype" />
- <package name="struts-default" abstract="true">
+ <package name="struts-default" abstract="true"
strict-method-invocation="true">
<result-types>
<result-type name="chain"
class="com.opensymphony.xwork2.ActionChainResult"/>
<result-type name="dispatcher"
class="org.apache.struts2.result.ServletDispatcherResult"
default="true"/>
@@ -357,7 +351,6 @@ under the License.
<interceptor name="roles"
class="org.apache.struts2.interceptor.RolesInterceptor" />
<interceptor name="annotationWorkflow"
class="com.opensymphony.xwork2.interceptor.annotations.AnnotationWorkflowInterceptor"
/>
<interceptor name="multiselect"
class="org.apache.struts2.interceptor.MultiselectInterceptor" />
- <interceptor name="deprecation"
class="org.apache.struts2.interceptor.DeprecationInterceptor" />
<!-- Basic stack -->
<interceptor-stack name="basicStack">
@@ -370,7 +363,6 @@ under the License.
<interceptor-ref name="actionMappingParams"/>
<interceptor-ref name="params"/>
<interceptor-ref name="conversionError"/>
- <interceptor-ref name="deprecation"/>
</interceptor-stack>
<!-- Sample validation and workflow stack -->
@@ -476,7 +468,6 @@ under the License.
<param
name="excludeMethods">input,back,cancel,browse</param>
</interceptor-ref>
<interceptor-ref name="debugging"/>
- <interceptor-ref name="deprecation"/>
</interceptor-stack>
<!-- The completeStack is here for backwards compatibility for
@@ -503,6 +494,9 @@ under the License.
<default-interceptor-ref name="defaultStack"/>
<default-class-ref
class="com.opensymphony.xwork2.ActionSupport" />
+
+
<global-allowed-methods>execute,input,back,cancel,browse,save,delete,list,index</global-allowed-methods>
+
</package>
</struts>
Modified: websites/production/struts/content/docs/struts-next.html
==============================================================================
--- websites/production/struts/content/docs/struts-next.html (original)
+++ websites/production/struts/content/docs/struts-next.html Wed Jan 27
09:26:50 2016
@@ -125,12 +125,12 @@ under the License.
<div class="pagecontent">
<div class="wiki-content">
- <div id="ConfluenceContent"><h3
id="StrutsNext-/*<![CDATA[*/div.rbtoc1443768301760{padding:0px;}div.rbtoc1443768301760ul{list-style:disc;margin-left:0px;}div.rbtoc1443768301760li{margin-left:0px;padding-left:0px;}/*]]>*/#StrutsNext-Whatshouldbeimproved/changed#StrutsNext-Whatshouldbeimprove"><style
type="text/css">/*<![CDATA[*/
-div.rbtoc1443768301760 {padding: 0px;}
-div.rbtoc1443768301760 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1443768301760 li {margin-left: 0px;padding-left: 0px;}
+ <div id="ConfluenceContent"><h3
id="StrutsNext-/*<![CDATA[*/div.rbtoc1453884611957{padding:0px;}div.rbtoc1453884611957ul{list-style:disc;margin-left:0px;}div.rbtoc1453884611957li{margin-left:0px;padding-left:0px;}/*]]>*/#StrutsNext-Whatshouldbeimproved/changed#StrutsNext-Whatshouldbeimprove"><style
type="text/css">/*<![CDATA[*/
+div.rbtoc1453884611957 {padding: 0px;}
+div.rbtoc1453884611957 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1453884611957 li {margin-left: 0px;padding-left: 0px;}
-/*]]>*/</style></h3><div class="toc-macro rbtoc1443768301760">
+/*]]>*/</style></h3><div class="toc-macro rbtoc1453884611957">
<ul class="toc-indentation"><li><a shape="rect"
href="#StrutsNext-"></a></li></ul>
<ul><li><a shape="rect" href="#StrutsNext-Whatshouldbeimproved/changed">What
should be improved / changed</a></li><li><a shape="rect"
href="#StrutsNext-DevelopmentplanofStruts3">Development plan of Struts 3</a>
<ul class="toc-indentation"><li><a shape="rect"
href="#StrutsNext-M1(akaStruts2.5)">M1 (aka Struts 2.5)</a></li><li><a
shape="rect" href="#StrutsNext-M2(alphaStruts3)">M2 (alpha Struts
3)</a></li><li><a shape="rect" href="#StrutsNext-M3(alphaStruts3)">M3 (alpha
Struts 3)</a></li><li><a shape="rect" href="#StrutsNext-M4(beta1Struts3)">M4
(beta 1 Struts 3)</a></li></ul>
Modified: websites/production/struts/content/docs/subset.html
==============================================================================
--- websites/production/struts/content/docs/subset.html (original)
+++ websites/production/struts/content/docs/subset.html Wed Jan 27 09:26:50 2016
@@ -148,7 +148,7 @@ perform the subset functionality.</p>
<h2 id="subset-Parameters">Parameters</h2>
-<p><table width="100%"><tr><td colspan="6" rowspan="1"><h4>Dynamic Attributes
Allowed:</h4> false</td></tr><tr><td colspan="6"
rowspan="1"> </td></tr><tr><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Name</h4></th><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Required</h4></th><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Default</h4></th><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Evaluated</h4></th><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Type</h4></th><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Description</h4></th></tr><tr><td align="left" colspan="1"
rowspan="1" valign="top">count</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top"></td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">Integer</td><td align="left" colspan="1" rowspan="1"
valign="top">Indicat
e the number of entries to be in the resulting subset
iterator</td></tr><tr><td align="left" colspan="1" rowspan="1"
valign="top">decider</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top"></td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">org.apache.struts2.util.SubsetIteratorFilter.Decider</td><td
align="left" colspan="1" rowspan="1" valign="top">Extension to plug-in a
decider to determine if that particular entry is to be included in the
resulting subset iterator</td></tr><tr><td align="left" colspan="1" rowspan="1"
valign="top">id</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top"></td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">String</td><td align="left" colspan="1" rowspan="1"
valign="top">Dep
recated. Use 'var' instead</td></tr><tr><td align="left" colspan="1"
rowspan="1" valign="top">source</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top"></td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">String</td><td align="left" colspan="1" rowspan="1"
valign="top">Indicate the source of which the resulting subset iterator is to
be derived base on</td></tr><tr><td align="left" colspan="1" rowspan="1"
valign="top">start</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top"></td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">Integer</td><td align="left" colspan="1" rowspan="1"
valign="top">Indicate the starting index (eg. first entry is 0) of entries in
the source to be available as the first entry in the
resulting subset iterator</td></tr><tr><td align="left" colspan="1"
rowspan="1" valign="top">var</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top"></td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">String</td><td align="left" colspan="1" rowspan="1"
valign="top">The name to store the resultant iterator into page context, if
such name is supplied</td></tr></table></p>
+<p><table width="100%"><tr><td colspan="6" rowspan="1"><h4>Dynamic Attributes
Allowed:</h4> false</td></tr><tr><td colspan="6"
rowspan="1"> </td></tr><tr><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Name</h4></th><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Required</h4></th><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Default</h4></th><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Evaluated</h4></th><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Type</h4></th><th align="left" colspan="1" rowspan="1"
valign="top"><h4>Description</h4></th></tr><tr><td align="left" colspan="1"
rowspan="1" valign="top">count</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top"></td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">Integer</td><td align="left" colspan="1" rowspan="1"
valign="top">Indicat
e the number of entries to be in the resulting subset
iterator</td></tr><tr><td align="left" colspan="1" rowspan="1"
valign="top">decider</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top"></td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">org.apache.struts2.util.SubsetIteratorFilter.Decider</td><td
align="left" colspan="1" rowspan="1" valign="top">Extension to plug-in a
decider to determine if that particular entry is to be included in the
resulting subset iterator</td></tr><tr><td align="left" colspan="1" rowspan="1"
valign="top">source</td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top"></td><td align="left" colspan="1" rowspan="1"
valign="top">false</td><td align="left" colspan="1" rowspan="1"
valign="top">String</td><td align="left" colspan="1" rowspan="1" valign="top"
>Indicate the source of which the resulting subset iterator is to be derived
>base on</td></tr><tr><td align="left" colspan="1" rowspan="1"
>valign="top">start</td><td align="left" colspan="1" rowspan="1"
>valign="top">false</td><td align="left" colspan="1" rowspan="1"
>valign="top"></td><td align="left" colspan="1" rowspan="1"
>valign="top">false</td><td align="left" colspan="1" rowspan="1"
>valign="top">Integer</td><td align="left" colspan="1" rowspan="1"
>valign="top">Indicate the starting index (eg. first entry is 0) of entries in
>the source to be available as the first entry in the resulting subset
>iterator</td></tr><tr><td align="left" colspan="1" rowspan="1"
>valign="top">var</td><td align="left" colspan="1" rowspan="1"
>valign="top">false</td><td align="left" colspan="1" rowspan="1"
>valign="top"></td><td align="left" colspan="1" rowspan="1"
>valign="top">false</td><td align="left" colspan="1" rowspan="1"
>valign="top">String</td><td align="left" colspan="1" rowspan="1"
>valign="top">The
name to store the resultant iterator into page context, if such name is
supplied</td></tr></table></p>
<h2 id="subset-Examples">Examples</h2>