Modified: websites/production/struts/content/docs/message-store-interceptor.html ============================================================================== --- websites/production/struts/content/docs/message-store-interceptor.html (original) +++ websites/production/struts/content/docs/message-store-interceptor.html Mon Feb 29 19:38:05 2016 @@ -138,114 +138,34 @@ under the License. <div class="pagecontent"> <div class="wiki-content"> - <div id="ConfluenceContent"><p> -An interceptor to store a ValidationAware action's messages / errors and field errors into -HTTP Session, such that it will be retrievable at a later stage. This allows the action's message / -errors and field errors to be available longer that just the particular HTTP request. -</p> - -<p></p><p> -If no session exists, nothing will be stored and can be retrieved later. In other terms, -the application is responsible to open the session. -</p> - -<p></p><p> -In the 'STORE' mode, the interceptor will store the ValidationAware action's message / errors -and field errors into HTTP session. -</p> - -<p></p><p> -In the 'RETRIEVE' mode, the interceptor will retrieve the stored action's message / errors and field -errors and put them back into the ValidationAware action. -</p> - -<p></p><p> -In the 'AUTOMATIC' mode, the interceptor will always retrieve the stored action's message / errors -and field errors and put them back into the ValidationAware action, and after Action execution, -if the com.opensymphony.xwork2.Result is an instance of ServletRedirectResult, the action's message / errors -and field errors into automatically be stored in the HTTP session.. -</p> - -<p></p><p> -The interceptor does nothing in the 'NONE' mode, which is the default. -</p> - -<p></p><p> -The operation mode could be switched using:<br clear="none"> -1] Setting the interceptor parameter eg. -</p> -<pre> - <action name="submitApplication" ...> - <interceptor-ref name="store"> - <param name="operationMode">STORE</param> - </interceptor-ref> - <interceptor-ref name="defaultStack" /> - .... - </action> -</pre> - -<p></p><p> -2] Through request parameter (allowRequestParameterSwitch must be 'true' which is the default) -</p> - -<p></p><pre> - // the request will have the operation mode in 'STORE' - http://localhost:8080/context/submitApplication.action?operationMode=STORE -</pre> - - -<h2 id="MessageStoreInterceptor-Parameters">Parameters</h2> - - -<p></p><ul><li>allowRequestParameterSwitch - To enable request parameter that could switch the operation mode - of this interceptor. </li><li>requestParameterSwitch - The request parameter that will indicate what mode this - interceptor is in. </li><li>operationMode - The operation mode this interceptor should be in - (either 'STORE', 'RETRIEVE', 'AUTOMATIC', or 'NONE'). 'NONE' being the default.</li></ul> - - -<h2 id="MessageStoreInterceptor-ExtendingtheInterceptor">Extending the Interceptor</h2> - -<p></p><p> -The following method could be overridden: -</p> - -<p></p><ul><li>getRequestOperationMode - get the operation mode of this interceptor based on the request parameters</li><li>mergeCollection - merge two collections</li><li>mergeMap - merge two map</li></ul> - - -<h2 id="MessageStoreInterceptor-Examples">Examples</h2> - -<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[ - -<action name="submitApplication" ....> - <interceptor-ref name="store"> - <param name="operationMode">aSTORE</param> - </interceptor-ref> - <interceptor-ref name="defaultStack" /> - <result name="input" type="redirect">aapplicationFailed.action</result> - <result type="dispatcher">applicationSuccess.jsp</result> + <div id="ConfluenceContent"><p>An interceptor to store a <a shape="rect" class="unresolved" href="#">ValidationAware</a> action's messages / errors and field errors into HTTP Session, such that it will be retrievable at a later stage. This allows the action's message / errors and field errors to be available longer that just the particular HTTP request.</p><p>If no session exists, nothing will be stored and can be retrieved later. In other terms, the application is responsible to open the session.</p><p>In the <strong>STORE</strong> mode, the interceptor will store the <a shape="rect" class="unresolved" href="#">ValidationAware</a> action's message / errors and field errors into HTTP session.</p><p>In the <strong>RETRIEVE</strong> mode, the interceptor will retrieve the stored action's message / errors and field errors and put them back into the <a shape="rect" class="unresolved" href="#">ValidationAware</a> action.</p><p >In the <strong>AUTOMATIC</strong> mode, the interceptor will always >retrieve the stored action's message / errors and field errors and put >them back into the [ValidationAware] action, and after Action >execution, if the <a shape="rect" class="unresolved" >href="#">Result</a> is an instance of <a shape="rect" class="unresolved" >href="#">ServletRedirectResult</a>, the action's message / errors and >field errors into automatically be stored in the HTTP session..</p><p>The >interceptor does nothing in the <strong>NONE</strong> mode, which is the >default.</p><p>The operation mode could be switched >using:</p><ol><li><p>Setting the interceptor parameter eg.</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="submitApplication" ...> + <interceptor-ref name="store"/> + <param name="operationMode">STORE</param> + </interceptor-ref> + <interceptor-ref name="defaultStack" /> + .... +</action></pre> +</div></div></li><li><p>Through request parameter <code>allowRequestParameterSwitch</code> must be 'true' which is the 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;">the request will have the operation mode in 'STORE' +http://localhost:8080/context/submitApplication.action?operationMode=STORE</pre> +</div></div></li></ol><h2 id="MessageStoreInterceptor-Parameters">Parameters</h2><ul><li><code>allowRequestParameterSwitch</code> - To enable request parameter that could switch the operation mode of this interceptor.</li><li><code>requestParameterSwitch</code> - The request parameter that will indicate what mode this interceptor is in.</li><li><code>operationMode</code> - The operation mode this interceptor should be in (either <strong>STORE</strong>, <strong>RETRIEVE</strong>, <strong>AUTOMATIC</strong>, or <strong>NONE</strong>). <strong>NONE </strong>being the default.</li></ul><h2 id="MessageStoreInterceptor-ExtendingtheInterceptor">Extending the Interceptor</h2><p>There is no known extensions.</p><h2 id="MessageStoreInterceptor-Examples">Examples</h2><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="submitApplication" ....> + <interceptor-ref name="store"> + <param name="operationMode">STORE</param> + </interceptor-ref> + <interceptor-ref name="defaultStack" /> + <result name="input" type="redirectAction">applicationFailed</result> + <result type="dispatcher">applicationSuccess.jsp</result> </action> -<action name="applicationFailed" ....> - <interceptor-ref name="store"> - <param name="operationMode">RETRIEVE</param> - </interceptor-ref> - <result>applicationFailed.jsp</result> -</action> - -]]></script> -</div></div> - -<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[ -<p> -With the example above, 'submitApplication.action' will have the action messages / errors / field errors stored -in the HTTP Session. Later when needed, (in this case, when 'applicationFailed.action' is fired, it -will get the action messages / errors / field errors stored in the HTTP Session and put them back into -the action. -</p> -]]></script> -</div></div></div> +<action name="applicationFailed" ....> + <interceptor-ref name="store"> + <param name="operationMode">RETRIEVE</param> + </interceptor-ref> + <result>applicationFailed.jsp</result> +</action></pre> +</div></div><p>With the example above, <strong>submitApplication.action</strong> will have the action messages / errors / field errors stored in the HTTP Session. Later when needed, (in this case, when <strong>applicationFailed.action</strong> is fired, it will get the action messages / errors / field errors stored in the HTTP Session and put them back into the action.</p><p> </p></div> </div>
Modified: websites/production/struts/content/docs/objectfactory.html ============================================================================== --- websites/production/struts/content/docs/objectfactory.html (original) +++ websites/production/struts/content/docs/objectfactory.html Mon Feb 29 19:38:05 2016 @@ -146,7 +146,7 @@ under the License. ..... } </pre> -</div></div><h3 id="ObjectFactory-Definededicatedfactory">Define dedicated factory</h3><p>If you want to just extend one part of ObjectFactory, ie. to change how <a shape="rect" href="result-types.html">Result Types</a> are build, you can implement <code>ResultFactory</code> interface and register it with dedicated name, see <a shape="rect" href="plugins.html">Extension Points</a> for more details. Original ObjectFactory will use these dedicated factories to do the work. It's already done this way - the original functionality of ObjectFactory was extracted to separated classes which implements the interfaces below. Check the source of ObjectFactory to see more details. All these factories are available as from version 2.3.16.</p><p>List of Factory interfaces:</p><ul class="alternate"><li><code>ResultFactory</code> - dedicated interfaces used by <a shape="rect" href="objectfactory.html">ObjectFactory</a> to create <a shape="rect" href="result-types.html">Result Types</a><ul class="al ternate"><li><code>StrutsResultFactory</code> it's internal implementation which checks if Result implements <code>ParamNameAwareResult</code> interface to restrict names of parameters set on the instance of Result, see <a shape="rect" href="result-types.html">Result Types</a> for more info.</li></ul></li><li><code>ActionFactory</code> - dedicated interface used by <a shape="rect" href="objectfactory.html">ObjectFactory</a> to actions</li><li><code>InterceptorFactory</code> - dedicated interface used by <a shape="rect" href="objectfactory.html">ObjectFactory</a> to create interceptors</li><li><code>ValidatorFactory</code> - dedicated interface used by <a shape="rect" href="objectfactory.html">ObjectFactory</a> to create validators</li><li><code>ConverterFactory</code> - dedicated interface used by <a shape="rect" href="objectfactory.html">ObjectFactory</a> to create instances of <a shape="rect" class="createlink" href="https://cwiki.apache.org/confluence/pages/createpage.action?spac eKey=WW&title=TypeConverter&linkCreation=true&fromPageId=27470">TypeConverter</a></li><li><code>UnknownHandlerFactory</code> - dedicated interfaces used by <a shape="rect" href="objectfactory.html">ObjectFactory</a> to create instances of <a shape="rect" href="unknown-handlers.html">Unknown Handlers</a> (as from version 2.3.18)</li></ul><h2 id="ObjectFactory-Next:">Next: <a shape="rect" href="actionmapper.html">ActionMapper</a></h2></div> +</div></div><h3 id="ObjectFactory-Definededicatedfactory">Define dedicated factory</h3><p>If you want to just extend one part of ObjectFactory, ie. to change how <a shape="rect" href="result-types.html">Result Types</a> are build, you can implement <code>ResultFactory</code> interface and register it with dedicated name, see <a shape="rect" href="plugins.html">Extension Points</a> for more details. Original ObjectFactory will use these dedicated factories to do the work. It's already done this way - the original functionality of ObjectFactory was extracted to separated classes which implements the interfaces below. Check the source of ObjectFactory to see more details. All these factories are available as from version 2.3.16.</p><p>List of Factory interfaces:</p><ul class="alternate"><li><code>ResultFactory</code> - dedicated interfaces used by <a shape="rect" href="objectfactory.html">ObjectFactory</a> to create <a shape="rect" href="result-types.html">Result Types</a><ul class="al ternate"><li><code>StrutsResultFactory</code> it's internal implementation which checks if Result implements <code>ParamNameAwareResult</code> interface to restrict names of parameters set on the instance of Result, see <a shape="rect" href="result-types.html">Result Types</a> for more info.</li></ul></li><li><code>ActionFactory</code> - dedicated interface used by <a shape="rect" href="objectfactory.html">ObjectFactory</a> to actions</li><li><code>InterceptorFactory</code> - dedicated interface used by <a shape="rect" href="objectfactory.html">ObjectFactory</a> to create interceptors</li><li><code>ValidatorFactory</code> - dedicated interface used by <a shape="rect" href="objectfactory.html">ObjectFactory</a> to create validators</li><li><code>ConverterFactory</code> - dedicated interface used by <a shape="rect" href="objectfactory.html">ObjectFactory</a> to create instances of <a shape="rect" class="unresolved" href="#">TypeConverter</a></li><li><code>UnknownHandlerFactory</code> - dedicated interfaces used by <a shape="rect" href="objectfactory.html">ObjectFactory</a> to create instances of <a shape="rect" href="unknown-handlers.html">Unknown Handlers</a> (as from version 2.3.18)</li></ul><h2 id="ObjectFactory-Next:">Next: <a shape="rect" href="actionmapper.html">ActionMapper</a></h2></div> </div> Modified: websites/production/struts/content/docs/obtain-response.html ============================================================================== --- websites/production/struts/content/docs/obtain-response.html (original) +++ websites/production/struts/content/docs/obtain-response.html Mon Feb 29 19:38:05 2016 @@ -146,7 +146,7 @@ under the License. <h2 id="ObtainResponse-MainSuccessScenario(MSS)">Main Success Scenario (MSS)</h2> -<div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> Step </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> Action </p></th></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> 1 </p></th><td colspan="1" rowspan="1" class="confluenceTd"><p> Client submits request to web server. </p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> 2 </p></th><td colspan="1" rowspan="1" class="confluenceTd"><p> Web server transfers request to container, and container transfers request to framework's dispatcher. </p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> 3 </p></th><td colspan="1" rowspan="1" class="confluenceTd"><p> Dispatcher consults the <a shape="rect" class="createlink" href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&title=mappings&linkCreation=true&fromPageId=29365">mappings</a> to select the appropriate <a shape="rect" hre f="execute-action.html">action</a> and creates a <a shape="rect" class="createlink" href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&title=context&linkCreation=true&fromPageId=29365">context</a> for the request. </p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> 4 </p></th><td colspan="1" rowspan="1" class="confluenceTd"><p> Dispatcher creates and invokes a <a shape="rect" class="createlink" href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&title=proxy&linkCreation=true&fromPageId=29365">proxy</a> to execute the action and its <a shape="rect" href="interceptors.html">interceptors</a>. </p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> 5 </p></th><td colspan="1" rowspan="1" class="confluenceTd"><p> The proxy manages the action pre-process, the procedess, and the post-process. </p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> 6 </p></th><td cols pan="1" rowspan="1" class="confluenceTd"><p> The invocation calls each interceptor in turn before executing the action. </p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> 7 </p></th><td colspan="1" rowspan="1" class="confluenceTd"><p> Each interceptor affects the request as appropriate. </p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> 8 </p></th><td colspan="1" rowspan="1" class="confluenceTd"><p> The action handles the transaction corresponding to the request. </p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> 9 </p></th><td colspan="1" rowspan="1" class="confluenceTd"><p> The action returns a code indicating the appropriate <a shape="rect" class="createlink" href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&title=result&linkCreation=true&fromPageId=29365">result</a>. </p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> 0 </p></th><td colspan="1" rowspan="1" class ="confluenceTd"><p> The invocation executes the result. </p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> A </p></th><td colspan="1" rowspan="1" class="confluenceTd"><p> The result generates the response or transfers to a resource that will render the response. </p></td></tr></tbody></table></div> +<div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> Step </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> Action </p></th></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> 1 </p></th><td colspan="1" rowspan="1" class="confluenceTd"><p> Client submits request to web server. </p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> 2 </p></th><td colspan="1" rowspan="1" class="confluenceTd"><p> Web server transfers request to container, and container transfers request to framework's dispatcher. </p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> 3 </p></th><td colspan="1" rowspan="1" class="confluenceTd"><p> Dispatcher consults the <a shape="rect" class="unresolved" href="#">mappings</a> to select the appropriate <a shape="rect" href="execute-action.html">action</a> and creates a <a shape="rect" class="unresolved" href="#">context</a> for the request. </p></td>< /tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> 4 </p></th><td colspan="1" rowspan="1" class="confluenceTd"><p> Dispatcher creates and invokes a <a shape="rect" class="unresolved" href="#">proxy</a> to execute the action and its <a shape="rect" href="interceptors.html">interceptors</a>. </p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> 5 </p></th><td colspan="1" rowspan="1" class="confluenceTd"><p> The proxy manages the action pre-process, the procedess, and the post-process. </p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> 6 </p></th><td colspan="1" rowspan="1" class="confluenceTd"><p> The invocation calls each interceptor in turn before executing the action. </p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> 7 </p></th><td colspan="1" rowspan="1" class="confluenceTd"><p> Each interceptor affects the request as appropriate. </p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> 8 </p></th><t d colspan="1" rowspan="1" class="confluenceTd"><p> The action handles the transaction corresponding to the request. </p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> 9 </p></th><td colspan="1" rowspan="1" class="confluenceTd"><p> The action returns a code indicating the appropriate <a shape="rect" class="unresolved" href="#">result</a>. </p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> 0 </p></th><td colspan="1" rowspan="1" class="confluenceTd"><p> The invocation executes the result. </p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> A </p></th><td colspan="1" rowspan="1" class="confluenceTd"><p> The result generates the response or transfers to a resource that will render the response. </p></td></tr></tbody></table></div> <h2 id="ObtainResponse-Extensions">Extensions</h2> Modified: websites/production/struts/content/docs/ognl-basics.html ============================================================================== --- websites/production/struts/content/docs/ognl-basics.html (original) +++ websites/production/struts/content/docs/ognl-basics.html Mon Feb 29 19:38:05 2016 @@ -152,7 +152,7 @@ name // call to animal.getName() b <pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">[0].name // call to animal.getName() [1].name // call to person.getName() </pre> -</div></div><p>With expression like [0] ... [3] etc. Struts 2 will cut the stack and still return back a CompoundRoot object. To get the top of that particular stack cut, use <a shape="rect" class="createlink" href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&title=0&linkCreation=true&fromPageId=14000">0</a>.top</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>ognl expression</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>[0].top</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>would get the top of the stack cut starting from element 0 in the stack (similar to top in this case)</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>[1].top</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>would get the top of the stack cut starting from element 1 in the stack</p></td></tr></tbody></table></div><h2 id="OGNLBasics-Accessingstaticproperties">Accessing static properties</h2><p>OGNL supports accessing static properties as well as static methods.</p><p>By default, Struts 2 is configured to disallow this--to enable OGNL's static member support you must set the <code>struts.ognl.allowStaticMethodAccess</code> constant to <code>true</code> via any of the <a shape="rect" href="constant-configuration.html">Constant Configuration</a> methods.</p><p>OGNL's static access looks like this:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +</div></div><p>With expression like [0] ... [3] etc. Struts 2 will cut the stack and still return back a CompoundRoot object. To get the top of that particular stack cut, use <a shape="rect" class="unresolved" href="#">0</a>.top</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>ognl expression</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>[0].top</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>would get the top of the stack cut starting from element 0 in the stack (similar to top in this case)</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>[1].top</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>would get the top of the stack cut starting from element 1 in the stack</p></td></tr></tbody></table></div><h2 id="OGNLBasics-Accessingstaticproperties">Accessing static properties</h 2><p>OGNL supports accessing static properties as well as static methods.</p><p>By default, Struts 2 is configured to disallow this--to enable OGNL's static member support you must set the <code>struts.ognl.allowStaticMethodAccess</code> constant to <code>true</code> via any of the <a shape="rect" href="constant-configuration.html">Constant Configuration</a> methods.</p><p>OGNL's static access looks like this:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> <pre class="brush: text; gutter: false; theme: Default" style="font-size:12px;">@some.package.ClassName@FOO_PROPERTY @some.package.ClassName@someMethod() </pre> 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 Mon Feb 29 19:38:05 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.rbtoc1453884610727 {padding: 0px;} -div.rbtoc1453884610727 ul {list-style: none;margin-left: 0px;} -div.rbtoc1453884610727 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1456773754359 {padding: 0px;} +div.rbtoc1456773754359 ul {list-style: none;margin-left: 0px;} +div.rbtoc1456773754359 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style><div class="toc-macro rbtoc1453884610727"> +/*]]>*/</style><div class="toc-macro rbtoc1456773754359"> <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/plugin-developers-guide.html ============================================================================== --- websites/production/struts/content/docs/plugin-developers-guide.html (original) +++ websites/production/struts/content/docs/plugin-developers-guide.html Mon Feb 29 19:38:05 2016 @@ -125,7 +125,7 @@ under the License. <div class="pagecontent"> <div class="wiki-content"> - <div id="ConfluenceContent">Apache Struts 2 provides a simple <a shape="rect" href="plugins.html">plugin architecture</a> so that developers can extend the framework just by adding a JAR to the application's classpath. Since plugins are contained in a JAR, they are easy to share with others. Several plugins are bundled with the framework, and others are available from third-party sources.<ul><li><a shape="rect" href="plugins.html">Plugins</a></li><li><a shape="rect" href="extending-an-application-with-custom-plugins.html">Extending an Application with Custom Plugins</a></li></ul><h3 id="PluginDevelopersGuide-BundledPlugins">Bundled Plugins</h3><div class="table-wrap"><table class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1" class="confluenceTd"><ul><li><a shape="rect" href="bean-validation-plugin.html">Bean Validation Plugin</a> (2.5+)</li><li><a shape="rect" href="cdi-plugin.html">CDI (JSR 299) Plugin</a> (2.3.1+)</li><li><a shape="rect" href="codebehind-plu gin.html">Codebehind Plugin</a> (<strong>< 2.5</strong>)</li><li><a shape="rect" href="config-browser-plugin.html">Config Browser Plugin</a></li><li><a shape="rect" href="convention-plugin.html">Convention Plugin</a> (2.1.3+)</li><li><a shape="rect" href="dwr-plugin.html">DWR Plugin</a></li><li><a shape="rect" href="embedded-jsp-plugin.html">Embedded JSP Plugin</a> (2.1.7+)</li><li><a shape="rect" href="jasperreports-plugin.html">JasperReports Plugin</a></li><li><a shape="rect" href="java-8-support-plugin.html">Java 8 Support Plugin</a> (2.3.21+)</li><li><a shape="rect" href="javatemplates-plugin.html">Javatemplates Plugin</a> (2.1.3+)</li><li><a shape="rect" href="jfreechart-plugin.html">JFreeChart Plugin</a></li><li><a shape="rect" href="jsf-plugin.html">JSF Plugin</a> <span>(</span><strong>< 2.5</strong><span>)</span></li><li><a shape="rect" href="json-plugin.html">JSON Plugin</a> (2.1.7+)</li><li><a shape="rect" href="junit-plugin.html">JUnit Plugin</a></li></ul></td><td c olspan="1" rowspan="1" class="confluenceTd"><ul><li><a shape="rect" href="oval-plugin.html">OVal Plugin</a> (2.1.7+)</li><li><a shape="rect" href="osgi-plugin.html">OSGi Plugin</a> (2.1.7+)</li><li><a shape="rect" href="plexus-plugin.html">Plexus Plugin</a></li><li><a shape="rect" href="portlet-plugin.html">Portlet Plugin</a></li><li><a shape="rect" href="portlet-tiles-plugin.html">Portlet Tiles Plugin</a> (2.3.5+)</li><li><a shape="rect" href="rest-plugin.html">REST Plugin</a> (2.1.1+)</li><li><a shape="rect" href="sitegraph-plugin.html">SiteGraph Plugin</a></li><li><a shape="rect" href="sitemesh-plugin.html">SiteMesh Plugin</a></li><li><a shape="rect" href="spring-plugin.html">Spring Plugin</a></li><li><a shape="rect" href="struts-1-plugin.html">Struts 1 Plugin</a> <span>(</span><strong>< 2.5</strong><span>)</span></li><li><a shape="rect" href="testng-plugin.html">TestNG Plugin</a></li><li><a shape="rect" href="tiles-2-plugin.html">Tiles 2 Plugin</a></li><li><a shape="rect" hre f="tiles-3-plugin.html">Tiles 3 Plugin</a></li></ul></td></tr></tbody></table></div><p><img class="emoticon emoticon-tick" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"> For a complete list of bundled and third-party plugins, visit the <a shape="rect" class="external-link" href="http://cwiki.apache.org/S2PLUGINS/home.html">Plugin Registry.</a>.</p><h2 id="PluginDevelopersGuide-Next:">Next: <a shape="rect" href="architects-guide.html">Architects Guide</a></h2></div> + <div id="ConfluenceContent">Apache Struts 2 provides a simple <a shape="rect" href="plugins.html">plugin architecture</a> so that developers can extend the framework just by adding a JAR to the application's classpath. Since plugins are contained in a JAR, they are easy to share with others. Several plugins are bundled with the framework, and others are available from third-party sources.<ul><li><a shape="rect" href="plugins.html">Plugins</a></li><li><a shape="rect" href="extending-an-application-with-custom-plugins.html">Extending an Application with Custom Plugins</a></li></ul><h3 id="PluginDevelopersGuide-BundledPlugins">Bundled Plugins</h3><div class="table-wrap"><table class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1" class="confluenceTd"><ul><li><a shape="rect" href="bean-validation-plugin.html">Bean Validation Plugin</a> (2.5+)</li><li><a shape="rect" href="cdi-plugin.html">CDI (JSR 299) Plugin</a> (2.3.1+)</li><li><a shape="rect" href="codebehind-plu gin.html">Codebehind Plugin</a> (<strong>< 2.5</strong>)</li><li><a shape="rect" href="config-browser-plugin.html">Config Browser Plugin</a></li><li><a shape="rect" href="convention-plugin.html">Convention Plugin</a> (2.1.3+)</li><li><a shape="rect" href="dwr-plugin.html">DWR Plugin</a></li><li><a shape="rect" href="embedded-jsp-plugin.html">Embedded JSP Plugin</a> (2.1.7+)</li><li><a shape="rect" href="jasperreports-plugin.html">JasperReports Plugin</a></li><li><a shape="rect" href="java-8-support-plugin.html">Java 8 Support Plugin</a> (2.3.21+)</li><li><a shape="rect" href="javatemplates-plugin.html">Javatemplates Plugin</a> (2.1.3+)</li><li><a shape="rect" href="jfreechart-plugin.html">JFreeChart Plugin</a></li><li><a shape="rect" href="jsf-plugin.html">JSF Plugin</a> <span>(</span><strong>< 2.5</strong><span>)</span></li><li><a shape="rect" href="json-plugin.html">JSON Plugin</a> (2.1.7+)</li><li><a shape="rect" href="junit-plugin.html">JUnit Plugin</a></li></ul></td><td c olspan="1" rowspan="1" class="confluenceTd"><ul><li><a shape="rect" href="oval-plugin.html">OVal Plugin</a> (2.1.7+)</li><li><a shape="rect" href="osgi-plugin.html">OSGi Plugin</a> (2.1.7+)</li><li><a shape="rect" href="plexus-plugin.html">Plexus Plugin</a></li><li><a shape="rect" href="portlet-plugin.html">Portlet Plugin</a></li><li><a shape="rect" href="portlet-tiles-plugin.html">Portlet Tiles Plugin</a> (2.3.5+)</li><li><a shape="rect" href="rest-plugin.html">REST Plugin</a> (2.1.1+)</li><li><a shape="rect" href="sitegraph-plugin.html">SiteGraph Plugin</a></li><li><a shape="rect" href="sitemesh-plugin.html">SiteMesh Plugin</a></li><li><a shape="rect" href="spring-plugin.html">Spring Plugin</a></li><li><a shape="rect" href="struts-1-plugin.html">Struts 1 Plugin</a> <span>(</span><strong>< 2.5</strong><span>)</span></li><li><a shape="rect" href="testng-plugin.html">TestNG Plugin</a></li><li><a shape="rect" href="tiles-plugin.html">Tiles Plugin</a></li><li><a shape="rect" href="t iles-3-plugin.html">Tiles 3 Plugin</a> <span>(</span><strong>< 2.5</strong><span>)</span></li></ul></td></tr></tbody></table></div><p><img class="emoticon emoticon-tick" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"> For a complete list of bundled and third-party plugins, visit the <a shape="rect" class="external-link" href="http://cwiki.apache.org/S2PLUGINS/home.html">Plugin Registry.</a>.</p><h2 id="PluginDevelopersGuide-Next:">Next: <a shape="rect" href="architects-guide.html">Architects Guide</a></h2></div> </div> <div class="tabletitle"> Modified: websites/production/struts/content/docs/portlet-tiles-plugin.html ============================================================================== --- websites/production/struts/content/docs/portlet-tiles-plugin.html (original) +++ websites/production/struts/content/docs/portlet-tiles-plugin.html Mon Feb 29 19:38:05 2016 @@ -157,7 +157,7 @@ under the License. <version>${struts2.version}</version> </dependency> </pre> -</div></div></li><li>All package definitions which require tiles support must either extend the struts-portlet-tiles-default package or must register the <a shape="rect" class="createlink" href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&title=Tiles+Result&linkCreation=true&fromPageId=30150178">Tiles Result</a> type definition dedicated for Portlets. +</div></div></li><li>All package definitions which require tiles support must either extend the struts-portlet-tiles-default package or must register the <a shape="rect" class="unresolved" href="#">Tiles Result</a> type definition dedicated for Portlets. <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;"> <result-types> Modified: websites/production/struts/content/docs/processing-forms.html ============================================================================== --- websites/production/struts/content/docs/processing-forms.html (original) +++ websites/production/struts/content/docs/processing-forms.html Mon Feb 29 19:38:05 2016 @@ -138,7 +138,7 @@ 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 tutorial assumes you've completed the <a shape="rect" class="createlink" href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&title=Coding+Struts+2+Actons&linkCreation=true&fromPageId=14811889">Coding Struts 2 Actons</a> tutorial and have a working coding_actions project. The example code for this tutorial, form_processing, is available for checkout from the Struts 2 GitHub subversion repository: <a shape="rect" class="external-link" href="https://github.com/apache/struts-examples" rel="nofollow">https://github.com/apache/struts-examples</a>.</p></div></div><h3 id="ProcessingForms-Introduction">Introduction</h3><p>In this tutorial we'll explore using Struts 2 to do more involv ed processing of a form submission. We'll cover how to use a Java model class to store the form input and how to create the Struts 2 form to match up with that model class.</p><p>The code provided in this tutorial may be added to the <a shape="rect" href="coding-struts-2-actions.html">Coding Struts 2 Actions</a> example or you can download this complete example from Google Code - <a shape="rect" class="external-link" href="http://code.google.com/p/struts2-examples/downloads/list" rel="nofollow">http://code.google.com/p/struts2-examples/downloads/list</a>.</p><div class="confluence-information-macro confluence-information-macro-tip"><span class="aui-icon aui-icon-small aui-iconfont-approve confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>The <a shape="rect" class="external-link" href="http://struts.apache.org/mail.html">Struts 2 user mailing list</a> is an excellent place to get help. If you are having a problem getting the tutorial example applications to work search the Struts 2 mailing list. If you don't find an answer to your problem, post a question on the mailing list.</p></div></div><h3 id="ProcessingForms-FormsandAJavaModelClass">Forms and A Java Model Class</h3><p>For this tutorial let's say we need to provide a form that a user may submit to register for a prize drawing. Our business rules state the user must provide his/her first name, last name, email address, and age.</p><p>To encapsulate this data, we'll use a simple Java class that follows the basic Java Bean specifications (public set/get methods for each instance field). If you're following along add this class to package org.apache.struts.register.model in the <a shape="rect" href="coding-struts-2-actions.html">Coding Struts 2 Actions</a> example.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Person.java</b></div><div class="codeContent panelContent pdl"> + <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 tutorial assumes you've completed the <a shape="rect" class="unresolved" href="#">Coding Struts 2 Actons</a> tutorial and have a working coding_actions project. The example code for this tutorial, form_processing, is available for checkout from the Struts 2 GitHub subversion repository: <a shape="rect" class="external-link" href="https://github.com/apache/struts-examples" rel="nofollow">https://github.com/apache/struts-examples</a>.</p></div></div><h3 id="ProcessingForms-Introduction">Introduction</h3><p>In this tutorial we'll explore using Struts 2 to do more involved processing of a form submission. We'll cover how to use a Java model class to store the form input and how to create the Struts 2 form to match up with that model class.</p><p>The code provided in this tutorial may be added to the <a shape="rect" href="coding-struts-2-actions.html">Coding Struts 2 Actions</a> example or you can download this complete example from Google Code - <a shape="rect" class="external-link" href="http://code.google.com/p/struts2-examples/downloads/list" rel="nofollow">http://code.google.com/p/struts2-examples/downloads/list</a>.</p><div class="confluence-information-macro confluence-information-macro-tip"><span class="aui-icon aui-icon-small aui-iconfont-approve confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>The <a shape="rect" class="external-link" href="http://struts.apache.org/mail.html">Struts 2 user mailing list</a> is an excellent place to get help. If you are having a problem getting the tutorial example applications to work search the Struts 2 mailing list. If you don't find an answer to your problem, post a question on the mailing list.</p></div></d iv><h3 id="ProcessingForms-FormsandAJavaModelClass">Forms and A Java Model Class</h3><p>For this tutorial let's say we need to provide a form that a user may submit to register for a prize drawing. Our business rules state the user must provide his/her first name, last name, email address, and age.</p><p>To encapsulate this data, we'll use a simple Java class that follows the basic Java Bean specifications (public set/get methods for each instance field). If you're following along add this class to package org.apache.struts.register.model in the <a shape="rect" href="coding-struts-2-actions.html">Coding Struts 2 Actions</a> example.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Person.java</b></div><div class="codeContent panelContent pdl"> <pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">public class Person { private String firstName; Modified: websites/production/struts/content/docs/release-notes-202.html ============================================================================== --- websites/production/struts/content/docs/release-notes-202.html (original) +++ websites/production/struts/content/docs/release-notes-202.html Mon Feb 29 19:38:05 2016 @@ -172,7 +172,7 @@ under the License. <h2 id="ReleaseNotes2.0.2-NewFeaturesandPlugins">New Features and Plugins</h2> -<ul><li>Plugins are now documented in the <a shape="rect" class="createlink" href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=S2PLUGINS&title=Angosso">Apache Struts 2 Plugin Registry</a>.</li><li><a shape="rect" href="annotations.html">Annotations</a>: @Result annotation now supports parameters (WW-1575).</li><li><a shape="rect" href="ajax-tags.html">Ajax Tags</a>: The Autocompleter AJAX tag wraps Dojo's ComboBox and supports remote, static, and JSON content.</li><li><a shape="rect" href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=33274">Spring Plugin</a>: Integrate Spring with your application using a plugin (WW-1499). Or, if you prefer, use the <a shape="rect" href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=33365">Plexus Plugin</a> instead.</li><li><a shape="rect" href="file-upload-interceptor.html">File Uploading</a> Explore multiple file uploading through our new Showcase example (WW-1479).</li><li><a sha pe="rect" href="action.html">Action tag</a>: Eliminate unwanted exceptions with the new <code>flush</code> attribute (WW-1472).</li><li><a shape="rect" href="checkboxlist.html">Checkboxlist</a> tag: Use Maps with CheckboxList (WW-1471).</li><li><a shape="rect" href="roles-interceptor.html">Roles Interceptor</a>: Integrate JAAS with a new interceptor - now on the default stack (WW-1469).</li><li><a shape="rect" href="textfield.html">Localized Links</a>: Use the new <code>key</code> attribute to streamline link markup (WW-1458).</li><li><a shape="rect" href="constant-configuration.html">Constant Configuration</a>: Override factory default settings from any XML configurtion document, including <code>web.xml</code>! (WW-1421).</li><li><a shape="rect" href="strutsxml-examples.html">Action Class Ref</a>: Configure a custom default Action for any package to use instead of ActionSupport (WW-1420).</li><li><a shape="rect" href="struts-maven-archetypes.html">Struts Maven Archetypes</a> The s tandard archetype includes sample code from the <a shape="rect" href="bootstrap.html">Bootstrap</a> tutorial {WW-1412).</li><li><a shape="rect" href="result-types.html">Direct Results</a>: Create a custom Result Type directly from an Action class (WW-1393).</li></ul> +<ul><li>Plugins are now documented in the <a shape="rect" class="unresolved" href="#">Apache Struts 2 Plugin Registry</a>.</li><li><a shape="rect" href="annotations.html">Annotations</a>: @Result annotation now supports parameters (WW-1575).</li><li><a shape="rect" href="ajax-tags.html">Ajax Tags</a>: The Autocompleter AJAX tag wraps Dojo's ComboBox and supports remote, static, and JSON content.</li><li><a shape="rect" href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=33274">Spring Plugin</a>: Integrate Spring with your application using a plugin (WW-1499). Or, if you prefer, use the <a shape="rect" href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=33365">Plexus Plugin</a> instead.</li><li><a shape="rect" href="file-upload-interceptor.html">File Uploading</a> Explore multiple file uploading through our new Showcase example (WW-1479).</li><li><a shape="rect" href="action.html">Action tag</a>: Eliminate unwanted exceptions with the new <code>f lush</code> attribute (WW-1472).</li><li><a shape="rect" href="checkboxlist.html">Checkboxlist</a> tag: Use Maps with CheckboxList (WW-1471).</li><li><a shape="rect" href="roles-interceptor.html">Roles Interceptor</a>: Integrate JAAS with a new interceptor - now on the default stack (WW-1469).</li><li><a shape="rect" href="textfield.html">Localized Links</a>: Use the new <code>key</code> attribute to streamline link markup (WW-1458).</li><li><a shape="rect" href="constant-configuration.html">Constant Configuration</a>: Override factory default settings from any XML configurtion document, including <code>web.xml</code>! (WW-1421).</li><li><a shape="rect" href="strutsxml-examples.html">Action Class Ref</a>: Configure a custom default Action for any package to use instead of ActionSupport (WW-1420).</li><li><a shape="rect" href="struts-maven-archetypes.html">Struts Maven Archetypes</a> The standard archetype includes sample code from the <a shape="rect" href="bootstrap.html">Bootstrap </a> tutorial {WW-1412).</li><li><a shape="rect" href="result-types.html">Direct Results</a>: Create a custom Result Type directly from an Action class (WW-1393).</li></ul> <h2 id="ReleaseNotes2.0.2-ExperimentalFeaturesandPlugins">Experimental Features and Plugins </h2> Modified: websites/production/struts/content/docs/release-plan-200.html ============================================================================== --- websites/production/struts/content/docs/release-plan-200.html (original) +++ websites/production/struts/content/docs/release-plan-200.html Mon Feb 29 19:38:05 2016 @@ -224,7 +224,7 @@ under the License. <h2 id="ReleasePlan2.0.0-TestBuildDistributionChecklist(A)">Test Build Distribution Checklist (A)</h2> -<p>See also <a shape="rect" class="createlink" href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&title=Creating+and+Signing+Releases&linkCreation=true&fromPageId=19602">Creating and Signing Releases</a></p> +<p>See also <a shape="rect" class="unresolved" href="#">Creating and Signing Releases</a></p> <div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> # </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> Description </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> Completed </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> A1. </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Setup new JIRA version level or update release on Roadmap </p></td><th colspan="1" rowspan="1" class="confluenceTh"><p> <img class="emoticon emoticon-tick" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"> Done </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> A2. </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Tag release in svn: ${STRUTS_2_0_0} </p></td><th colspan="1" rowspan="1" class="confluenceTh"><p> <img class="emoticon emo ticon-tick" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"> Done (r447072) </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> A3. </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Update POM version level and run Distribution Target </p></td><th colspan="1" rowspan="1" class="confluenceTh"><p> <img class="emoticon emoticon-tick" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"> Done </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> A4. </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Create Sums and Sign Distributions </p></td><th colspan="1" rowspan="1" class="confluenceTh"><p> <img class="emoticon emoticon-tick" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb 3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"> Done </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> A5. </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Upload Distribution to <code>people.apache.org/builds/struts/2.0.0/</code> </p></td><th colspan="1" rowspan="1" class="confluenceTh"><p> <img class="emoticon emoticon-tick" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/check.png" data-emoticon-name="tick" alt="(tick)"> Done </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> A6. </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Deploy JAR to Apache Java-Repository </p></td><th colspan="1" rowspan="1" class="confluenceTh"><p> <img class="emoticon emoticon-tick" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticon s/check.png" data-emoticon-name="tick" alt="(tick)"> Done </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>$ mvn deploy -P pre-assembly</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> A7. </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Post release-quality vote on dev@ lists </p></td><th colspan="1" rowspan="1" class="confluenceTh"><p> ${STATUS} </p></th></tr></tbody></table></div> 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 Mon Feb 29 19:38:05 2016 @@ -139,11 +139,11 @@ under the License. <div class="pagecontent"> <div class="wiki-content"> <div id="ConfluenceContent"><div class="confluence-information-macro confluence-information-macro-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.rbtoc1453884501969 {padding: 0px;} -div.rbtoc1453884501969 ul {list-style: disc;margin-left: 0px;} -div.rbtoc1453884501969 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1456773665918 {padding: 0px;} +div.rbtoc1456773665918 ul {list-style: disc;margin-left: 0px;} +div.rbtoc1456773665918 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></p><div class="toc-macro rbtoc1453884501969"> +/*]]>*/</style></p><div class="toc-macro rbtoc1456773665918"> <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 Mon Feb 29 19:38:05 2016 @@ -139,14 +139,14 @@ under the License. <div class="pagecontent"> <div class="wiki-content"> <div id="ConfluenceContent"><p><style type="text/css">/*<![CDATA[*/ -div.rbtoc1453884188561 {padding: 0px;} -div.rbtoc1453884188561 ul {list-style: disc;margin-left: 0px;} -div.rbtoc1453884188561 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1456773353562 {padding: 0px;} +div.rbtoc1456773353562 ul {list-style: disc;margin-left: 0px;} +div.rbtoc1456773353562 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></p><div class="toc-macro rbtoc1453884188561"> +/*]]>*/</style></p><div class="toc-macro rbtoc1456773353562"> <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><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> +</li><li><a shape="rect" href="#ResultConfiguration-GlobalResults">Global Results</a></li><li><a shape="rect" href="#ResultConfiguration-DynamicResults">Dynamic Results</a></li><li><a shape="rect" href="#ResultConfiguration-ReturningResultObjects">Returning Result Objects</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"; String NONE = "none"; @@ -155,10 +155,11 @@ String INPUT = "input"; String LOGIN = "login"; </pre> </div></div><p>Of course, applications can define other result tokens to match specific cases.</p><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)"> Returning <code><a shape="rect" class="external-link" href="http://struts.apache.org/2.x/struts2-core/apidocs/com/opensymphony/xwork2/Action.html#NONE">ActionSupport.NONE</a></code> (or <code>null</code>) from an <a shape="rect" href="action.html">action</a> class method causes the results processing to be skipped. This is useful if the action fully handles the result processing such as writing directly to the HttpServletResponse OutputStream.</p><h2 id="ResultConfiguration-ResultElements">Result Elements</h2><p>The result element has two jobs. First, it provides a logical name. An <code>Action</code> can pass back a token like "success" or "error" without kn owing any other implementation details. Second, the result element provides a result type. Most results simply forward to a server page or template, but other <a shape="rect" href="result-types.html">Result Types</a> can be used to do more interesting things.</p><h3 id="ResultConfiguration-IntelligentDefaults">Intelligent Defaults</h3><p>Each package may set a default result type to be used if none is specified in a result element. If one package extends another, the "child" package can set its own default result, or inherit one from the parent.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Setting a default Result Type</b></div><div class="codeContent panelContent pdl"> -<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;"><result-types> - <result-type name="dispatcher" default="true" - class="org.apache.struts2.dispatcher.ServletDispatcherResult" /> -</result-types> +<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">public Result runAction() { + ServletDispatcherResult result = new ServletDispatcherResult(); + result.setLocation("input-form.jsp"); + return result; +} </pre> </div></div><p>If a <code>type</code> attribute is not specified, the framework will use the default <code>dispatcher</code> type, which forwards to another web resource. If the resource is a JavaServer Page, then the container will render it, using its JSP engine.</p><p>Likewise if the <code>name</code> attribute is not specified, the framework will give it the name "success".</p><p>Using these intelligent defaults, the most often used result types also become the simplest.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Result element without defaults</b></div><div class="codeContent panelContent pdl"> <pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;"><result name="success" type="dispatcher"> @@ -212,7 +213,13 @@ public String getNextAction() { <result name="next" type="redirectAction">${nextAction}</result> </action> </pre> -</div></div><p>If a <code>FragmentAction</code> method returns "next" the actual <em>value</em> of that result will be whatever is in <code>FragmentAction</code>'s <code>nextAction</code> property. So <code>nextAction</code> may be computed based on whatever state information necessary then passed at runtime to "next"'s <code>redirectAction</code>.</p><p>See <a shape="rect" href="parameters-in-configuration-results.html">Parameters in configuration results</a> for an expanded discussion.</p></div> +</div></div><p>If a <code>FragmentAction</code> method returns "next" the actual <em>value</em> of that result will be whatever is in <code>FragmentAction</code>'s <code>nextAction</code> property. So <code>nextAction</code> may be computed based on whatever state information necessary then passed at runtime to "next"'s <code>redirectAction</code>.</p><p>See <a shape="rect" href="parameters-in-configuration-results.html">Parameters in configuration results</a> for an expanded discussion.</p><p> </p><h2 id="ResultConfiguration-ReturningResultObjects">Returning Result Objects</h2><p>Instead of configuring results and returning the name, it is possible to return a result object:</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;">public Result runAction() { + ServletDispatcherResult result = new ServletDispatcherResult(); + result.setLocation("input-form.jsp"); + return result; +}</pre> +</div></div><p> </p><p> </p></div> </div> Modified: websites/production/struts/content/docs/result-types.html ============================================================================== --- websites/production/struts/content/docs/result-types.html (original) +++ websites/production/struts/content/docs/result-types.html Mon Feb 29 19:38:05 2016 @@ -138,7 +138,7 @@ under the License. <div class="pagecontent"> <div class="wiki-content"> - <div id="ConfluenceContent"><p>Most use cases can be divided into two phases. First, we need to change or query the application's state, and then we need to present an updated view of the application. The Action class manages the application's state, and the Result Type manages the view.</p><h2 id="ResultTypes-PredefinedResultTypes">Predefined Result Types</h2><p>The framework provides several implementations of the <code>com.opensymphony.xwork2.Result</code> interface, ready to use in your own applications.</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="chain-result.html">Chain Result</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Used for <a shape="rect" href="action-chaining.html">Action Chaining</a></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="dispatcher-result.html">Dispatcher Result</a></p></td><td colspan="1 " rowspan="1" class="confluenceTd"><p>Used for web resource integration, including <a shape="rect" href="jsp.html">JSP</a> integration</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="freemarker-result.html">FreeMarker Result</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Used for <a shape="rect" href="freemarker.html">FreeMarker</a> integration</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="httpheader-result.html">HttpHeader Result</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Used to control special HTTP behaviors</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="redirect-result.html">Redirect Result</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Used to redirect to another URL (web resource)</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="redirect-action-result. html">Redirect Action Result</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Used to redirect to another action mapping</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="stream-result.html">Stream Result</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Used to stream an InputStream back to the browser (usually for file downloads)</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="velocity-result.html">Velocity Result</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Used for <a shape="rect" href="velocity.html">Velocity</a> integration</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="xsl-result.html">XSL Result</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Used for XML/XSLT integration</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="plaintext-result.html">Pl ainText Result</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Used to display the raw content of a particular page (i.e jsp, HTML)</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="tiles-2-plugin.html">Tiles 2 Result</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Used to provide Tiles 2 integration</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="tiles-3-plugin.html">Tiles 3 Result</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Used to provide Tiles 3 integration</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="postback-result.html">Postback Result</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Used to postback request parameters as a form to the specified destination</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><a shape="rect" href="json-plugin.html">JSON Result</a></td>< td colspan="1" rowspan="1" class="confluenceTd">Used to serialize actions into JSON</td></tr></tbody></table></div><h3 id="ResultTypes-Optional">Optional</h3><div class="table-wrap"><table class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="jasperreports-plugin.html">JasperReports Plugin</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Used for <a shape="rect" href="jasperreports-tutorial.html">JasperReports Tutorial</a> integration</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Optional, third-party plugin</p></td></tr></tbody></table></div><p>Additional Result Types can be created and plugged into an application by implementing the <code>com.opensymphony.xwork2.Result</code> interface. Custom Result Types might include generating an email or JMS message, generating images, and so forth.</p><h2 id="ResultTypes-DefaultParameters">Default Parameters</h2><p>To minimize configuration, Results can be co nfigured with a single value, which will be converted into a parameter, and each Result can specify which parameter this value should be set as. For example, here is a result defined in XML that uses a default parameter:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> + <div id="ConfluenceContent"><p>Most use cases can be divided into two phases. First, we need to change or query the application's state, and then we need to present an updated view of the application. The Action class manages the application's state, and the Result Type manages the view.</p><h2 id="ResultTypes-PredefinedResultTypes">Predefined Result Types</h2><p>The framework provides several implementations of the <code>com.opensymphony.xwork2.Result</code> interface, ready to use in your own applications.</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="chain-result.html">Chain Result</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Used for <a shape="rect" href="action-chaining.html">Action Chaining</a></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="dispatcher-result.html">Dispatcher Result</a></p></td><td colspan="1 " rowspan="1" class="confluenceTd"><p>Used for web resource integration, including <a shape="rect" href="jsp.html">JSP</a> integration</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="freemarker-result.html">FreeMarker Result</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Used for <a shape="rect" href="freemarker.html">FreeMarker</a> integration</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="httpheader-result.html">HttpHeader Result</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Used to control special HTTP behaviors</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="redirect-result.html">Redirect Result</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Used to redirect to another URL (web resource)</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="redirect-action-result. html">Redirect Action Result</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Used to redirect to another action mapping</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="stream-result.html">Stream Result</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Used to stream an InputStream back to the browser (usually for file downloads)</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="velocity-result.html">Velocity Result</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Used for <a shape="rect" href="velocity.html">Velocity</a> integration</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="xsl-result.html">XSL Result</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Used for XML/XSLT integration</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="plaintext-result.html">Pl ainText Result</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Used to display the raw content of a particular page (i.e jsp, HTML)</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="tiles-plugin.html">Tiles 2 Result</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Used to provide Tiles 2 integration</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="tiles-3-plugin.html">Tiles 3 Result</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Used to provide Tiles 3 integration</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="postback-result.html">Postback Result</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Used to postback request parameters as a form to the specified destination</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><a shape="rect" href="json-plugin.html">JSON Result</a></td><td colspan="1" rowspan="1" class="confluenceTd">Used to serialize actions into JSON</td></tr></tbody></table></div><h3 id="ResultTypes-Optional">Optional</h3><div class="table-wrap"><table class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="jasperreports-plugin.html">JasperReports Plugin</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Used for <a shape="rect" href="jasperreports-tutorial.html">JasperReports Tutorial</a> integration</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Optional, third-party plugin</p></td></tr></tbody></table></div><p>Additional Result Types can be created and plugged into an application by implementing the <code>com.opensymphony.xwork2.Result</code> interface. Custom Result Types might include generating an email or JMS message, generating images, and so forth.</p><h2 id="ResultTypes-DefaultParameters">Default Parameters</h2><p>To minimize configuration, Results can be conf igured with a single value, which will be converted into a parameter, and each Result can specify which parameter this value should be set as. For example, here is a result defined in XML that uses a default parameter:</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;"><result type="freemarker">foo.fm</result> </pre> </div></div><p>That is the equivalent to this:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> Modified: websites/production/struts/content/docs/s2-003.html ============================================================================== --- websites/production/struts/content/docs/s2-003.html (original) +++ websites/production/struts/content/docs/s2-003.html Mon Feb 29 19:38:05 2016 @@ -139,11 +139,11 @@ under the License. <p>So, for instance, to set #session.user to '0wn3d' the following parameter name can be used:</p> -<p>('\u0023' + 'session<a shape="rect" class="createlink" href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&title=%5C%27user%5C%27&linkCreation=true&fromPageId=88882">\'user\'</a>')(unused)=0wn3d</p> +<p>('\u0023' + 'session<a shape="rect" class="unresolved" href="#">\'user\'</a>')(unused)=0wn3d</p> <p>which will look as follows once URL encoded:</p> -<p>('\u0023'%20%2b%20'session<a shape="rect" class="createlink" href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&title=%5C%27user%5C%27&linkCreation=true&fromPageId=88882">\'user\'</a>')(unused)=0wn3d </p> +<p>('\u0023'%20%2b%20'session<a shape="rect" class="unresolved" href="#">\'user\'</a>')(unused)=0wn3d </p> <h2 id="S2-003-Solution">Solution</h2> Added: websites/production/struts/content/docs/s2-027.html ============================================================================== --- websites/production/struts/content/docs/s2-027.html (added) +++ websites/production/struts/content/docs/s2-027.html Mon Feb 29 19:38:05 2016 @@ -0,0 +1,138 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +--> +<html> +<head> + <link type="text/css" rel="stylesheet" href="https://struts.apache.org/css/default.css"> + <style type="text/css"> + .dp-highlighter { + width:95% !important; + } + </style> + <style type="text/css"> + .footer { + background-image: url('https://cwiki.apache.org/confluence/images/border/border_bottom.gif'); + background-repeat: repeat-x; + background-position: left top; + padding-top: 4px; + color: #666; + } + </style> + <script type="text/javascript" language="javascript"> + var hide = null; + var show = null; + var children = null; + + function init() { + /* Search form initialization */ + var form = document.forms['search']; + if (form != null) { + form.elements['domains'].value = location.hostname; + form.elements['sitesearch'].value = location.hostname; + } + + /* Children initialization */ + hide = document.getElementById('hide'); + show = document.getElementById('show'); + children = document.all != null ? + document.all['children'] : + document.getElementById('children'); + if (children != null) { + children.style.display = 'none'; + show.style.display = 'inline'; + hide.style.display = 'none'; + } + } + + function showChildren() { + children.style.display = 'block'; + show.style.display = 'none'; + hide.style.display = 'inline'; + } + + function hideChildren() { + children.style.display = 'none'; + show.style.display = 'inline'; + hide.style.display = 'none'; + } + </script> + <title>S2-027</title> +</head> +<body onload="init()"> +<table border="0" cellpadding="2" cellspacing="0" width="100%"> + <tr class="topBar"> + <td align="left" valign="middle" class="topBarDiv" align="left" nowrap> + <a href="home.html">Home</a> > <a href="security-bulletins.html">Security Bulletins</a> > <a href="s2-027.html">S2-027</a> + </td> + <td align="right" valign="middle" nowrap> + <form name="search" action="https://www.google.com/search" method="get"> + <input type="hidden" name="ie" value="UTF-8" /> + <input type="hidden" name="oe" value="UTF-8" /> + <input type="hidden" name="domains" value="" /> + <input type="hidden" name="sitesearch" value="" /> + <input type="text" name="q" maxlength="255" value="" /> + <input type="submit" name="btnG" value="Google Search" /> + </form> + </td> + </tr> +</table> + +<div id="PageContent"> + <div class="pageheader" style="padding: 6px 0px 0px 0px;"> + <!-- We'll enable this once we figure out how to access (and save) the logo resource --> + <!--img src="/wiki/images/confluence_logo.gif" style="float: left; margin: 4px 4px 4px 10px;" border="0"--> + <div style="margin: 0px 10px 0px 10px" class="smalltext">Apache Struts 2 Documentation</div> + <div style="margin: 0px 10px 8px 10px" class="pagetitle">S2-027</div> + + <div class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> + <a href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=61341645"> + <img src="https://cwiki.apache.org/confluence/images/icons/notep_16.gif" + height="16" width="16" border="0" align="absmiddle" title="Edit Page"></a> + <a href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=61341645">Edit Page</a> + + <a href="https://cwiki.apache.org/confluence/pages/listpages.action?key=WW"> + <img src="https://cwiki.apache.org/confluence/images/icons/browse_space.gif" + height="16" width="16" border="0" align="absmiddle" title="Browse Space"></a> + <a href="https://cwiki.apache.org/confluence/pages/listpages.action?key=WW">Browse Space</a> + + <a href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&fromPageId=61341645"> + <img src="https://cwiki.apache.org/confluence/images/icons/add_page_16.gif" + height="16" width="16" border="0" align="absmiddle" title="Add Page"></a> + <a href="https://cwiki.apache.org/confluence/pages/createpage.action?spaceKey=WW&fromPageId=61341645">Add Page</a> + + <a href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=WW&fromPageId=61341645"> + <img src="https://cwiki.apache.org/confluence/images/icons/add_blogentry_16.gif" + height="16" width="16" border="0" align="absmiddle" title="Add News"></a> + <a href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=WW&fromPageId=61341645">Add News</a> + </div> + </div> + + <div class="pagecontent"> + <div class="wiki-content"> + <div id="ConfluenceContent"><h2 id="S2-027-Summary">Summary</h2><code>TextParseUtil.translateVariables</code> does not filter malicious OGNL expressions<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</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>Remote Code Execution, when unsanitized user input is passed to the method by a developer</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>Low</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Recommendation</p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>Don't pass unsanitized input to the said method or ActionSupport's getText methods. An upgrade to <a shape="rect" class="external-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.16.3</span></p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Reporter</p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>Huawei PSIRT Team</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);">-</span></p></td></tr></tbody></table></div><h2 id="S2-027-Problem">Problem</h2><p><code>TextParseUtil.translateVariables</code><span> evaluates a given String with OGNL. Before Struts 2.3.20, a specially crafted String incorporating ANTLR tooling can, when passed to sa id method, cause a remote code execution.</span></p><p><span>The Struts 2 framework does not pass any user modifiable input to this method, neither directly nor indirectly. However, a developer crafting a Struts based web application might pass unsanitized user input to <span>TextParseUtil.translateVariables</span> or ActionSupport's getText methods. In that case a RCE exploitation might be possible.</span></p><h2 id="S2-027-Solution">Solution</h2><ul><li>don't pass unsanitized user input to framework methods that include OGNL expression evaluation</li><li>upgrade to Struts 2.3.24.1. Since Struts 2.3.20 advanced filtering was applied to this and similar methods involving OGNL evaluation.</li></ul><p> </p></div> + </div> + + + </div> +</div> +<div class="footer"> + Generated by CXF SiteExporter +</div> +</body> +</html> 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 Mon Feb 29 19:38:05 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.rbtoc1453884616256 {padding: 0px;} -div.rbtoc1453884616256 ul {list-style: none;margin-left: 0px;} -div.rbtoc1453884616256 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1456773755099 {padding: 0px;} +div.rbtoc1456773755099 ul {list-style: none;margin-left: 0px;} +div.rbtoc1456773755099 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style><div class="toc-macro rbtoc1453884616256"> +/*]]>*/</style><div class="toc-macro rbtoc1456773755099"> <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>