Author: lukaszlenart
Date: Wed Jan 27 09:26:50 2016
New Revision: 978711

Log:
Updates production

Modified:
    websites/production/struts/content/docs/action-configuration.html
    websites/production/struts/content/docs/action.html
    websites/production/struts/content/docs/actionmapper.html
    websites/production/struts/content/docs/ajax-and-javascript-recipes.html
    websites/production/struts/content/docs/append.html
    websites/production/struts/content/docs/bean.html
    
websites/production/struts/content/docs/building-struts-2-fast-track-release.html
    
websites/production/struts/content/docs/building-struts-2-normal-release.html
    websites/production/struts/content/docs/building-struts-annotations.html
    websites/production/struts/content/docs/building-struts-master.html
    websites/production/struts/content/docs/cdi-plugin.html
    websites/production/struts/content/docs/client-side-validation.html
    websites/production/struts/content/docs/convention-plugin.html
    websites/production/struts/content/docs/cssxhtml-theme.html
    websites/production/struts/content/docs/date.html
    websites/production/struts/content/docs/deprecationinterceptor.html
    websites/production/struts/content/docs/file-upload.html
    websites/production/struts/content/docs/freemarker.html
    websites/production/struts/content/docs/generator.html
    websites/production/struts/content/docs/guides.html
    websites/production/struts/content/docs/interceptors.html
    websites/production/struts/content/docs/iterator.html
    websites/production/struts/content/docs/localization.html
    websites/production/struts/content/docs/merge.html
    websites/production/struts/content/docs/one-time-steps.html
    websites/production/struts/content/docs/property.html
    websites/production/struts/content/docs/rest-plugin.html
    websites/production/struts/content/docs/result-configuration.html
    websites/production/struts/content/docs/s2-026.html
    websites/production/struts/content/docs/sample-announcements.html
    websites/production/struts/content/docs/security.html
    websites/production/struts/content/docs/set.html
    websites/production/struts/content/docs/sort.html
    websites/production/struts/content/docs/struts-2-blank-archetype.html
    websites/production/struts/content/docs/struts-2-maven-archetypes.html
    websites/production/struts/content/docs/struts-2-spring-2-jpa-ajax.html
    websites/production/struts/content/docs/struts-defaultxml.html
    websites/production/struts/content/docs/struts-next.html
    websites/production/struts/content/docs/subset.html
    websites/production/struts/content/docs/text.html
    websites/production/struts/content/docs/textfield.html
    websites/production/struts/content/docs/tiles-2-plugin.html
    websites/production/struts/content/docs/tutorials.html
    websites/production/struts/content/docs/type-conversion.html
    websites/production/struts/content/docs/url.html
    websites/production/struts/content/docs/using-freemarker-templates.html
    websites/production/struts/content/docs/validation.html
    websites/production/struts/content/docs/version-notes-25.html
    websites/production/struts/content/docs/webxml.html
    websites/production/struts/content/docs/wildcard-method-selection.html
    websites/production/struts/content/docs/xhtml-form-template.html
    websites/production/struts/content/docs/xhtml-theme.html

Modified: websites/production/struts/content/docs/action-configuration.html
==============================================================================
--- websites/production/struts/content/docs/action-configuration.html (original)
+++ websites/production/struts/content/docs/action-configuration.html Wed Jan 
27 09:26:50 2016
@@ -139,12 +139,14 @@ under the License.
     <div class="pagecontent">
         <div class="wiki-content">
             <div id="ConfluenceContent"><p>The action mappings are the basic 
"unit-of-work" in the framework. Essentially, the action maps an identifier to 
a handler class. When a request matches the action's name, the framework uses 
the mapping to determine how to process the request.</p><p><style 
type="text/css">/*<![CDATA[*/
-div.rbtoc1443119320931 {padding: 0px;}
-div.rbtoc1443119320931 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1443119320931 li {margin-left: 0px;padding-left: 0px;}
-
-/*]]>*/</style></p><div class="toc-macro rbtoc1443119320931">
-<ul class="toc-indentation"><li><a shape="rect" 
href="#ActionConfiguration-ActionMappings">Action Mappings</a></li><li><a 
shape="rect" href="#ActionConfiguration-ActionNames">Action 
Names</a></li><li><a shape="rect" 
href="#ActionConfiguration-ActionMethods">Action Methods</a></li><li><a 
shape="rect" href="#ActionConfiguration-WildcardMethod">Wildcard 
Method</a></li><li><a shape="rect" 
href="#ActionConfiguration-DynamicMethodInvocation">Dynamic Method 
Invocation</a></li><li><a shape="rect" 
href="#ActionConfiguration-ActionSupportDefault">ActionSupport 
Default</a></li><li><a shape="rect" 
href="#ActionConfiguration-Post-BackDefault">Post-Back Default</a></li><li><a 
shape="rect" href="#ActionConfiguration-ActionDefault">Action Default</a>
+div.rbtoc1453884195503 {padding: 0px;}
+div.rbtoc1453884195503 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1453884195503 li {margin-left: 0px;padding-left: 0px;}
+
+/*]]>*/</style></p><div class="toc-macro rbtoc1453884195503">
+<ul class="toc-indentation"><li><a shape="rect" 
href="#ActionConfiguration-ActionMappings">Action Mappings</a></li><li><a 
shape="rect" href="#ActionConfiguration-ActionNames">Action 
Names</a></li><li><a shape="rect" 
href="#ActionConfiguration-ActionMethods">Action Methods</a></li><li><a 
shape="rect" href="#ActionConfiguration-WildcardMethod">Wildcard 
Method</a></li><li><a shape="rect" 
href="#ActionConfiguration-DynamicMethodInvocation">Dynamic Method 
Invocation</a>
+<ul class="toc-indentation"><li><a shape="rect" 
href="#ActionConfiguration-StrictDMI">Strict DMI</a></li><li><a shape="rect" 
href="#ActionConfiguration-StrictMethodInvocation">Strict Method 
Invocation</a></li></ul>
+</li><li><a shape="rect" 
href="#ActionConfiguration-ActionSupportDefault">ActionSupport 
Default</a></li><li><a shape="rect" 
href="#ActionConfiguration-Post-BackDefault">Post-Back Default</a></li><li><a 
shape="rect" href="#ActionConfiguration-ActionDefault">Action Default</a>
 <ul class="toc-indentation"><li><a shape="rect" 
href="#ActionConfiguration-WildcardDefault">Wildcard Default</a></li></ul>
 </li><li><a shape="rect" href="#ActionConfiguration-Next:">Next: Wildcard 
Mappings</a></li></ul>
 </div><h2 id="ActionConfiguration-ActionMappings">Action Mappings</h2><p>The 
action mapping can specify a set of result types, a set of exception handlers, 
and an interceptor stack. Only the <code>name</code> attribute is required. The 
other attributes can also be provided at package scope.</p><div class="code 
panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" 
style="border-bottom-width: 1px;"><b>A Logon Action</b></div><div 
class="codeContent panelContent pdl">
@@ -161,7 +163,7 @@ div.rbtoc1443119320931 li {margin-left:
        @Result(name="input", location="/Logon.jsp")
 )
 public class Logon {</pre>
-</div></div><p>&#160;</p><h2 id="ActionConfiguration-ActionNames">Action 
Names</h2><p>In a web application, the <code>name</code> attribute is matched 
as part of the location requested by a browser (or other HTTP client). The 
framework will drop the host and application name and the extension and match 
what's in the middle: the action name. So, a request for <code><a shape="rect" 
class="external-link" 
href="http://www.planetstruts.org/struts2-mailreader/Welcome.action"; 
rel="nofollow">http://www.planetstruts.org/struts2-mailreader/Welcome.action</a></code>
 will map to the <code>Welcome</code> action.</p><p>Within an application a 
link to an action is usually generated by a Struts Tag. The tag can specify the 
action by name, and the framework will render the default extension and 
anything else that is needed. Forms may also submit directly to a Struts Action 
name (rather than a "raw" URI).</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeHeader panelHeader pdl
 " style="border-bottom-width: 1px;"><b>A Hello Form</b></div><div 
class="codeContent panelContent pdl">
+</div></div><h2 id="ActionConfiguration-ActionNames">Action Names</h2><p>In a 
web application, the <code>name</code> attribute is matched as part of the 
location requested by a browser (or other HTTP client). The framework will drop 
the host and application name and the extension and match what's in the middle: 
the action name. So, a request for <code><a shape="rect" class="external-link" 
href="http://www.planetstruts.org/struts2-mailreader/Welcome.action"; 
rel="nofollow">http://www.planetstruts.org/struts2-mailreader/Welcome.action</a></code>
 will map to the <code>Welcome</code> action.</p><p>Within an application a 
link to an action is usually generated by a Struts Tag. The tag can specify the 
action by name, and the framework will render the default extension and 
anything else that is needed. Forms may also submit directly to a Struts Action 
name (rather than a "raw" URI).</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="bord
 er-bottom-width: 1px;"><b>A Hello Form</b></div><div class="codeContent 
panelContent pdl">
 <pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">&lt;s:form action="Hello"&gt;
     &lt;s:textfield label="Please enter your name" name="name"/&gt;
     &lt;s:submit/&gt;
@@ -182,16 +184,15 @@ public class CrudAction {
        @Action("delete")
        public String delete() {
                ...
-
 </pre>
-</div></div><p>&#160;</p><h2 id="ActionConfiguration-WildcardMethod">Wildcard 
Method</h2><p>Many times, a set of action mappings will share a common pattern. 
For example, all your <code>edit</code> actions might start with the word 
"edit", and call the <code>edit</code> method on the Action class. The 
<code>delete</code> actions might use the same pattern, but call the 
<code>delete</code> method instead.</p><p>Rather than code a separate mapping 
for each action class that uses this pattern, you can write it once as a 
wildcard mapping.</p><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
+</div></div><h2 id="ActionConfiguration-WildcardMethod">Wildcard 
Method</h2><p>Many times, a set of action mappings will share a common pattern. 
For example, all your <code>edit</code> actions might start with the word 
"edit", and call the <code>edit</code> method on the Action class. The 
<code>delete</code> actions might use the same pattern, but call the 
<code>delete</code> method instead.</p><p>Rather than code a separate mapping 
for each action class that uses this pattern, you can write it once as a 
wildcard mapping.</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;">&lt;action name="*Crud" class="example.Crud" 
method="{1}"&gt;
     ...
 </pre>
 </div></div><p>Here, a reference to "editCrud" will call the <code>edit</code> 
method on an instance of the Crud Action class. Likewise, a reference to 
"deleteCrud" will call the <code>delete</code> method instead.</p><p>Another 
common approach is to postfix the method name and set it off with an 
exclamation point (aka "bang"), underscore, or other special 
character.</p><ul><li>"action=Crud_input"</li><li>"action=Crud_delete"</li></ul><p>To
 use a postfix wildcard, just move the asterisk and add an underscore.</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;">&lt;action name="Crud_*" class="example.Crud" 
method="{1}"&gt;
 </pre>
-</div></div><p>From the framework's perspective, a wildcard mapping creates a 
new "virtual" mapping with all the same attributes as a conventional, static 
mapping. As a result, you can use the expanded wildcard name as the name of 
validation, type conversion, and message resource files, just as if it were an 
Action name (which it 
is!).</p><ul><li><code>Crud_input-validation.xml</code></li><li><code>Crud_delete-conversion.xml</code></li></ul><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>If Wildcard Method mapping uses a 
"!" in the action name, the Wildcard Method will overlap with another flexible 
approach to mapping, <a shape="rect" href="action-configuration.html">Dynamic 
Method Invocation</a>. To use action names that include the "!" character, set 
<code>struts.enable.DynamicMethodInvocation</code> to <
 code>FALSE</code> in the application configuration.</p></div></div><h2 
id="ActionConfiguration-DynamicMethodInvocation">Dynamic Method 
Invocation</h2><p>There's a feature embedded in WebWork 2 that lets the "!" 
(bang) character invoke a method other than <code>execute</code>. In WebWork, 
it doesn't really have a name. During the S2 discussions, we coined the term 
"dynamic method invocation" to describe how WW/S2 use the bang 
notation.</p><p>Dynamic Method Invocation (DMI) will use the string following a 
"!" character in an action name as the name of a method to invoke (instead of 
<code>execute</code>). A reference to "<code>Category!create.action</code>", 
says to use the "Category" action mapping, but call the <code>create</code> 
method instead.</p><p>Another way to use DMI is to provide HTTP parameters 
prefixed with "<code>method:</code>". For example in the URL it could be 
"<code>Category.action?method:create=foo</code>", the parameter value is 
ignored. In POST-Requests that can b
 e used e.g. with a hidden parameter (<code>&lt;s:hidden name="method:create" 
value="foo" /&gt;</code>) or along with a button (<code>&lt;s:submit 
method="create" /&gt;</code>).</p><p>&#160;</p><p>For Struts 2, we added a 
switch to disable DMI for two reasons. First, DMI can cause security issues if 
POJO actions are used. Second, DMI overlaps with the Wildcard Method feature 
that we brought over from Struts 1 (and from Cocoon before that). If you have 
security concerns, or would like to use the "!" character with Wildcard Method 
actions, then set <code>struts.enable.DynamicMethodInvocation</code> to 
<code>FALSE</code> in the application configuration.</p><p>The framework does 
support DMI, just like WebWork 2, but there are problems with way DMI is 
implemented. Essentially, the code scans the action name for a "!" character, 
and finding one, tricks the framework into invoking the other method instead of 
<code>execute</code>. The other method is invoked, but it uses the same 
configurat
 ion as the <code>execute</code> method, including validations. The framework 
"believes" it is invoking the <code>Category</code> action with the 
<code>execute</code> method.</p><p>The Wildcard Method feature is implemented 
differently. When a Wildcard Method action is invoked, the framework acts as if 
the matching action had been hardcoded in the configuration. The framework 
"believes" it's executing the action <code>Category!create</code> and "knows" 
it is executing the <code>create</code> method of the corresponding Action 
class. Accordingly, we can add for a Wildcard Method action mapping its own 
validations, message resources, and type converters, just like a conventional 
action mapping. For this reason, the <a shape="rect" 
href="action-configuration.html">Wildcard Method</a> is preferred.</p><p>In 
Struts 2.3, an option was added to restrict the methods that DMI can invoke. 
First, set the attribute <code>strict-method-invocation="true"</code> on your 
<code>&lt;package&gt;</code>
  element. This tells Struts to reject any method that is not explicitly 
allowed via either the <code>method</code> attribute (including wildcards) or 
the <code>&lt;allowed-methods&gt;</code> tag. Then specify 
<code>&lt;allowed-methods&gt;</code> as a comma-separated list of method names 
in your <code>&lt;action&gt;</code>. (If you specify a <code>method</code> 
attribute for your action, you do not need to list it in 
<code>&lt;allowed-methods&gt;</code>.)</p><p>Note that you can specify 
<code>&lt;allowed-methods&gt;</code> even without 
<code>strict-method-invocation</code>. This restricts access only for the 
specific actions that have <code>&lt;allowed-methods&gt;</code>.</p><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeHeader 
panelHeader pdl" style="border-bottom-width: 1px;"><b>Example 
struts.xml</b></div><div class="codeContent panelContent pdl">
+</div></div><p>From the framework's perspective, a wildcard mapping creates a 
new "virtual" mapping with all the same attributes as a conventional, static 
mapping. As a result, you can use the expanded wildcard name as the name of 
validation, type conversion, and message resource files, just as if it were an 
Action name (which it 
is!).</p><ul><li><code>Crud_input-validation.xml</code></li><li><code>Crud_delete-conversion.xml</code></li></ul><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>If Wildcard Method mapping uses a 
"!" in the action name, the Wildcard Method will overlap with another flexible 
approach to mapping, <a shape="rect" href="action-configuration.html">Dynamic 
Method Invocation</a>. To use action names that include the "!" character, set 
<code>struts.enable.DynamicMethodInvocation</code> to <
 code>FALSE</code> in the application configuration.</p></div></div><h2 
id="ActionConfiguration-DynamicMethodInvocation">Dynamic Method 
Invocation</h2><p>There's a feature embedded in Struts 2 that lets the "!" 
(bang) character invoke a method other than <code>execute</code>. It is called 
"Dynamic Method Invocation" aka DMI.</p><p>DMI will use the string following a 
"!" character in an action name as the name of a method to invoke (instead of 
<code>execute</code>). A reference to "<code>Category!create.action</code>", 
says to use the "Category" action mapping, but call the <code>create</code> 
method instead.</p><p>Another way to use DMI is to provide HTTP parameters 
prefixed with "<code>method:</code>". For example in the URL it could be 
"<code>Category.action?method:create=foo</code>", the parameter value is 
ignored. In POST-Requests that can be used e.g. with a hidden parameter 
(<code>&lt;s:hidden name="method:create" value="foo" /&gt;</code>) or along 
with a button (<code>&lt;s:su
 bmit method="create" /&gt;</code>).</p><p>For Struts 2, we added a switch to 
disable DMI for two reasons. First, DMI can cause security issues if POJO 
actions are used. Second, DMI overlaps with the Wildcard Method feature that we 
brought over from Struts 1 (and from Cocoon before that). If you have security 
concerns, or would like to use the "!" character with Wildcard Method actions, 
then set <code>struts.enable.DynamicMethodInvocation</code> to 
<code>FALSE</code> in the application configuration.</p><p>The framework does 
support DMI, but there are problems with way DMI is implemented. Essentially, 
the code scans the action name for a "!" character, and finding one, tricks the 
framework into invoking the other method instead of <code>execute</code>. The 
other method is invoked, but it uses the same configuration as the 
<code>execute</code> method, including validations. The framework "believes" it 
is invoking the <code>Category</code> action with the <code>execute</code> 
method.</
 p><p>The Wildcard Method feature is implemented differently. When a Wildcard 
Method action is invoked, the framework acts as if the matching action had been 
hardcoded in the configuration. The framework "believes" it's executing the 
action <code>Category!create</code> and "knows" it is executing the 
<code>create</code> method of the corresponding Action class. Accordingly, we 
can add for a Wildcard Method action mapping its own validations, message 
resources, and type converters, just like a conventional action mapping. For 
this reason, the <a shape="rect" href="action-configuration.html">Wildcard 
Method</a> is preferred.</p><h3 id="ActionConfiguration-StrictDMI">Strict 
DMI</h3><p>In Struts 2.3, an option was added to restrict the methods that DMI 
can invoke. First, set the attribute 
<code>strict-method-invocation="true"</code> on your 
<code>&lt;package&gt;</code> element. This tells Struts to reject any method 
that is not explicitly allowed via either the <code>method</code> attrib
 ute (including wildcards) or the <code>&lt;allowed-methods&gt;</code> tag. 
Then specify <code>&lt;allowed-methods&gt;</code> as a comma-separated list of 
method names in your <code>&lt;action&gt;</code>. (If you specify a 
<code>method</code> attribute for your action, you do not need to list it in 
<code>&lt;allowed-methods&gt;</code>.)</p><p>Note that you can specify 
<code>&lt;allowed-methods&gt;</code> even without 
<code>strict-method-invocation</code>. This restricts access only for the 
specific actions that have <code>&lt;allowed-methods&gt;</code>.</p><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeHeader 
panelHeader pdl" style="border-bottom-width: 1px;"><b>Example 
struts.xml</b></div><div class="codeContent panelContent pdl">
 <pre class="brush: xml; gutter: false; theme: Default" 
style="font-size:12px;">&lt;?xml version="1.0" encoding="UTF-8" ?&gt;
 &lt;!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
@@ -215,7 +216,39 @@ public class CrudAction {
   &lt;/package&gt;
 &lt;/struts&gt;
 </pre>
-</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>Strict DMI doesn't work with the 
Convention Plugin yet!</p></div></div><h2 
id="ActionConfiguration-ActionSupportDefault">ActionSupport Default</h2><p>If 
the class attribute in an action mapping is left blank, the 
<code>com.opensymphony.xwork2.ActionSupport</code> class is used as a 
default.</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
+</div></div><h3 id="ActionConfiguration-StrictMethodInvocation">Strict Method 
Invocation</h3><p>In Struts 2.5 the Strict DMI was extended and it's called 
"Strict Method Invocation" aka SMI. You can imagine that the DMI is a "border 
police", where SMI is a "tax police" and keeps eye on internals. With this 
version SMI is enabled by default (<code>strict-method-invocation</code> 
attribute is set to&#160;<code>true</code> by default 
in&#160;<code>struts-default</code> package), you have option to disable it per 
package - there is no global switch to disable SMI for the whole application. 
To gain advantage of new configuration option please use the latest DTD 
definition:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Struts 
2.5 DTD</b></div><div class="codeContent panelContent pdl">
+<pre class="brush: xml; gutter: false; theme: Default" 
style="font-size:12px;">&lt;?xml version="1.0" encoding="UTF-8" ?&gt;
+&lt;!DOCTYPE struts PUBLIC
+        "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
+        "http://struts.apache.org/dtds/struts-2.5.dtd"&gt;
+&lt;struts&gt;
+...
+&lt;/struts&gt;</pre>
+</div></div><p>SMI works in the following way:</p><ul style="list-style-type: 
square;"><li><code>&lt;allowed-methods&gt;</code>&#160;/ 
<code>@AllowedMethods</code>&#160;is defined per action - SMI works without 
switching it on but just for those actions (plus adding 
<code>&lt;global-allowed-methods/&gt;</code>)</li><li>SMI is enabled but no 
<code>&lt;allowed-methods&gt;</code>&#160;/ 
<code>@AllowedMethods</code>&#160;are defined - SMI works but only with 
<code>&lt;global-allowed-methods/&gt;</code></li><li><span style="line-height: 
1.42857;">SMI is disabled - call to any action method is allowed 
(&#160;<code>Regex: .*</code>&#160;)</span></li></ul><p><span 
style="line-height: 1.42857;">You can configure SMI per 
<code>&lt;action/&gt;</code> usinf&#160;<code>&lt;allowed-methods/&gt;</code> 
tag or via&#160;<code>@AllowedMethod</code> annotation plus using 
per&#160;<code>&lt;package/&gt;</code>&#160;<code>&lt;global-allowed-methods/&gt;</code>,
 see the examples below:</span></p><div cla
 ss="code panel pdl" style="border-width: 1px;"><div class="codeHeader 
panelHeader pdl" style="border-bottom-width: 1px;"><b>SMI via 
struts.xml</b></div><div class="codeContent panelContent pdl">
+<pre class="brush: xml; gutter: false; theme: Default" 
style="font-size:12px;">&lt;package ...&gt;
+  ...
+  
&lt;global-allowed-methods&gt;execute,input,back,cancel,browse&lt;/global-allowed-methods&gt;
+  ...
+&#160;
+  &lt;action name="Bar"&gt;
+    &lt;allowed-methods&gt;foo,bar&lt;/allowed-methods&gt;
+  &lt;/action&gt;
+&#160;
+  ...
+&lt;/package&gt;
+
+</pre>
+</div></div><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>SMI via 
annotation on action class level</b></div><div class="codeContent panelContent 
pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">@AllowedMethods("end")
+public class ClassLevelAllowedMethodsAction {
+    public String execute() { 
+        return ...
+    }
+}</pre>
+</div></div><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>SMI via 
annotation on package level (in package-info.java)</b></div><div 
class="codeContent panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default" 
style="font-size:12px;">@org.apache.struts2.convention.annotation.AllowedMethods("home,start")
+package org.apache.struts2.convention.actions.allowedmethods;</pre>
+</div></div><p>Allowed methods can be defined as:</p><ul 
style="list-style-type: square;"><li>literals 
ie.&#160;<code>execute,cancel</code></li><li>patterns when using with wildcard 
mapping, i.e <code>&lt;action ... method="do{2}"/&gt;</code></li><li>RegExs 
using <code>regex:</code>&#160;prefix, 
ie:&#160;<code>&lt;global-allowed-methods&gt;execute,input,cancel,regex:user([A-Z]*)&lt;/global-allowed-methods&gt;</code></li></ul><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 be aware when using your 
own <code>Configurationprovider</code> that the logic to set allowed methods is 
defined in built-in providers - <code>XmlConfigurationProvider</code> and 
<code>PackageBasedActionConfigBuilder</code> - and you must replicate such 
logic in your code as by default only <code>execute</code> method is allowed, 
eve
 n when SMI is disabled.</p></div></div><h2 
id="ActionConfiguration-ActionSupportDefault">ActionSupport Default</h2><p>If 
the class attribute in an action mapping is left blank, the 
<code>com.opensymphony.xwork2.ActionSupport</code> class is used as a 
default.</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;">&lt;action name="Hello"&gt;
    // ...
 &lt;/action&gt;

Modified: websites/production/struts/content/docs/action.html
==============================================================================
--- websites/production/struts/content/docs/action.html (original)
+++ websites/production/struts/content/docs/action.html Wed Jan 27 09:26:50 2016
@@ -166,7 +166,7 @@ Is "myAction" null outside the tag? fals
 
 <h2 id="action-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">&#160;</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">executeResult</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 the result of this action (probably a view) should be 
executed/rendered</td></tr><tr><td align="left" colspan="1" rowspan="1" 
valign="top">flush</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 the writer should be flush upon end of action component 
tag, default to true</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">ignoreContextParams</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 the request parameters are to be included when the action 
is invoked</td></tr><tr><td align="left" colspan="1" rowspan="1" 
valign="top">name</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 of the action to be executed (without the extension suffix 
eg. .action)</td></tr><tr><td align="left" colspan="1" rowspan="1" 
valign="top">nam
 espace</td><td align="left" colspan="1" rowspan="1" valign="top">false</td><td 
align="left" colspan="1" rowspan="1" valign="top">namespace from where tag is 
used</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">Namespace for action to 
call</td></tr><tr><td align="left" colspan="1" rowspan="1" 
valign="top">rethrowException</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 an exception should be rethrown, if the target action 
throws an exception</td></tr><tr><td align="left" colspan="1" rowspan="1" 
valign="top">var</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</t
 d><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">&#160;</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">executeResult</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 the result of this action (probably a view) should be 
executed/rendered</td></tr><tr><td align="left" colspan="1" rowspan="1" 
valign="top">flush</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 the writer should be flush upon end of action component 
tag, default to true</td></tr><tr><td align="left" colspan="1" rowspan="1" 
valign="top">ignoreContextParams</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 the request parameters are 
 to be included when the action is invoked</td></tr><tr><td align="left" 
colspan="1" rowspan="1" valign="top">name</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 of the action to be executed (without the extension suffix 
eg. .action)</td></tr><tr><td align="left" colspan="1" rowspan="1" 
valign="top">namespace</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">namespace from where tag is used</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">Namespace for action to call</td></tr><tr><td align="left" co
 lspan="1" rowspan="1" valign="top">rethrowException</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 an exception should be rethrown, if the target action 
throws an exception</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>
 
 <h2 id="action-Examples">Examples</h2>
 

Modified: websites/production/struts/content/docs/actionmapper.html
==============================================================================
--- websites/production/struts/content/docs/actionmapper.html (original)
+++ websites/production/struts/content/docs/actionmapper.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.rbtoc1440488860740 {padding: 0px;}
-div.rbtoc1440488860740 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1440488860740 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1453884194236 {padding: 0px;}
+div.rbtoc1453884194236 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1453884194236 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1440488860740">
+/*]]>*/</style></p><div class="toc-macro rbtoc1453884194236">
 <ul class="toc-indentation"><li><a shape="rect" 
href="#ActionMapper-Description">Description</a></li><li><a shape="rect" 
href="#ActionMapper-DefaultActionMapper">DefaultActionMapper</a>
 <ul class="toc-indentation"><li><a shape="rect" 
href="#ActionMapper-Methodprefix">Method prefix</a></li><li><a shape="rect" 
href="#ActionMapper-Actionprefix">Action prefix</a></li></ul>
 </li><li><a shape="rect" href="#ActionMapper-CustomActionMapper">Custom 
ActionMapper</a></li><li><a shape="rect" 
href="#ActionMapper-CompositeActionMapper">CompositeActionMapper</a></li><li><a 
shape="rect" 
href="#ActionMapper-PrefixBasedActionMapper">PrefixBasedActionMapper</a></li><li><a
 shape="rect" 
href="#ActionMapper-ActionMapperandActionMappingobjects">ActionMapper and 
ActionMapping objects</a>

Modified: 
websites/production/struts/content/docs/ajax-and-javascript-recipes.html
==============================================================================
--- websites/production/struts/content/docs/ajax-and-javascript-recipes.html 
(original)
+++ websites/production/struts/content/docs/ajax-and-javascript-recipes.html 
Wed Jan 27 09:26:50 2016
@@ -142,11 +142,11 @@ under the License.
 <p>The Dojo plugin will be deprecated on Struts 2.1</p></div></div>
 
 <style type="text/css">/*<![CDATA[*/
-div.rbtoc1440489201239 {padding: 0px;}
-div.rbtoc1440489201239 ul {list-style: none;margin-left: 0px;padding-left: 
20px;}
-div.rbtoc1440489201239 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1453884465157 {padding: 0px;}
+div.rbtoc1453884465157 ul {list-style: none;margin-left: 0px;padding-left: 
20px;}
+div.rbtoc1453884465157 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style><div class="toc-macro rbtoc1440489201239">
+/*]]>*/</style><div class="toc-macro rbtoc1453884465157">
 <ul class="toc-indentation"><li><a shape="rect" 
href="#AjaxandJavaScriptRecipes-Common">Common</a></li><li><a shape="rect" 
href="#AjaxandJavaScriptRecipes-Requests">Requests</a>
 <ul class="toc-indentation"><li><a shape="rect" 
href="#AjaxandJavaScriptRecipes-Requestistriggeredbyatopic">Request is 
triggered by a topic</a></li><li><a shape="rect" 
href="#AjaxandJavaScriptRecipes-Attachedtoanevent">Attached to an 
event</a></li><li><a shape="rect" 
href="#AjaxandJavaScriptRecipes-Attachedtoaneventonmultiplesources">Attached to 
an event on multiple sources</a></li><li><a shape="rect" 
href="#AjaxandJavaScriptRecipes-Attachedtomultipleeventsonmultiplesources">Attached
 to multiple events on multiple sources</a></li><li><a shape="rect" 
href="#AjaxandJavaScriptRecipes-Updatetargetelementwithcontentreturnedfromurl">Update
 target element with content returned from url</a></li><li><a shape="rect" 
href="#AjaxandJavaScriptRecipes-Updatemultipletargetelementswithcontentreturnedfromurl">Update
 multiple target elements with content returned from url</a></li><li><a 
shape="rect" 
href="#AjaxandJavaScriptRecipes-Showindicatorwhilerequestisinprogress">Show 
indicator while request is
  in progress</a></li><li><a shape="rect" 
href="#AjaxandJavaScriptRecipes-Highlightcontentoftargetwithbluecolor,for2seconds">Highlight
 content of target with blue color, for 2 seconds</a></li><li><a shape="rect" 
href="#AjaxandJavaScriptRecipes-ExecuteJavaScriptinthereturnedcontent">Execute 
JavaScript in the returned content</a></li><li><a shape="rect" 
href="#AjaxandJavaScriptRecipes-Publishatopicbeforetherequest">Publish a topic 
before the request</a></li><li><a shape="rect" 
href="#AjaxandJavaScriptRecipes-Publishatopicaftertherequest">Publish a topic 
after the request</a></li><li><a shape="rect" 
href="#AjaxandJavaScriptRecipes-Publishatopiconerror">Publish a topic on 
error</a></li><li><a shape="rect" 
href="#AjaxandJavaScriptRecipes-Showafixederrormessageonerror">Show a fixed 
error message on error</a></li><li><a shape="rect" 
href="#AjaxandJavaScriptRecipes-Preventarequest">Prevent a 
request</a></li><li><a shape="rect" 
href="#AjaxandJavaScriptRecipes-Submitaform(plainform)">Submit a 
 form (plain form)</a></li><li><a shape="rect" 
href="#AjaxandJavaScriptRecipes-Submitaform(usings:formtag)">Submit a form 
(using s:form tag)</a></li></ul>
 </li><li><a shape="rect" href="#AjaxandJavaScriptRecipes-Div">Div</a>

Modified: websites/production/struts/content/docs/append.html
==============================================================================
--- websites/production/struts/content/docs/append.html (original)
+++ websites/production/struts/content/docs/append.html Wed Jan 27 09:26:50 2016
@@ -153,7 +153,7 @@ the following will be how the appended i
 
 <h2 id="append-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">&#160;</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 of which if supplied will have the resultant appended 
iterator stored under 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">&#160;</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 o
 f which if supplied will have the resultant appended iterator stored under in 
the stack's context</td></tr></table></p>
 
 <h2 id="append-Example">Example</h2>
 

Modified: websites/production/struts/content/docs/bean.html
==============================================================================
--- websites/production/struts/content/docs/bean.html (original)
+++ websites/production/struts/content/docs/bean.html Wed Jan 27 09:26:50 2016
@@ -151,7 +151,7 @@ stack's Context.</p>
 
 <h1 id="bean-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">&#160;</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"><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">The class name of the bean to be instantiated (must respect 
JavaBean specification)</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">&#160;</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">name</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">The class name of the bean to be instantiated (must respect JavaBean 
specification)</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="bean-Examples">Examples</h1>
 

Modified: 
websites/production/struts/content/docs/building-struts-2-fast-track-release.html
==============================================================================
--- 
websites/production/struts/content/docs/building-struts-2-fast-track-release.html
 (original)
+++ 
websites/production/struts/content/docs/building-struts-2-fast-track-release.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-warning"><span 
class="aui-icon aui-icon-small aui-iconfont-error 
confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>This version is outdated! 
Work-in-progress!</p></div></div><h1 
id="BuildingStruts2-Fasttrackrelease-Content">Content</h1><p><style 
type="text/css">/*<![CDATA[*/
-div.rbtoc1440489354904 {padding: 0px;}
-div.rbtoc1440489354904 ul {list-style: none;margin-left: 0px;}
-div.rbtoc1440489354904 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1453884618782 {padding: 0px;}
+div.rbtoc1453884618782 ul {list-style: none;margin-left: 0px;}
+div.rbtoc1453884618782 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1440489354904">
+/*]]>*/</style></p><div class="toc-macro rbtoc1453884618782">
 <ul class="toc-indentation"><li><span class="TOCOutline">1</span> <a 
shape="rect" 
href="#BuildingStruts2-Fasttrackrelease-BuildingSteps(Struts)">Building Steps 
(Struts)</a>
 <ul class="toc-indentation"><li><span class="TOCOutline">1.1</span> <a 
shape="rect" href="#BuildingStruts2-Fasttrackrelease-Gettingready">Getting 
ready</a></li><li><span class="TOCOutline">1.2</span> <a shape="rect" 
href="#BuildingStruts2-Fasttrackrelease-Updateversionofarchetypes">Update 
version of archetypes</a></li><li><span class="TOCOutline">1.3</span> <a 
shape="rect" href="#BuildingStruts2-Fasttrackrelease-Applysecuritypatch">Apply 
security patch</a></li><li><span class="TOCOutline">1.4</span> <a shape="rect" 
href="#BuildingStruts2-Fasttrackrelease-Preparerelease">Prepare 
release</a></li><li><span class="TOCOutline">1.5</span> <a shape="rect" 
href="#BuildingStruts2-Fasttrackrelease-Performtherelease">Perform the 
release</a></li><li><span class="TOCOutline">1.6</span> <a shape="rect" 
href="#BuildingStruts2-Fasttrackrelease-Movetheassembliestothe/www/people.apache.org/builds/struts/$VERSIONdir">Move
 the assemblies to the /www/people.apache.org/builds/struts/$VERSION 
dir</a></li>
 <li><span class="TOCOutline">1.7</span> <a shape="rect" 
href="#BuildingStruts2-Fasttrackrelease-Jirastuff">Jira stuff</a></li><li><span 
class="TOCOutline">1.8</span> <a shape="rect" 
href="#BuildingStruts2-Fasttrackrelease-Voteonit">Vote on it</a></li><li><span 
class="TOCOutline">1.9</span> <a shape="rect" 
href="#BuildingStruts2-Fasttrackrelease-Copyfiles">Copy files</a></li><li><span 
class="TOCOutline">1.10</span> <a shape="rect" 
href="#BuildingStruts2-Fasttrackrelease-Promoterelease">Promote 
release</a></li><li><span class="TOCOutline">1.11</span> <a shape="rect" 
href="#BuildingStruts2-Fasttrackrelease-Cleanupoldreleases">Clean up old 
releases</a></li><li><span class="TOCOutline">1.12</span> <a shape="rect" 
href="#BuildingStruts2-Fasttrackrelease-Waitforrsync">Wait for 
rsync</a></li><li><span class="TOCOutline">1.13</span> <a shape="rect" 
href="#BuildingStruts2-Fasttrackrelease-(Optional)-UpdateSecurityBulletins">(Optional)
 - Update Security Bulletins</a></li><li><span class="TOCOu
 tline">1.14</span> <a shape="rect" 
href="#BuildingStruts2-Fasttrackrelease-Updatesite(Strutstoplevelsite)">Update 
site (Struts top level site)</a></li><li><span class="TOCOutline">1.15</span> 
<a shape="rect" 
href="#BuildingStruts2-Fasttrackrelease-Updatesite(Struts2site)">Update site 
(Struts 2 site)</a></li><li><span class="TOCOutline">1.16</span> <a 
shape="rect" href="#BuildingStruts2-Fasttrackrelease-Postannouncements">Post 
announcements</a></li></ul>
 </li></ul>

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 
Wed Jan 27 09:26:50 2016
@@ -139,22 +139,20 @@ 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.rbtoc1440489353613 {padding: 0px;}
-div.rbtoc1440489353613 ul {list-style: none;margin-left: 0px;}
-div.rbtoc1440489353613 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1453884620028 {padding: 0px;}
+div.rbtoc1453884620028 ul {list-style: none;margin-left: 0px;}
+div.rbtoc1453884620028 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1440489353613">
-<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-Createareleasebranch">Create 
a release branch</a></li><li><span class="TOCOutline">5</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Preparerelease">Prepare 
release</a></li><li><span class="TOCOutline">6</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Performtherelease">Perform the 
release</a></li><li><span class="TOCOutline">7</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Movetheasse
 mblies">Move the assemblies</a></li><li><span class="TOCOutline">8</span> <a 
shape="rect" 
href="#BuildingStruts2-Normalrelease-Announceavailability">Announce 
availability</a></li><li><span class="TOCOutline">9</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Cleanuprepository">Clean up 
repository</a></li><li><span class="TOCOutline">10</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Voteonit">Vote on it</a></li><li><span 
class="TOCOutline">11</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Copyfiles">Copy files</a></li><li><span 
class="TOCOutline">12</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Promoterelease">Promote 
release</a></li><li><span class="TOCOutline">13</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Cleanupoldreleases">Clean up old 
releases</a></li><li><span class="TOCOutline">14</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Waitforrsync">Wait for 
rsync</a></li><li><span class="TOCOutline">15</s
 pan> <a shape="rect" href="#BuildingStruts2-Normalrelease-Updatesite">Update 
site</a></li><li><span class="TOCOutline">16</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Redeploythedocs(Optional)">Redeploy the 
docs (Optional)</a></li><li><span class="TOCOutline">17</span> <a shape="rect" 
href="#BuildingStruts2-Normalrelease-Postannouncements">Post 
announcements</a></li></ul>
+/*]]>*/</style></p><div class="toc-macro rbtoc1453884620028">
+<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&#160;<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&#160;<code>/docs</code></li></ol><h3 
id="BuildingStruts2-Normalrelease-UpdateDraftDocswhenneeded">Update Draft Docs 
when needed</h3><p>Checkout&#160;<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
 mvn package</pre>
 </div></div><p>If build will fail try again - don't 
use&#160;<code>clean</code>, the exporter is going to update only outdated 
pages. After successful export, commit updated files 
into&#160;<code>struts-production</code></p><h3 
id="BuildingStruts2-Normalrelease-Besureyourlocalcopyisup-to-date">Be sure your 
local copy is up-to-date</h3><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;">git fetch origin --prune
-git checkout develop
+git checkout master
 git pull</pre>
-</div></div><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 remember to keep BOM 
subproject in sync - 
<code>&lt;struts-version.version&gt;X.X.X&lt;/struts-version.version&gt;</code> 
- must be the same as the parent pom.</p></div></div><h3 
id="BuildingStruts2-Normalrelease-Createareleasebranch">Create a release 
branch</h3><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;">git flow release start X.X.X.X</pre>
-</div></div><p>Now you should be on&#160;<code>release/X.X.X.X</code> branch 
(<code>git status</code>&#160;supposed to confirm that).</p><h3 
id="BuildingStruts2-Normalrelease-Preparerelease"><span style="line-height: 
1.5625;">Prepare release</span></h3><p>Tag the release by using the 
"release:prepare" goal of Maven:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><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 remember to keep BOM 
subproject in sync - 
<code>&lt;struts-version.version&gt;X.X.X&lt;/struts-version.version&gt;</code> 
- must be the same as the parent pom. The latest Maven version handles this 
case very well but it's worth checking if the bits are in 
sync.</p></div></div><h3 
id="BuildingStruts2-Normalrelease-Preparerelease">Prepare release</h3><p>Tag 
the release by using the "release:prepare" goal of Maven:</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;">mvn release:prepare -DautoVersionSubmodules=true
 </pre>
 </div></div><p>For a <a shape="rect" class="external-link" 
href="http://maven.apache.org/plugins/maven-release-plugin/usage.html";>dry 
run</a>, add <code>-DdryRun=true</code>. If you do a dry run, use <code>mvn 
release:clean</code> to clean up after you have looked at the 
output.</p><p>When prompted for the SCM tag name, follow this pattern: 
STRUTS_2_3_[PATCH_VERSION]</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>If you get an error message, try 
to re-run <code>mvn release:prepare -DautoVersionSubmodules=true</code> command 
again, <code>-Dresume</code> flag is set to true by default and the plugin will 
resume the release process from where it failed 
before.</p></div></div><p>Follow the link to get&#160;<a shape="rect" 
class="external-link" 
href="http://maven.apache.org/plugins/maven-release-plugin/exampl
 es/prepare-release.html">more information</a>&#160;about performed operation 
by release plugin.</p><h3 
id="BuildingStruts2-Normalrelease-Performtherelease">Perform the 
release</h3><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
@@ -212,15 +210,9 @@ cd ..
 rm -r struts-dev
 
 echo "Done!"</pre>
-</div></div><p>After this step artifacts are available for test here&#160;<a 
shape="rect" class="external-link" 
href="https://dist.apache.org/repos/dist/dev/struts/";>https://dist.apache.org/repos/dist/dev/struts/</a></p><h3
 id="BuildingStruts2-Normalrelease-Announceavailability"><span 
style="font-size: 16.0px;line-height: 1.5625;">Announce 
availability</span></h3><p>Send a short e-mail to dev@struts.a.o informing 
about the new packages and to give people enough time to test the distribution 
(actual bits). Wait around a week before posting Vote. If no show-stoppers 
reported, start a vote thread for build quality designation.</p><h3 
id="BuildingStruts2-Normalrelease-Cleanuprepository">Clean up 
repository</h3><p>It doesn't matter if the bits will be accepted or not, 
development continues&#160;<img class="emoticon emoticon-smile" 
src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/smile.png";
 data-emoticon-name="smile"
  alt="(smile)">&#160;Switch to&#160;<code>release/X.X.X.X</code> branch and 
execute the below command:</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;">git flow release finish -n X.X.X.X</pre>
-</div></div><p><code>-n</code> option is need to avoid tagging the release, 
the Maven Release plugin did that already.</p><p>Now 
both&#160;<code>master</code> and&#160;<code>develop</code> branches should be 
up to date with the changes introduced by the release. As Maven bumps version 
and also prepares for next development cycle, but do this on the same branch 
(or rather&#160;<code>maven-release-plugin</code>&#160;knows nothing about 
git-flow and branching), after finishing the release you must manually update 
actual version in the&#160;<code>master</code> branch - without this</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;">git checkout master
-mvn versions:set -DnewVersion=X.X.X.X -DgenerateBackupPoms=false
-git commit -m "Sets proper released version"
-git push
-git checkout develop</pre>
-</div></div><p>Now the&#160;<code>master</code> branch has a proper version - 
it isn't the best solution and if you have better please let me know!</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>Do not remove the tag! It clearly 
indicates what was planned and it can be used as a history marker. Always used 
the next version number, do not redeploy the same version as it breaks Maven's 
policy and you will have to manually clean up Maven 
repository.</p></div></div><h3 id="BuildingStruts2-Normalrelease-Voteonit">Vote 
on it</h3><p>Post a release/quality vote to the dev list (and 
<strong>only</strong> the dev list). The example mail is on <a shape="rect" 
href="sample-announcements.html">Sample announcements</a> page. If the vote 
result is for an ASF release (i.e. not test build), update site, announce. If 
the 
 vote result is for GA, push to central.</p><h3 
id="BuildingStruts2-Normalrelease-Copyfiles">Copy files</h3><p>After the vote, 
if the distribution is being mirrored (there was a favourable release vote) 
move all the artefa<span style="line-height: 1.4285715;">cts from 
<code>dev</code> folder into <code>release</code> folder:</span></p><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+</div></div><p>After this step artifacts are available for test here&#160;<a 
shape="rect" class="external-link" 
href="https://dist.apache.org/repos/dist/dev/struts/";>https://dist.apache.org/repos/dist/dev/struts/</a></p><h3
 id="BuildingStruts2-Normalrelease-Announceavailability"><span 
style="font-size: 16.0px;line-height: 1.5625;">Announce 
availability</span></h3><p>Send a short e-mail to dev@struts.a.o informing 
about the new packages and to give people enough time to test the distribution 
(actual bits). Wait around a week before posting Vote. If no show-stoppers 
reported, start a vote thread for build quality designation.</p><h3 
id="BuildingStruts2-Normalrelease-Pushchanges">Push changes</h3><p>Do not 
forget to push your local changes to the Apache repo</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;">git push</pre>
+</div></div><h3 id="BuildingStruts2-Normalrelease-Voteonit">Vote on 
it</h3><p>Post a release/quality vote to the dev list (and 
<strong>only</strong> the dev list). The example mail is on <a shape="rect" 
href="sample-announcements.html">Sample announcements</a> page. If the vote 
result is for an ASF release (i.e. not test build), update site, announce. If 
the vote result is for GA, push to central.</p><h3 
id="BuildingStruts2-Normalrelease-Copyfiles">Copy files</h3><p>After the vote, 
if the distribution is being mirrored (there was a favourable release vote) 
move all the artefa<span style="line-height: 1.4285715;">cts from 
<code>dev</code> folder into <code>release</code> folder:</span></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;">svn mv 
https://dist.apache.org/repos/dist/dev/struts/$VERSION/ 
https://dist.apache.org/repos/dist/release/struts/  </pre>
 </div></div><h3 id="BuildingStruts2-Normalrelease-Promoterelease">Promote 
release</h3><p>Log in again to <a shape="rect" class="external-link" 
href="http://repository.apache.org/";>Nexus</a> and <strong>release</strong> the 
repository, it will be automatically replicated across Maven Repositories<br 
clear="none"> See <a shape="rect" class="external-link" 
href="http://maven.apache.org/developers/release/apache-release.html";>Releasing 
a Maven-based project</a> for further details.</p><h3 
id="BuildingStruts2-Normalrelease-Cleanupoldreleases">Clean up old 
releases</h3><p>Remove the old files from under <a shape="rect" 
class="external-link" 
href="https://dist.apache.org/repos/dist/release/struts/";>https://dist.apache.org/repos/dist/release/struts/</a>&#160;to
 synchronise only the latest version with peers. All the files from <a 
shape="rect" class="external-link" 
href="https://dist.apache.org/repos/dist/release/struts/";>https://dist.apache.org/repos/dist/release/struts/</a>&#160;are
 always
  mirrored to <a shape="rect" class="external-link" 
href="http://archive.apache.org/dist/struts/";>http://archive.apache.org/dist/struts/</a>.&#160;You
 can use the below command:</p><div class="preformatted panel" 
style="border-width: 1px;"><div class="preformattedContent panelContent">
 <pre>svn del https://dist.apache.org/repos/dist/release/struts/2.3.x/
@@ -228,7 +220,7 @@ git checkout develop</pre>
 </div></div><p>where <code>x</code> is the previous version to remove (or one 
more previous to keep current and one version back).</p><h3 
id="BuildingStruts2-Normalrelease-Waitforrsync">Wait for rsync</h3><p>Wait 24 
hours before proceeding.</p><h3 
id="BuildingStruts2-Normalrelease-Updatesite"><span style="line-height: 
1.5625;">Update site</span></h3><ul><li><p>Check out site src code</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;">git clone 
https://git-wip-us.apache.org/repos/asf/struts-site.git
 </pre>
-</div></div></li><li>If a new DTD was defined, add it 
to&#160;<code>source/dtds</code></li><li>Update current version and release 
date in&#160;<code>struts-site/_config.yml</code></li><li>Update page source 
files<ul><li>struts-site/source/announce.md (if applicable, refer also to 
corresponding security bulletin)</li><li>struts-site/source/downloads.html 
(Prior Releases section)</li><li>struts-site/source/index.html (some parts will 
updated automatically with values defined 
in&#160;<code>_config.yml</code>)</li></ul></li><li>Generate site with 
Jekyll<ul><li><code>jekyll build</code></li><li>with <code>jekyll serve 
-w</code> you can check the generated site at 
http://localhost:4000</li></ul></li><li><p>Commit the changes and the generated 
content</p></li></ul><p>Now the changes must be deployed to production which is 
basically a separated Subversion repository, you check it out with command 
below:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelC
 ontent pdl">
+</div></div></li><li>If a new DTD was defined, add it 
to&#160;<code>source/dtds</code></li><li>Update current version and release 
date in&#160;<code>struts-site/_config.yml</code></li><li>Update page source 
files<ul><li>struts-site/source/announce.md (if applicable, refer also to 
corresponding security bulletin)</li><li>struts-site/source/downloads.html 
(Prior Releases section)</li><li>struts-site/source/index.html (some parts will 
updated automatically with values defined 
in&#160;<code>_config.yml</code>)</li></ul></li><li>Generate site with Docker 
Jekyll image<ul><li>you must have Docker installed and running</li><li>if you 
are doing this the first time, download the official Struts image to build the 
site from&#160;<a shape="rect" class="external-link" 
href="https://hub.docker.com/r/theapachestruts/struts-site-jekyll/"; 
rel="nofollow">https://hub.docker.com/r/theapachestruts/struts-site-jekyll/</a></li><li>start&#160;<code>docker-machine</code></li><li>now
 you can use one of the b
 ash scripts already provided in 
the&#160;<code>struts-site</code>:<ul><li><code>docker-run.sh</code> - used 
with Bash</li><li><code>docker-run.fish</code> - to use with Fish Shell 
(via&#160;<code>fish docker-run.fish</code>)</li></ul></li><li>now you can 
check the generated site at http://localhost:4000</li></ul></li><li><p>Commit 
the changes and the generated content</p></li></ul><p>Now the changes must be 
deployed to production which is basically a separated Subversion repository, 
you check it out with command below:</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;">svn co 
https://svn.apache.org/repos/infra/websites/production/struts/content 
struts-production</pre>
 </div></div><p>It's a good idea to keep that working copy to be used with 
future releases. Right now copy content 
of&#160;<code>struts-site/content</code>&#160;folder 
to&#160;<code>struts-production</code>&#160;folder, then commit changes. Next 
step is to update exported wiki pages. With current approach the pages are kept 
in&#160;<code>struts-production/docs</code>.</p><h3 
id="BuildingStruts2-Normalrelease-Redeploythedocs(Optional)"><span 
style="line-height: 1.5625;">Redeploy the docs (Optional)</span></h3><ul 
style="list-style-type: square;"><li><p>Checkout source of the website and 
export Confluence pages</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;">svn co 
https://svn.apache.org/repos/asf/struts/site/trunk 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 
Wed Jan 27 09:26:50 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.rbtoc1440489348319 {padding: 0px;}
-div.rbtoc1440489348319 ul {list-style: none;margin-left: 0px;}
-div.rbtoc1440489348319 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1453884615253 {padding: 0px;}
+div.rbtoc1453884615253 ul {list-style: none;margin-left: 0px;}
+div.rbtoc1453884615253 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style><div class="toc-macro rbtoc1440489348319">
+/*]]>*/</style><div class="toc-macro rbtoc1453884615253">
 <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 Wed Jan 
27 09:26:50 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.rbtoc1440489362313 {padding: 0px;}
-div.rbtoc1440489362313 ul {list-style: none;margin-left: 0px;}
-div.rbtoc1440489362313 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1453884624327 {padding: 0px;}
+div.rbtoc1453884624327 ul {list-style: none;margin-left: 0px;}
+div.rbtoc1453884624327 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style><div class="toc-macro rbtoc1440489362313">
+/*]]>*/</style><div class="toc-macro rbtoc1453884624327">
 <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 Wed Jan 27 09:26:50 
2016
@@ -139,11 +139,11 @@ under the License.
     <div class="pagecontent">
         <div class="wiki-content">
             <div id="ConfluenceContent"><style type="text/css">/*<![CDATA[*/
-div.rbtoc1440489369636 {padding: 0px;}
-div.rbtoc1440489369636 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1440489369636 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1453884633827 {padding: 0px;}
+div.rbtoc1453884633827 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1453884633827 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style><div class="toc-macro rbtoc1440489369636">
+/*]]>*/</style><div class="toc-macro rbtoc1453884633827">
 <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/client-side-validation.html
==============================================================================
--- websites/production/struts/content/docs/client-side-validation.html 
(original)
+++ websites/production/struts/content/docs/client-side-validation.html Wed Jan 
27 09:26:50 2016
@@ -138,51 +138,22 @@ under the License.
 
     <div class="pagecontent">
         <div class="wiki-content">
-            <div id="ConfluenceContent">
-
-<p>The framework adds support for client-side validation on top of the 
standard validation framework.  </p>
-
-<p>Client-side validation can be enabled on a per-form basis by specifying 
<code>validate="true"</code> in the <a shape="rect" href="form.html">form</a> 
tag.</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<pre class="brush: html; gutter: false; theme: Default" 
style="font-size:12px;">
-&lt;saf:form name="test" action="javascriptValidation" validate="true"&gt;
+            <div id="ConfluenceContent"><p>The framework adds support for 
client-side validation on top of the standard validation 
framework.</p><p>Client-side validation can be enabled on a per-form basis by 
specifying <code>validate="true"</code> in the <a shape="rect" 
href="form.html">form</a> tag.</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<pre class="brush: html; gutter: false; theme: Default" 
style="font-size:12px;">&lt;s:form name="test" action="javascriptValidation" 
validate="true"&gt;
   ...
-&lt;/saf:form&gt;
+&lt;/s:form&gt;
 </pre>
-</div></div>
-
-<p>If a <code>name</code> for the form is not given, the action mapping name 
will be used as the form name. Otherwise, a correct <code>action</code> and 
<code>namespace</code> attributes must be provided to the 
<code>&lt;saf:form&gt;</code> tag.  </p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader 
panelHeader pdl" style="border-bottom-width: 1px;"><b>Referencing 
"submitProfile" in the "/user" namespace</b></div><div class="codeContent 
panelContent pdl">
-<pre class="brush: html; gutter: false; theme: Default" 
style="font-size:12px;">
-&lt;saf:form namespace="/user" action="submitProfile" validate="true"&gt;
+</div></div><p>If a <code>name</code> for the form is not given, the action 
mapping name will be used as the form name. Otherwise, a correct 
<code>action</code> and <code>namespace</code> attributes must be provided to 
the <code>&lt;saf:form&gt;</code> tag.</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeHeader panelHeader pdl" 
style="border-bottom-width: 1px;"><b>Referencing "submitProfile" in the "/user" 
namespace</b></div><div class="codeContent panelContent pdl">
+<pre class="brush: html; gutter: false; theme: Default" 
style="font-size:12px;">&lt;s:form namespace="/user" action="submitProfile" 
validate="true"&gt;
   ...
-&lt;/saf:form&gt;
+&lt;/s:form&gt;
 </pre>
-</div></div>
-
-<p>Technically, the form's action attribute can refer to a "path" that 
includes the namespace and action as a URI. But, client-side validation 
<strong>requires</strong> that the action name and namespeact to be set 
separately.  </p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader 
panelHeader pdl" style="border-bottom-width: 1px;"><b>Won't work with 
client-side validation!</b></div><div class="codeContent panelContent pdl">
-<pre class="brush: html; gutter: false; theme: Default" 
style="font-size:12px;">
-&lt;saf:form action="/user/submitProfile.action" validate="true"&gt;
+</div></div><p>Technically, the form's action attribute can refer to a "path" 
that includes the namespace and action as a URI. But, client-side validation 
<strong>requires</strong> that the action name and namespeact to be set 
separately.</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Won't 
work with client-side validation!</b></div><div class="codeContent panelContent 
pdl">
+<pre class="brush: html; gutter: false; theme: Default" 
style="font-size:12px;">&lt;s:form action="/user/submitProfile.action" 
validate="true"&gt;
   ...
-&lt;/saf:form&gt;
+&lt;/s:form&gt;
 </pre>
-</div></div>
-
-<p>All the usual <a shape="rect" href="validation.html">validation 
configuration</a> steps apply to client-side validation. Client-side validation 
uses the same validation rules as server-side validation. If server-side 
validation doesn't work, then client-side validation won't work either.</p>
-
-<div class="confluence-information-macro 
confluence-information-macro-information"><p class="title">The left hand 
doesn't know ...</p><span class="aui-icon aui-icon-small aui-iconfont-info 
confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body">
-<p>The <code>required</code> attribute on many <a shape="rect" 
href="struts-tags.html">Struts Tags</a> is not integrated with client-side 
validation! The tag attribute is used by certain themes (like xhtml) to put a 
visual marker (usually '*') next to the field. The tag doesn't know if the 
validation system actually "requires" the field or not.</p></div></div>
-
-<h2 id="ClientSideValidation-ClientSideValidationTypes">Client Side Validation 
Types</h2>
-
-<p>There are two styles of client side validation. </p>
-
-<div class="table-wrap"><table class="confluenceTable"><tbody><tr><th 
colspan="1" rowspan="1" class="confluenceTh"><p> <a shape="rect" 
href="pure-javascript-client-side-validation.html">Pure JavaScript Client Side 
Validation</a> </p></th><td colspan="1" rowspan="1" class="confluenceTd"><p> 
Used by the <a shape="rect" href="xhtml-theme.html">xhtml theme</a> and <a 
shape="rect" href="cssxhtml-theme.html">css_xhtml theme</a> 
</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> <a 
shape="rect" href="ajax-client-side-validation.html">AJAX Client Side 
Validation</a>            </p></th><td colspan="1" rowspan="1" 
class="confluenceTd"><p> Used by the <a shape="rect" 
href="ajax-theme.html">ajax theme</a> </p></td></tr></tbody></table></div>
-</div>
+</div></div><p>All the usual <a shape="rect" href="validation.html">validation 
configuration</a> steps apply to client-side validation. Client-side validation 
uses the same validation rules as server-side validation. If server-side 
validation doesn't work, then client-side validation won't work either.</p><div 
class="confluence-information-macro 
confluence-information-macro-information"><p class="title">The left hand 
doesn't know ...</p><span class="aui-icon aui-icon-small aui-iconfont-info 
confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>The <code>required</code> 
attribute on many <a shape="rect" href="struts-tags.html">Struts Tags</a> is 
not integrated with client-side validation! The tag attribute is used by 
certain themes (like xhtml) to put a visual marker (usually '*') next to the 
field. The tag doesn't know if the validation system actually "requires" the 
field or not.</p></div></div><h2 id="ClientSideValidation-ClientSideValidationT
 ypes">Client Side Validation Types</h2><p>There are two styles of client side 
validation.</p><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p><a shape="rect" 
href="pure-javascript-client-side-validation.html">Pure JavaScript Client Side 
Validation</a></p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>Used 
by the <a shape="rect" href="xhtml-theme.html">xhtml theme</a> and <a 
shape="rect" href="cssxhtml-theme.html">css_xhtml 
theme</a></p></td></tr><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p><a shape="rect" 
href="ajax-client-side-validation.html">AJAX Client Side 
Validation</a></p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>Used 
by the <a shape="rect" href="ajax-theme.html">ajax 
theme</a></p></td></tr></tbody></table></div></div>
         </div>
 
                     <div class="tabletitle">



Reply via email to