Author: lukaszlenart Date: Fri Dec 2 07:17:46 2016 New Revision: 1002006 Log: Updates production
Added: websites/production/struts/content/docs/s2-044.html websites/production/struts/content/docs/version-notes-257.html Modified: websites/production/struts/content/docs/actionmapper.html websites/production/struts/content/docs/checkboxlist.html websites/production/struts/content/docs/constant-configuration.html websites/production/struts/content/docs/conversion-error-interceptor.html websites/production/struts/content/docs/default-workflow-interceptor.html websites/production/struts/content/docs/doubleselect.html websites/production/struts/content/docs/extending-themes.html websites/production/struts/content/docs/file-upload.html websites/production/struts/content/docs/freemarker.html websites/production/struts/content/docs/how-can-we-access-request-parameters-passed-into-an-action.html websites/production/struts/content/docs/i18n-interceptor.html websites/production/struts/content/docs/interceptors.html websites/production/struts/content/docs/localization.html websites/production/struts/content/docs/migration-guide.html websites/production/struts/content/docs/optiontransferselect.html websites/production/struts/content/docs/param.html websites/production/struts/content/docs/plugins.html websites/production/struts/content/docs/radio.html websites/production/struts/content/docs/security-bulletins.html websites/production/struts/content/docs/security.html websites/production/struts/content/docs/servlet-config-interceptor.html websites/production/struts/content/docs/set.html websites/production/struts/content/docs/struts-defaultxml.html websites/production/struts/content/docs/template-loading.html websites/production/struts/content/docs/testing-actions.html websites/production/struts/content/docs/text.html websites/production/struts/content/docs/tiles-plugin.html websites/production/struts/content/docs/type-conversion.html websites/production/struts/content/docs/updownselect.html websites/production/struts/content/docs/validation.html websites/production/struts/content/docs/version-notes-2331.html websites/production/struts/content/docs/xhtml-theme.html Modified: websites/production/struts/content/docs/actionmapper.html ============================================================================== --- websites/production/struts/content/docs/actionmapper.html (original) +++ websites/production/struts/content/docs/actionmapper.html Fri Dec 2 07:17:46 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.rbtoc1472795636335 {padding: 0px;} -div.rbtoc1472795636335 ul {list-style: disc;margin-left: 0px;} -div.rbtoc1472795636335 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1480661815723 {padding: 0px;} +div.rbtoc1480661815723 ul {list-style: disc;margin-left: 0px;} +div.rbtoc1480661815723 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></p><div class="toc-macro rbtoc1472795636335"> +/*]]>*/</style></p><div class="toc-macro rbtoc1480661815723"> <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><li><a shape="rect" href="#ActionMapper-AllowedactionnameRegEx">Allowed action name RegEx</a></li><li><a shape="rect" href="#ActionMapper-AllowedmethodnameRegEx">Allowed method name RegEx</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/checkboxlist.html ============================================================================== --- websites/production/struts/content/docs/checkboxlist.html (original) +++ websites/production/struts/content/docs/checkboxlist.html Fri Dec 2 07:17:46 2016 @@ -142,7 +142,7 @@ under the License. <div class="confluence-information-macro confluence-information-macro-note"><p class="title">Important</p><span class="aui-icon aui-icon-small aui-iconfont-warning confluence-information-macro-icon"></span><div class="confluence-information-macro-body"> <p></p><p> Note that the listkey and listvalue attribute will default to "key" and "value" -respectively only when the list attribute is evaluated to a Map or its decendant. +respectively only when the list attribute is evaluated to a Map or its descendant. Everything else will result in listkey and listvalue to be null and not used. </p></div></div> Modified: websites/production/struts/content/docs/constant-configuration.html ============================================================================== --- websites/production/struts/content/docs/constant-configuration.html (original) +++ websites/production/struts/content/docs/constant-configuration.html Fri Dec 2 07:17:46 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.rbtoc1476770250347 {padding: 0px;} -div.rbtoc1476770250347 ul {list-style: disc;margin-left: 0px;} -div.rbtoc1476770250347 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1480661962192 {padding: 0px;} +div.rbtoc1480661962192 ul {list-style: disc;margin-left: 0px;} +div.rbtoc1480661962192 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></p><div class="toc-macro rbtoc1476770250347"> +/*]]>*/</style></p><div class="toc-macro rbtoc1480661962192"> <ul class="toc-indentation"><li><a shape="rect" href="#ConstantConfiguration-Constant">Constant</a> <ul class="toc-indentation"><li><a shape="rect" href="#ConstantConfiguration-Valuesubstitution">Value substitution</a></li><li><a shape="rect" href="#ConstantConfiguration-Sampleusage">Sample usage</a></li></ul> </li></ul> @@ -152,7 +152,7 @@ div.rbtoc1476770250347 li {margin-left: <constant name="os" value="Current OS = ${os.name}"/> - <constant name="struts.devMode" value="${ENV.STRUTS_DEV_MODE:false}"/> + <constant name="struts.devMode" value="${env.STRUTS_DEV_MODE:false}"/> </struts></pre> </div></div><p>Note: substitution is limited to System properties and ENV variables and works only for <code>constant</code>s (as for now).</p><h3 id="ConstantConfiguration-Sampleusage">Sample usage</h3><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Constant Example (struts.xml)</b></div><div class="codeContent panelContent pdl"> <pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;"><struts> Modified: websites/production/struts/content/docs/conversion-error-interceptor.html ============================================================================== --- websites/production/struts/content/docs/conversion-error-interceptor.html (original) +++ websites/production/struts/content/docs/conversion-error-interceptor.html Fri Dec 2 07:17:46 2016 @@ -153,6 +153,12 @@ display the original string ("abc") agai the user). </p> +<p></p><p> +<b>Note:</b> Since 2.5.2, this interceptor extends MethodFilterInterceptor, therefore being +able to deal with excludeMethods / includeMethods parameters. See [Workflow Interceptor] +(class DefaultWorkflowInterceptor) for documentation and examples on how to use this feature. +</p> + <p>From the Javadocs of the Struts 2 interceptor:</p> Modified: websites/production/struts/content/docs/default-workflow-interceptor.html ============================================================================== --- websites/production/struts/content/docs/default-workflow-interceptor.html (original) +++ websites/production/struts/content/docs/default-workflow-interceptor.html Fri Dec 2 07:17:46 2016 @@ -139,7 +139,8 @@ under the License. <div class="pagecontent"> <div class="wiki-content"> <div id="ConfluenceContent"><p> -An interceptor that makes sure there are not validation errors before allowing the interceptor chain to continue. +An interceptor that makes sure there are not validation, conversion or action errors before allowing the interceptor chain to continue. +If a single FieldError or ActionError (including the ones replicated by the Message Store Interceptor in a redirection) is found, the INPUT result will be triggered. <b>This interceptor does not perform any validation</b>. </p> Modified: websites/production/struts/content/docs/doubleselect.html ============================================================================== --- websites/production/struts/content/docs/doubleselect.html (original) +++ websites/production/struts/content/docs/doubleselect.html Fri Dec 2 07:17:46 2016 @@ -142,7 +142,7 @@ under the License. <div class="confluence-information-macro confluence-information-macro-note"><p class="title">Important</p><span class="aui-icon aui-icon-small aui-iconfont-warning confluence-information-macro-icon"></span><div class="confluence-information-macro-body"> <p></p><p> Note that the doublelistkey and doublelistvalue attribute will default to "key" and "value" -respectively only when the doublelist attribute is evaluated to a Map or its decendant. +respectively only when the doublelist attribute is evaluated to a Map or its descendant. Other thing else, will result in doublelistkey and doublelistvalue to be null and not used. </p> </div></div> Modified: websites/production/struts/content/docs/extending-themes.html ============================================================================== --- websites/production/struts/content/docs/extending-themes.html (original) +++ websites/production/struts/content/docs/extending-themes.html Fri Dec 2 07:17:46 2016 @@ -138,7 +138,14 @@ under the License. <div class="pagecontent"> <div class="wiki-content"> - <div id="ConfluenceContent"><p>Most often, an application may just need to override a template (see <a shape="rect" href="template-loading.html">Template Loading</a>) so that a certain control renders differently. Or, an application may need to add a new template to an existing theme. Other times, you might want to create an entirely new theme, perhaps because you are building a rich set of unique and reusable templates for your organization.</p><p>There are three ways to create new themes:</p><ul><li>Create a new theme from scratch (<strong>hard!</strong>)</li><li>Wrap an existing theme</li><li>Extend an existing theme</li></ul><h2 id="ExtendingThemes-CreatingaNewThemefromScratch">Creating a New Theme from Scratch</h2><div class="confluence-information-macro confluence-information-macro-tip"><p class="title">Keep it simple, Sam!</p><span class="aui-icon aui-icon-small aui-iconfont-approve confluence-information-macro-icon"></span><div class="confluence-information-macro -body"><p>It's probably never a good idea to create a new theme from scratch. Instead, use the <a shape="rect" href="simple-theme.html">simple theme</a> as a starting point. The simple theme provides just enough foundation to make it easy to create new controls by extending or wrapping the basic controls. Before starting a new theme, be sure to review the source templates for all of the provided themes. The existing themes are your best guide to creating new themes.</p></div></div><h2 id="ExtendingThemes-WrappinganExistingTheme">Wrapping an Existing Theme</h2><p>The <a shape="rect" href="xhtml-theme.html">xhtml theme</a> provides several good examples of the "wrapping" technique. The <a shape="rect" href="simple-theme.html">simple theme</a> renders the basic control. The xhtml theme "dresses up" many of the controls by adding a header and footer.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Wra pping a control</b></div><div class="codeContent panelContent pdl"> + <div id="ConfluenceContent"><p><style type="text/css">/*<![CDATA[*/ +div.rbtoc1480661710298 {padding: 0px;} +div.rbtoc1480661710298 ul {list-style: disc;margin-left: 0px;} +div.rbtoc1480661710298 li {margin-left: 0px;padding-left: 0px;} + +/*]]>*/</style></p><div class="toc-macro rbtoc1480661710298"> +<ul class="toc-indentation"><li><a shape="rect" href="#ExtendingThemes-CreatingaNewThemefromScratch">Creating a New Theme from Scratch</a></li><li><a shape="rect" href="#ExtendingThemes-WrappinganExistingTheme">Wrapping an Existing Theme</a></li><li><a shape="rect" href="#ExtendingThemes-ExtendinganExistingTheme">Extending an Existing Theme</a></li><li><a shape="rect" href="#ExtendingThemes-Specialparameters">Special parameters</a></li></ul> +</div><p>Most often, an application may just need to override a template (see <a shape="rect" href="template-loading.html">Template Loading</a>) so that a certain control renders differently. Or, an application may need to add a new template to an existing theme. Other times, you might want to create an entirely new theme, perhaps because you are building a rich set of unique and reusable templates for your organization.</p><p>There are three ways to create new themes:</p><ul><li>Create a new theme from scratch (<strong>hard!</strong>)</li><li>Wrap an existing theme</li><li>Extend an existing theme</li></ul><h2 id="ExtendingThemes-CreatingaNewThemefromScratch">Creating a New Theme from Scratch</h2><div class="confluence-information-macro confluence-information-macro-tip"><p class="title">Keep it simple, Sam!</p><span class="aui-icon aui-icon-small aui-iconfont-approve confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>It's probably never a go od idea to create a new theme from scratch. Instead, use the <a shape="rect" href="simple-theme.html">simple theme</a> as a starting point. The simple theme provides just enough foundation to make it easy to create new controls by extending or wrapping the basic controls. Before starting a new theme, be sure to review the source templates for all of the provided themes. The existing themes are your best guide to creating new themes.</p></div></div><h2 id="ExtendingThemes-WrappinganExistingTheme">Wrapping an Existing Theme</h2><p>The <a shape="rect" href="xhtml-theme.html">xhtml theme</a> provides several good examples of the "wrapping" technique. The <a shape="rect" href="simple-theme.html">simple theme</a> renders the basic control. The xhtml theme "dresses up" many of the controls by adding a header and footer.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Wrapping a control</b></div><div clas s="codeContent panelContent pdl"> <pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;"><#include "/${parameters.templateDir}/${parameters.expandTheme}/controlheader.ftl" /> <#include "/${parameters.templateDir}/simple/xxx.ftl" /> <#include "/${parameters.templateDir}/${parameters.expandTheme}/controlfooter.ftl" /> Modified: websites/production/struts/content/docs/file-upload.html ============================================================================== --- websites/production/struts/content/docs/file-upload.html (original) +++ websites/production/struts/content/docs/file-upload.html Fri Dec 2 07:17:46 2016 @@ -139,11 +139,11 @@ under the License. <div class="pagecontent"> <div class="wiki-content"> <div id="ConfluenceContent"><p>The Struts 2 framework provides built-in support for processing file uploads that conform to <a shape="rect" class="external-link" href="http://www.ietf.org/rfc/rfc1867.txt" rel="nofollow">RFC 1867</a>, "Form-based File Upload in HTML". When correctly configured the framework will pass uploaded file(s) into your Action class. Support for individual and multiple file uploads are provided. When a file is uploaded it will typically be stored in a temporary directory. Uploaded files should be processed or moved by your Action class to ensure the data is not lost. Be aware that servers may have a security policy in place that prohibits you from writing to directories other than the temporary directory and the directories that belong to your web application.</p><p><style type="text/css">/*<![CDATA[*/ -div.rbtoc1464698383595 {padding: 0px;} -div.rbtoc1464698383595 ul {list-style: disc;margin-left: 0px;} -div.rbtoc1464698383595 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1480661996121 {padding: 0px;} +div.rbtoc1480661996121 ul {list-style: disc;margin-left: 0px;} +div.rbtoc1480661996121 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></p><div class="toc-macro rbtoc1464698383595"> +/*]]>*/</style></p><div class="toc-macro rbtoc1480661996121"> <ul class="toc-indentation"><li><a shape="rect" href="#FileUpload-Dependencies">Dependencies</a></li><li><a shape="rect" href="#FileUpload-BasicUsage">Basic Usage</a></li><li><a shape="rect" href="#FileUpload-UploadingMultipleFiles">Uploading Multiple Files</a> <ul class="toc-indentation"><li><a shape="rect" href="#FileUpload-UploadingMultipleFilesusingArrays">Uploading Multiple Files using Arrays</a></li><li><a shape="rect" href="#FileUpload-UploadingMultipleFilesusingLists">Uploading Multiple Files using Lists</a></li></ul> </li><li><a shape="rect" href="#FileUpload-AdvancedConfiguration">Advanced Configuration</a> Modified: websites/production/struts/content/docs/freemarker.html ============================================================================== --- websites/production/struts/content/docs/freemarker.html (original) +++ websites/production/struts/content/docs/freemarker.html Fri Dec 2 07:17:46 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.rbtoc1464698178092 {padding: 0px;} -div.rbtoc1464698178092 ul {list-style: disc;margin-left: 0px;} -div.rbtoc1464698178092 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1480661779052 {padding: 0px;} +div.rbtoc1480661779052 ul {list-style: disc;margin-left: 0px;} +div.rbtoc1480661779052 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></p><div class="toc-macro rbtoc1464698178092"> +/*]]>*/</style></p><div class="toc-macro rbtoc1480661779052"> <ul class="toc-indentation"><li><a shape="rect" href="#FreeMarker-GettingStarted">Getting Started</a></li><li><a shape="rect" href="#FreeMarker-Servlet/JSPScopedObjects">Servlet / JSP Scoped Objects</a> <ul class="toc-indentation"><li><a shape="rect" href="#FreeMarker-ApplicationScopeAttribute">Application Scope Attribute</a></li><li><a shape="rect" href="#FreeMarker-SessionScopeAttribute">Session Scope Attribute</a></li><li><a shape="rect" href="#FreeMarker-RequestScopeAttribute">Request Scope Attribute</a></li><li><a shape="rect" href="#FreeMarker-RequestParameter">Request Parameter</a></li><li><a shape="rect" href="#FreeMarker-Contextparameter">Context parameter</a></li></ul> </li><li><a shape="rect" href="#FreeMarker-TemplateLoading">Template Loading</a></li><li><a shape="rect" href="#FreeMarker-VariableResolution">Variable Resolution</a></li><li><a shape="rect" href="#FreeMarker-TagSupport">Tag Support</a></li><li><a shape="rect" href="#FreeMarker-TipsandTricks">Tips and Tricks</a> Modified: websites/production/struts/content/docs/how-can-we-access-request-parameters-passed-into-an-action.html ============================================================================== --- websites/production/struts/content/docs/how-can-we-access-request-parameters-passed-into-an-action.html (original) +++ websites/production/struts/content/docs/how-can-we-access-request-parameters-passed-into-an-action.html Fri Dec 2 07:17:46 2016 @@ -138,40 +138,10 @@ under the License. <div class="pagecontent"> <div class="wiki-content"> - <div id="ConfluenceContent"> - -<p>You can obtain the request parameters by asking the ActionContext or implementing ParameterAware. Implementing ParameterAware is preferred.</p> - -<h2 id="HowcanweaccessrequestparameterspassedintoanAction-AsktheActionContext">Ask the ActionContext</h2> - -<p>The request parameters are available on the ActionContext instance, which is made available via ThreadLocal.</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;"> -Map parameters = ActionContext.getContext().getParameters(); -</pre> -</div></div> - -<h2 id="HowcanweaccessrequestparameterspassedintoanAction-ImplementParameterAware">Implement ParameterAware</h2> - -<p><img class="emoticon emoticon-yellow-star" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/star_yellow.png" data-emoticon-name="yellow-star" alt="(star)"> <em>Preferred</em></p> -<ul><li>Ensure that <code>servlet-config</code> Interceptor is included in the Action's stack. - <ul><li><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)"> <em>The default stack already includes</em> <code><em>servlet-config</em></code><em>.</em></li></ul> - </li><li>Edit the Action so that it implements the ParameterAware interface. - <ul><li>The ParameterAware interface expects a <code>setParameters</code> method. You may wish to include a companion <code>getParameters</code> method.</li></ul> - </li><li>At runtime, call <code>getParameters</code> to obtain a Map representing the request parameters.</li></ul> - - -<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;"> -Map parameters = this.getParameters(); + <div id="ConfluenceContent"><p>You can obtain the request parameters by asking the ActionContext or implementing ParameterAware. Implementing ParameterAware is preferred.</p><h2 id="HowcanweaccessrequestparameterspassedintoanAction-AsktheActionContext">Ask the ActionContext</h2><p>The request parameters are available on the ActionContext instance, which is made available via ThreadLocal.</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;">Map parameters = ActionContext.getContext().getParameters(); </pre> -</div></div> -<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>When the <code>servlet-config</code> Interceptor sees that an Action implements ParameterAware, it passes a Map of the request parameters to the Action's <code>setParameters</code> method.</p></div></div> -<div class="confluence-information-macro confluence-information-macro-tip"><span class="aui-icon aui-icon-small aui-iconfont-approve confluence-information-macro-icon"></span><div class="confluence-information-macro-body"> -<p>To unit test a ParameterAware Action, create your own Map with the pertinent request parameters and call <code>setParameters</code> as part of the test's <code>setUp</code> method.</p></div></div> -<p>@see <a shape="rect" href="struts-defaultxml.html">struts-default.xml</a><br clear="none"> -@see org.apache.struts.action2.interceptor.ParameterAware<br clear="none"> -@see org.apache.struts.action2.interceptor.<a shape="rect" href="servlet-config-interceptor.html">Servlet Config Interceptor</a></p></div> +</div></div><h2 id="HowcanweaccessrequestparameterspassedintoanAction-ImplementHttpParametersAware">Implement HttpParametersAware</h2><p><img class="emoticon emoticon-yellow-star" src="https://cwiki.apache.org/confluence/s/en_GB/5982/f2b47fb3d636c8bc9fd0b11c0ec6d0ae18646be7.1/_/images/icons/emoticons/star_yellow.png" data-emoticon-name="yellow-star" alt="(star)"> <em>Preferred</em></p><ul><li>Ensure that <code>servlet-config</code> Interceptor is included in the Action's stack.<ul><li><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)"> <em>The default stack already includes</em> <code><em>servlet-config</em></code><em>.</em></li></ul></li><li>Edit the Action so that it implements the HttpParametersAware interface.<ul><li>The HttpParametersAware interface expects a <code>setParameters</code> method. You may wi sh to include a companion <code>getParameters</code> method.</li></ul></li><li>At runtime, call <code>getParameters</code> to obtain an object representing the request parameters.</li></ul><p> </p><div class="confluence-information-macro confluence-information-macro-information"><span class="aui-icon aui-icon-small aui-iconfont-info confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>When the <code>servlet-config</code> Interceptor sees that an Action implements ParameterAware, it passes a Map of the request parameters to the Action's <code>setParameters</code> method.</p></div></div><p>see <a shape="rect" href="struts-defaultxml.html">struts-default.xml</a> and org.apache.struts.action2.interceptor.<a shape="rect" href="servlet-config-interceptor.html">Servlet Config Interceptor</a></p></div> </div> Modified: websites/production/struts/content/docs/i18n-interceptor.html ============================================================================== --- websites/production/struts/content/docs/i18n-interceptor.html (original) +++ websites/production/struts/content/docs/i18n-interceptor.html Fri Dec 2 07:17:46 2016 @@ -138,49 +138,19 @@ under the License. <div class="pagecontent"> <div class="wiki-content"> - <div id="ConfluenceContent"><p> -An interceptor that handles setting the locale specified in a session as the locale for the current action request. -In addition, this interceptor will look for a specific HTTP request parameter and set the locale to whatever value is -provided. This means that this interceptor can be used to allow for your application to dynamically change the locale -for the user's session or, alternatively, only for the current request (since XWork 2.1.3). -This is very useful for applications that require multi-lingual support and want the user to -be able to set his or her language preference at any point. The locale parameter is removed during the execution of -this interceptor, ensuring that properties aren't set on an action (such as request_locale) that have no typical -corresponding setter in your action. -</p> - -<p></p><p> -For example, using the default parameter name, a request to <b>foo.action?request_locale=en_US</b>, then the -locale for US English is saved in the user's session and will be used for all future requests. -If there is no locale set (for example with the first visit), the interceptor uses the browser locale. -</p> - + <div id="ConfluenceContent"><div class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div> <h2 id="I18nInterceptor-Parameters">Parameters</h2> - -<p></p><ul><li>parameterName (optional) - the name of the HTTP request parameter that dictates the locale to switch to and save -in the session. By default this is <b>request_locale</b></li><li>requestOnlyParameterName (optional) - the name of the HTTP request parameter that dictates the locale to switch to -for the current request only, without saving it in the session. By default this is <b>request_only_locale</b></li><li>attributeName (optional) - the name of the session key to store the selected locale. By default this is -<b>WW_TRANS_I18N_LOCALE</b></li></ul> +<div class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div> <h2 id="I18nInterceptor-ExtendingtheInterceptor">Extending the Interceptor</h2> -<p></p><p> -There are no known extensions points for this interceptor. -</p> +<div class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div> <h2 id="I18nInterceptor-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="someAction" class="com.examples.SomeAction"> - <interceptor-ref name="i18n"/> - <interceptor-ref name="basicStack"/> - <result name="success">good_result.ftl</result> -</action> -]]></script> -</div></div></div> +<div class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div></div> </div> Modified: websites/production/struts/content/docs/interceptors.html ============================================================================== --- websites/production/struts/content/docs/interceptors.html (original) +++ websites/production/struts/content/docs/interceptors.html Fri Dec 2 07:17:46 2016 @@ -139,11 +139,11 @@ under the License. <div class="pagecontent"> <div class="wiki-content"> <div id="ConfluenceContent"><div class="confluence-information-macro confluence-information-macro-tip"><span class="aui-icon aui-icon-small aui-iconfont-approve confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>The default Interceptor stack is designed to serve the needs of most applications. Most applications will <strong>not</strong> need to add Interceptors or change the Interceptor stack.</p></div></div><p>Many Actions share common concerns. Some Actions need input validated. Other Actions may need a file upload to be pre-processed. Another Action might need protection from a double submit. Many Actions need drop-down lists and other controls pre-populated before the page displays.</p><p>The framework makes it easy to share solutions to these concerns using an "Interceptor" strategy. When you request a resource that maps to an "action", the framework invokes the Action object. But, before the Action is executed, the invocatio n can be intercepted by another object. After the Action executes, the invocation could be intercepted again. Unsurprisingly, we call these objects "Interceptors."</p><p><style type="text/css">/*<![CDATA[*/ -div.rbtoc1472795632122 {padding: 0px;} -div.rbtoc1472795632122 ul {list-style: disc;margin-left: 0px;} -div.rbtoc1472795632122 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1480661696460 {padding: 0px;} +div.rbtoc1480661696460 ul {list-style: disc;margin-left: 0px;} +div.rbtoc1480661696460 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></p><div class="toc-macro rbtoc1472795632122"> +/*]]>*/</style></p><div class="toc-macro rbtoc1480661696460"> <ul class="toc-indentation"><li><a shape="rect" href="#Interceptors-UnderstandingInterceptors">Understanding Interceptors</a></li><li><a shape="rect" href="#Interceptors-ConfiguringInterceptors">Configuring Interceptors</a></li><li><a shape="rect" href="#Interceptors-StackingInterceptors">Stacking Interceptors</a> <ul class="toc-indentation"><li><a shape="rect" href="#Interceptors-TheDefaultConfiguration">The Default Configuration</a></li></ul> </li><li><a shape="rect" href="#Interceptors-FrameworkInterceptors">Framework Interceptors</a> @@ -342,6 +342,8 @@ div.rbtoc1472795632122 li {margin-left: <bean type="ognl.PropertyAccessor" name="java.util.Map" class="com.opensymphony.xwork2.ognl.accessor.XWorkMapPropertyAccessor" /> <bean type="ognl.PropertyAccessor" name="java.util.Collection" class="com.opensymphony.xwork2.ognl.accessor.XWorkCollectionPropertyAccessor" /> <bean type="ognl.PropertyAccessor" name="com.opensymphony.xwork2.ognl.ObjectProxy" class="com.opensymphony.xwork2.ognl.accessor.ObjectProxyPropertyAccessor" /> + <bean type="ognl.PropertyAccessor" name="org.apache.struts2.dispatcher.HttpParameters" class="com.opensymphony.xwork2.ognl.accessor.HttpParametersPropertyAccessor" /> + <bean type="ognl.PropertyAccessor" name="org.apache.struts2.dispatcher.Parameter" class="com.opensymphony.xwork2.ognl.accessor.ParameterPropertyAccessor" /> <bean type="ognl.MethodAccessor" name="java.lang.Object" class="com.opensymphony.xwork2.ognl.accessor.XWorkMethodAccessor" /> <bean type="ognl.MethodAccessor" name="com.opensymphony.xwork2.util.CompoundRoot" class="com.opensymphony.xwork2.ognl.accessor.CompoundRootAccessor" /> @@ -363,6 +365,8 @@ div.rbtoc1472795632122 li {margin-left: <bean type="com.opensymphony.xwork2.security.ExcludedPatternsChecker" name="struts" class="com.opensymphony.xwork2.security.DefaultExcludedPatternsChecker" scope="prototype" /> <bean type="com.opensymphony.xwork2.security.AcceptedPatternsChecker" name="struts" class="com.opensymphony.xwork2.security.DefaultAcceptedPatternsChecker" scope="prototype" /> + <bean type="com.opensymphony.xwork2.config.providers.ValueSubstitutor" class="com.opensymphony.xwork2.config.providers.EnvsValueSubstitutor" scope="singleton"/> + <package name="struts-default" abstract="true" strict-method-invocation="true"> <result-types> <result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/> @@ -391,7 +395,7 @@ div.rbtoc1472795632122 li {margin-left: <interceptor name="execAndWait" class="org.apache.struts2.interceptor.ExecuteAndWaitInterceptor"/> <interceptor name="exception" class="com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor"/> <interceptor name="fileUpload" class="org.apache.struts2.interceptor.FileUploadInterceptor"/> - <interceptor name="i18n" class="com.opensymphony.xwork2.interceptor.I18nInterceptor"/> + <interceptor name="i18n" class="org.apache.struts2.interceptor.I18nInterceptor"/> <interceptor name="logger" class="com.opensymphony.xwork2.interceptor.LoggingInterceptor"/> <interceptor name="modelDriven" class="com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor"/> <interceptor name="scopedModelDriven" class="com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor"/> Modified: websites/production/struts/content/docs/localization.html ============================================================================== --- websites/production/struts/content/docs/localization.html (original) +++ websites/production/struts/content/docs/localization.html Fri Dec 2 07:17:46 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.rbtoc1464698162642 {padding: 0px;} -div.rbtoc1464698162642 ul {list-style: disc;margin-left: 0px;} -div.rbtoc1464698162642 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1480661764458 {padding: 0px;} +div.rbtoc1480661764458 ul {list-style: disc;margin-left: 0px;} +div.rbtoc1480661764458 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></p><div class="toc-macro rbtoc1464698162642"> +/*]]>*/</style></p><div class="toc-macro rbtoc1480661764458"> <ul class="toc-indentation"><li><a shape="rect" href="#Localization-Overview">Overview</a></li><li><a shape="rect" href="#Localization-ResourceBundleSearchOrder">Resource Bundle Search Order</a> <ul class="toc-indentation"><li><a shape="rect" href="#Localization-Defaultaction'sclass">Default action's class</a></li><li><a shape="rect" href="#Localization-UsinggetTextfromaTag">Using getText from a Tag</a></li><li><a shape="rect" href="#Localization-Usingthetexttag">Using the text tag</a></li><li><a shape="rect" href="#Localization-UsingtheI18ntag">Using the I18n tag</a></li><li><a shape="rect" href="#Localization-UsingtheKeyattributeofUITags">Using the Key attribute of UI Tags</a></li></ul> </li><li><a shape="rect" href="#Localization-I18nInterceptor">I18n Interceptor</a></li><li><a shape="rect" href="#Localization-GlobalResources(struts.custom.i18n.resources)instruts.properties">Global Resources (struts.custom.i18n.resources) in struts.properties</a></li><li><a shape="rect" href="#Localization-FormattingDatesandNumbers">Formatting Dates and Numbers</a></li><li><a shape="rect" href="#Localization-ComparisonwithStruts1">Comparison with Struts 1</a></li><li><a shape="rect" href="#Localization-Next:">Next: Type Conversion</a></li></ul> Modified: websites/production/struts/content/docs/migration-guide.html ============================================================================== --- websites/production/struts/content/docs/migration-guide.html (original) +++ websites/production/struts/content/docs/migration-guide.html Fri Dec 2 07:17:46 2016 @@ -125,7 +125,7 @@ under the License. <div class="pagecontent"> <div class="wiki-content"> - <div id="ConfluenceContent"><p>Getting here from there.</p><h3 id="MigrationGuide-VersionNotes2.5.x">Version Notes 2.5.x</h3><ul><li><a shape="rect" href="version-notes-255.html">Version Notes 2.5.5</a></li><li><a shape="rect" href="version-notes-252.html">Version Notes 2.5.2</a></li><li><a shape="rect" href="version-notes-251.html">Version Notes 2.5.1</a></li><li><a shape="rect" href="version-notes-25.html">Version Notes 2.5</a></li></ul><h3 id="MigrationGuide-VersionNotes2.3.x">Version Notes 2.3.x</h3><ul><li><a shape="rect" href="version-notes-2331.html">Version Notes 2.3.31</a></li><li><a shape="rect" href="version-notes-2330.html">Version Notes 2.3.30</a></li><li><a shape="rect" href="version-notes-2329.html">Version Notes 2.3.29</a></li><li><a shape="rect" href="version-notes-23281.html">Version Notes 2.3.28.1</a></li><li><a shape="rect" href="version-notes-2328.html">Version Notes 2.3.28</a></li><li><a shape="rect" href="version-notes-23243.html">Version Notes 2.3 .24.3</a></li><li><a shape="rect" href="version-notes-23241.html">Version Notes 2.3.24.1</a></li><li><a shape="rect" href="version-notes-2324.html">Version Notes 2.3.24</a></li><li><a shape="rect" href="version-notes-23203.html">Version Notes 2.3.20.3</a></li><li><a shape="rect" href="version-notes-23201.html">Version Notes 2.3.20.1</a></li><li><a shape="rect" href="version-notes-2320.html">Version Notes 2.3.20</a></li><li><a shape="rect" href="version-notes-23163.html">Version Notes 2.3.16.3</a></li><li><a shape="rect" href="version-notes-23162.html">Version Notes 2.3.16.2</a></li><li><a shape="rect" href="version-notes-2316.html">Version Notes 2.3.16.1</a></li><li><a shape="rect" href="version-notes-2316.html">Version Notes 2.3.16</a></li><li><a shape="rect" href="version-notes-23153.html">Version Notes 2.3.15.3</a></li><li><a shape="rect" href="version-notes-23152.html">Version Notes 2.3.15.2</a></li><li><a shape="rect" href="version-notes-23151.html">Version Notes 2.3.15.1</a></ li><li><a shape="rect" href="version-notes-2315.html">Version Notes 2.3.15</a></li><li><a shape="rect" href="version-notes-23143.html">Version Notes 2.3.14.3</a></li><li><a shape="rect" href="version-notes-23142.html">Version Notes 2.3.14.2</a></li><li><a shape="rect" href="version-notes-23141.html">Version Notes 2.3.14.1</a></li><li><a shape="rect" href="version-notes-2314.html">Version Notes 2.3.14</a></li><li><a shape="rect" href="version-notes-23120.html">Version Notes 2.3.12.0</a></li><li><a shape="rect" href="version-notes-238.html">Version Notes 2.3.8</a></li><li><a shape="rect" href="version-notes-237.html">Version Notes 2.3.7</a></li><li><a shape="rect" href="version-notes-2341.html">Version Notes 2.3.4.1</a></li><li><a shape="rect" href="version-notes-234.html">Version Notes 2.3.4</a></li><li><a shape="rect" href="version-notes-233.html">Version Notes 2.3.3</a></li><li><a shape="rect" href="version-notes-2312.html">Version Notes 2.3.1.2</a></li><li><a shape="rect" href="ve rsion-notes-2311.html">Version Notes 2.3.1.1</a></li><li><a shape="rect" href="version-notes-231.html">Version Notes 2.3.1</a></li></ul><h3 id="MigrationGuide-VersionNotes2.2.x">Version Notes 2.2.x</h3><ul><li><a shape="rect" href="version-notes-2231.html">Version Notes 2.2.3.1</a></li><li><a shape="rect" href="version-notes-223.html">Version Notes 2.2.3</a></li><li><a shape="rect" href="version-notes-2211.html">Version Notes 2.2.1.1</a></li><li><a shape="rect" href="version-notes-221.html">Version Notes 2.2.1</a></li></ul><h3 id="MigrationGuide-VersionNotes2.1.x">Version Notes 2.1.x</h3><ul><li><a shape="rect" href="version-notes-2181.html">Version Notes 2.1.8.1</a></li><li><a shape="rect" href="version-notes-218.html">Version Notes 2.1.8</a></li><li><a shape="rect" href="version-notes-216.html">Version Notes 2.1.6</a></li><li><a shape="rect" href="version-notes-215.html">Version Notes 2.1.5</a></li><li><a shape="rect" href="version-notes-214.html">Version Notes 2.1.4</a></li><li>< a shape="rect" href="version-notes-213.html">Version Notes 2.1.3</a></li><li><a shape="rect" href="version-notes-212.html">Version Notes 2.1.2</a></li><li><a shape="rect" href="version-notes-211.html">Version Notes 2.1.1</a></li><li><a shape="rect" href="version-notes-210.html">Version Notes 2.1.0</a></li></ul><h3 id="MigrationGuide-ReleaseNotes2.0.x">Release Notes 2.0.x</h3><ul><li><a shape="rect" href="release-notes-2014.html">Release Notes 2.0.14</a></li><li><a shape="rect" href="release-notes-2013.html">Release Notes 2.0.13</a></li><li><a shape="rect" href="release-notes-2012.html">Release Notes 2.0.12</a></li><li><a shape="rect" href="release-notes-20112.html">Release Notes 2.0.11.2</a></li><li><a shape="rect" href="release-notes-20111.html">Release Notes 2.0.11.1</a></li><li><a shape="rect" href="release-notes-2011.html">Release Notes 2.0.11</a></li><li><a shape="rect" href="release-notes-2010.html">Release Notes 2.0.10</a></li><li><a shape="rect" href="release-notes-209.html" >Release Notes 2.0.9</a></li><li><a shape="rect" >href="release-notes-208.html">Release Notes 2.0.8</a></li><li><a shape="rect" >href="release-notes-207.html">Release Notes 2.0.7</a></li><li><a shape="rect" >href="release-notes-206.html">Release Notes 2.0.6</a></li><li><a shape="rect" >href="release-notes-205.html">Release Notes 2.0.5</a></li><li><a shape="rect" >href="release-notes-204.html">Release Notes 2.0.4</a></li><li><a shape="rect" >href="release-notes-203.html">Release Notes 2.0.3</a></li><li><a shape="rect" >href="release-notes-202.html">Release Notes 2.0.2</a></li><li><a shape="rect" >href="release-notes-201.html">Release Notes 2.0.1</a></li><li><a shape="rect" >href="release-notes-200.html">Release Notes 2.0.0</a></li></ul><h3 >id="MigrationGuide-Struts2.3toStruts2.5">Struts 2.3 to Struts 2.5</h3><div >class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" >rowspan="1" class="confluenceTh"><p><a shape="rect" >href="struts-23-to-25-migration.html">Struts 2.3 to 2 .5 migration</a></p></th><td colspan="1" rowspan="1" class="confluenceTd">Migration guide.</td></tr></tbody></table></div><h3 id="MigrationGuide-Struts1toStruts2">Struts 1 to Struts 2</h3><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p><a shape="rect" href="comparing-struts-1-and-2.html">Comparing Struts 1 and 2</a></p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>How are Struts 1 and Struts 2 alike? How are they different?</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p><a shape="rect" href="struts-1-solutions.html">Struts 1 Solutions</a></p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>Various issues (and hopefully their solutions!) encountered during migrations to Struts 2.</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p><a shape="rect" href="migration-strategies.html">Migration Strategies</a></p></th><td colspan="1" rowspan="1" class="confluenceTd "><p>Steps and overall strategies for migrating Struts 1 applications to Struts 2.</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p><a shape="rect" href="migration-tools.html">Migration Tools</a></p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>Development tools to help aid the migration process.</p></td></tr></tbody></table></div><h4 id="MigrationGuide-Tutorials">Tutorials</h4><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p><a shape="rect" class="external-link" href="http://www.infoq.com/news/migrating-struts2" rel="nofollow">Migrating Applications to Struts 2 </a></p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>A three-part series by Ian Roughley (Sep 2006)</p></td></tr></tbody></table></div><h4 id="MigrationGuide-Roadmap">Roadmap</h4><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p><a shape="rect" cla ss="external-link" href="http://struts.apache.org/roadmap.html#new">Roadmap FAQ</a></p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>What's in store for Struts 2?</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p><a shape="rect" class="external-link" href="http://www.oreillynet.com/onjava/blog/2006/10/my_history_of_struts_2.html" rel="nofollow">A History of Struts 2</a></p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>Don Brown's summary of events</p></td></tr></tbody></table></div><h3 id="MigrationGuide-Webwork2.2toStruts2">Webwork 2.2 to Struts 2</h3><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p><a shape="rect" href="key-changes-from-webwork-2.html">Key Changes From WebWork 2</a></p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>What has been removed or changed from WebWork 2.2 to Struts 2</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p><a shape="rect" href="webwork-2-migration-strategies.html">WebWork 2 Migration Strategies</a></p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>Steps and overall strategies for migrating WebWork 2 applications to Struts 2.</p></td></tr></tbody></table></div><h2 id="MigrationGuide-FAQs">FAQs</h2><ul><li><a shape="rect" href="where-do-we-get-the-latest-version-the-framework.html">Where do we get the latest version the framework</a>?</li><li><a shape="rect" href="what-are-some-of-the-frameworks-best-features.html">What are some of the framework's best features</a>?</li><li><a shape="rect" href="what-is-the-actioncontext.html">What is the ActionContext?</a></li></ul><h2 id="MigrationGuide-Next:">Next: <a shape="rect" href="contributors-guide.html">Contributors Guide</a></h2></div> + <div id="ConfluenceContent"><p>Getting here from there.</p><h3 id="MigrationGuide-VersionNotes2.5.x">Version Notes 2.5.x</h3><ul><li><a shape="rect" href="version-notes-257.html">Version Notes 2.5.7</a></li><li><a shape="rect" href="version-notes-255.html">Version Notes 2.5.5</a></li><li><a shape="rect" href="version-notes-252.html">Version Notes 2.5.2</a></li><li><a shape="rect" href="version-notes-251.html">Version Notes 2.5.1</a></li><li><a shape="rect" href="version-notes-25.html">Version Notes 2.5</a></li></ul><h3 id="MigrationGuide-VersionNotes2.3.x">Version Notes 2.3.x</h3><ul><li><a shape="rect" href="version-notes-2331.html">Version Notes 2.3.31</a></li><li><a shape="rect" href="version-notes-2330.html">Version Notes 2.3.30</a></li><li><a shape="rect" href="version-notes-2329.html">Version Notes 2.3.29</a></li><li><a shape="rect" href="version-notes-23281.html">Version Notes 2.3.28.1</a></li><li><a shape="rect" href="version-notes-2328.html">Version Notes 2.3.28 </a></li><li><a shape="rect" href="version-notes-23243.html">Version Notes 2.3.24.3</a></li><li><a shape="rect" href="version-notes-23241.html">Version Notes 2.3.24.1</a></li><li><a shape="rect" href="version-notes-2324.html">Version Notes 2.3.24</a></li><li><a shape="rect" href="version-notes-23203.html">Version Notes 2.3.20.3</a></li><li><a shape="rect" href="version-notes-23201.html">Version Notes 2.3.20.1</a></li><li><a shape="rect" href="version-notes-2320.html">Version Notes 2.3.20</a></li><li><a shape="rect" href="version-notes-23163.html">Version Notes 2.3.16.3</a></li><li><a shape="rect" href="version-notes-23162.html">Version Notes 2.3.16.2</a></li><li><a shape="rect" href="version-notes-2316.html">Version Notes 2.3.16.1</a></li><li><a shape="rect" href="version-notes-2316.html">Version Notes 2.3.16</a></li><li><a shape="rect" href="version-notes-23153.html">Version Notes 2.3.15.3</a></li><li><a shape="rect" href="version-notes-23152.html">Version Notes 2.3.15.2</a></li><l i><a shape="rect" href="version-notes-23151.html">Version Notes 2.3.15.1</a></li><li><a shape="rect" href="version-notes-2315.html">Version Notes 2.3.15</a></li><li><a shape="rect" href="version-notes-23143.html">Version Notes 2.3.14.3</a></li><li><a shape="rect" href="version-notes-23142.html">Version Notes 2.3.14.2</a></li><li><a shape="rect" href="version-notes-23141.html">Version Notes 2.3.14.1</a></li><li><a shape="rect" href="version-notes-2314.html">Version Notes 2.3.14</a></li><li><a shape="rect" href="version-notes-23120.html">Version Notes 2.3.12.0</a></li><li><a shape="rect" href="version-notes-238.html">Version Notes 2.3.8</a></li><li><a shape="rect" href="version-notes-237.html">Version Notes 2.3.7</a></li><li><a shape="rect" href="version-notes-2341.html">Version Notes 2.3.4.1</a></li><li><a shape="rect" href="version-notes-234.html">Version Notes 2.3.4</a></li><li><a shape="rect" href="version-notes-233.html">Version Notes 2.3.3</a></li><li><a shape="rect" href="versi on-notes-2312.html">Version Notes 2.3.1.2</a></li><li><a shape="rect" href="version-notes-2311.html">Version Notes 2.3.1.1</a></li><li><a shape="rect" href="version-notes-231.html">Version Notes 2.3.1</a></li></ul><h3 id="MigrationGuide-VersionNotes2.2.x">Version Notes 2.2.x</h3><ul><li><a shape="rect" href="version-notes-2231.html">Version Notes 2.2.3.1</a></li><li><a shape="rect" href="version-notes-223.html">Version Notes 2.2.3</a></li><li><a shape="rect" href="version-notes-2211.html">Version Notes 2.2.1.1</a></li><li><a shape="rect" href="version-notes-221.html">Version Notes 2.2.1</a></li></ul><h3 id="MigrationGuide-VersionNotes2.1.x">Version Notes 2.1.x</h3><ul><li><a shape="rect" href="version-notes-2181.html">Version Notes 2.1.8.1</a></li><li><a shape="rect" href="version-notes-218.html">Version Notes 2.1.8</a></li><li><a shape="rect" href="version-notes-216.html">Version Notes 2.1.6</a></li><li><a shape="rect" href="version-notes-215.html">Version Notes 2.1.5</a></li><li>< a shape="rect" href="version-notes-214.html">Version Notes 2.1.4</a></li><li><a shape="rect" href="version-notes-213.html">Version Notes 2.1.3</a></li><li><a shape="rect" href="version-notes-212.html">Version Notes 2.1.2</a></li><li><a shape="rect" href="version-notes-211.html">Version Notes 2.1.1</a></li><li><a shape="rect" href="version-notes-210.html">Version Notes 2.1.0</a></li></ul><h3 id="MigrationGuide-ReleaseNotes2.0.x">Release Notes 2.0.x</h3><ul><li><a shape="rect" href="release-notes-2014.html">Release Notes 2.0.14</a></li><li><a shape="rect" href="release-notes-2013.html">Release Notes 2.0.13</a></li><li><a shape="rect" href="release-notes-2012.html">Release Notes 2.0.12</a></li><li><a shape="rect" href="release-notes-20112.html">Release Notes 2.0.11.2</a></li><li><a shape="rect" href="release-notes-20111.html">Release Notes 2.0.11.1</a></li><li><a shape="rect" href="release-notes-2011.html">Release Notes 2.0.11</a></li><li><a shape="rect" href="release-notes-2010.html"> Release Notes 2.0.10</a></li><li><a shape="rect" href="release-notes-209.html">Release Notes 2.0.9</a></li><li><a shape="rect" href="release-notes-208.html">Release Notes 2.0.8</a></li><li><a shape="rect" href="release-notes-207.html">Release Notes 2.0.7</a></li><li><a shape="rect" href="release-notes-206.html">Release Notes 2.0.6</a></li><li><a shape="rect" href="release-notes-205.html">Release Notes 2.0.5</a></li><li><a shape="rect" href="release-notes-204.html">Release Notes 2.0.4</a></li><li><a shape="rect" href="release-notes-203.html">Release Notes 2.0.3</a></li><li><a shape="rect" href="release-notes-202.html">Release Notes 2.0.2</a></li><li><a shape="rect" href="release-notes-201.html">Release Notes 2.0.1</a></li><li><a shape="rect" href="release-notes-200.html">Release Notes 2.0.0</a></li></ul><h3 id="MigrationGuide-Struts2.3toStruts2.5">Struts 2.3 to Struts 2.5</h3><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluen ceTh"><p><a shape="rect" href="struts-23-to-25-migration.html">Struts 2.3 to 2.5 migration</a></p></th><td colspan="1" rowspan="1" class="confluenceTd">Migration guide.</td></tr></tbody></table></div><h3 id="MigrationGuide-Struts1toStruts2">Struts 1 to Struts 2</h3><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p><a shape="rect" href="comparing-struts-1-and-2.html">Comparing Struts 1 and 2</a></p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>How are Struts 1 and Struts 2 alike? How are they different?</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p><a shape="rect" href="struts-1-solutions.html">Struts 1 Solutions</a></p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>Various issues (and hopefully their solutions!) encountered during migrations to Struts 2.</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p><a shape="rect" href="migration-strategies.html">Mi gration Strategies</a></p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>Steps and overall strategies for migrating Struts 1 applications to Struts 2.</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p><a shape="rect" href="migration-tools.html">Migration Tools</a></p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>Development tools to help aid the migration process.</p></td></tr></tbody></table></div><h4 id="MigrationGuide-Tutorials">Tutorials</h4><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p><a shape="rect" class="external-link" href="http://www.infoq.com/news/migrating-struts2" rel="nofollow">Migrating Applications to Struts 2 </a></p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>A three-part series by Ian Roughley (Sep 2006)</p></td></tr></tbody></table></div><h4 id="MigrationGuide-Roadmap">Roadmap</h4><div class="table-wrap"><table class="confluenceTable"><tbo dy><tr><th colspan="1" rowspan="1" class="confluenceTh"><p><a shape="rect" class="external-link" href="http://struts.apache.org/roadmap.html#new">Roadmap FAQ</a></p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>What's in store for Struts 2?</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p><a shape="rect" class="external-link" href="http://www.oreillynet.com/onjava/blog/2006/10/my_history_of_struts_2.html" rel="nofollow">A History of Struts 2</a></p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>Don Brown's summary of events</p></td></tr></tbody></table></div><h3 id="MigrationGuide-Webwork2.2toStruts2">Webwork 2.2 to Struts 2</h3><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p><a shape="rect" href="key-changes-from-webwork-2.html">Key Changes From WebWork 2</a></p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>What has been removed or changed from WebWork 2.2 to St ruts 2</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p><a shape="rect" href="webwork-2-migration-strategies.html">WebWork 2 Migration Strategies</a></p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>Steps and overall strategies for migrating WebWork 2 applications to Struts 2.</p></td></tr></tbody></table></div><h2 id="MigrationGuide-FAQs">FAQs</h2><ul><li><a shape="rect" href="where-do-we-get-the-latest-version-the-framework.html">Where do we get the latest version the framework</a>?</li><li><a shape="rect" href="what-are-some-of-the-frameworks-best-features.html">What are some of the framework's best features</a>?</li><li><a shape="rect" href="what-is-the-actioncontext.html">What is the ActionContext?</a></li></ul><h2 id="MigrationGuide-Next:">Next: <a shape="rect" href="contributors-guide.html">Contributors Guide</a></h2></div> </div> <div class="tabletitle"> @@ -140,6 +140,9 @@ under the License. <span class="smalltext">(Apache Struts 2 Documentation)</span> <br> $page.link($child) + <span class="smalltext">(Apache Struts 2 Documentation)</span> + <br> + $page.link($child) <span class="smalltext">(Apache Struts 2 Documentation)</span> <br> $page.link($child) Modified: websites/production/struts/content/docs/optiontransferselect.html ============================================================================== --- websites/production/struts/content/docs/optiontransferselect.html (original) +++ websites/production/struts/content/docs/optiontransferselect.html Fri Dec 2 07:17:46 2016 @@ -143,7 +143,7 @@ under the License. <div class="confluence-information-macro confluence-information-macro-note"><p class="title">Important</p><span class="aui-icon aui-icon-small aui-iconfont-warning confluence-information-macro-icon"></span><div class="confluence-information-macro-body"> <p></p><p> Note that the doublelistkey and doublelistvalue attribute will default to "key" and "value" -respectively only when the doublelist attribute is evaluated to a Map or its decendant. +respectively only when the doublelist attribute is evaluated to a Map or its descendant. Other thing else, will result in doublelistkey and doublelistvalue to be null and not used. </p> </div></div> Modified: websites/production/struts/content/docs/param.html ============================================================================== --- websites/production/struts/content/docs/param.html (original) +++ websites/production/struts/content/docs/param.html Fri Dec 2 07:17:46 2016 @@ -157,7 +157,7 @@ this class (e.g. The TextTag does this). <p></p><p> This tag has the following two paramters. </p> -<ul><li>name (String) - the name of the parameter</li><li>value (Object) - the value of the parameter</li><li>suppressEmptyParameters (boolean) - whether to suppress empty parameters</li></ul> +<ul><li>name (String) - the name of the parameter</li><li>value (Object) - the value of the parameter</li><li>suppressEmptyParameters (boolean) - whether to suppress this parameter if empty</li></ul> <p> <b>Note:</b> When you declare the param tag, the value can be defined in either a <tt>value</tt> attribute or @@ -191,13 +191,11 @@ Whether to suppress empty parameters: </p> <pre> -<s:a action="eventAdd" accesskey="a"> - <s:text name="title.heading.eventadd" /> +<s:url action="eventAdd"> <s:param name="bean.searchString" value="%{bean.searchString}" /> <s:param name="bean.filter" value="%{bean.filter}" /> - <s:param name="bean.pageNum" value="%{pager.pageNumber}" /> - <s:param name="suppressEmptyParameters" value="true"/> -</s:a> + <s:param name="bean.pageNum" value="%{pager.pageNumber}" suppressEmptyParameters="true" /> +</s:url> </pre> ]]></script> </div></div> Modified: websites/production/struts/content/docs/plugins.html ============================================================================== --- websites/production/struts/content/docs/plugins.html (original) +++ websites/production/struts/content/docs/plugins.html Fri Dec 2 07:17:46 2016 @@ -187,8 +187,8 @@ under the License. */ --> <!DOCTYPE struts PUBLIC - "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" - "http://struts.apache.org/dtds/struts-2.3.dtd"> + "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" + "http://struts.apache.org/dtds/struts-2.5.dtd"> <struts> <bean class="org.apache.struts2.sitemesh.FreemarkerPageFilter" static="true" optional="true"/> Modified: websites/production/struts/content/docs/radio.html ============================================================================== --- websites/production/struts/content/docs/radio.html (original) +++ websites/production/struts/content/docs/radio.html Fri Dec 2 07:17:46 2016 @@ -142,7 +142,7 @@ under the License. <div class="confluence-information-macro confluence-information-macro-note"><p class="title">Important</p><span class="aui-icon aui-icon-small aui-iconfont-warning confluence-information-macro-icon"></span><div class="confluence-information-macro-body"> <p></p><p> Note that the listkey and listvalue attribute will default to "key" and "value" -respectively only when the list attribute is evaluated to a Map or its decendant. +respectively only when the list attribute is evaluated to a Map or its descendant. Everything else will result in listkey and listvalue to be null and not used. </p></div></div> Added: websites/production/struts/content/docs/s2-044.html ============================================================================== --- websites/production/struts/content/docs/s2-044.html (added) +++ websites/production/struts/content/docs/s2-044.html Fri Dec 2 07:17:46 2016 @@ -0,0 +1,155 @@ +<!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> + <link href='https://struts.apache.org/highlighter/style/shCoreStruts.css' rel='stylesheet' type='text/css' /> + <link href='https://struts.apache.org/highlighter/style/shThemeStruts.css' rel='stylesheet' type='text/css' /> + <script src='https://struts.apache.org/highlighter/js/shCore.js' type='text/javascript'></script> + <script src='https://struts.apache.org/highlighter/js/shBrushPlain.js' type='text/javascript'></script> + <script src='https://struts.apache.org/highlighter/js/shBrushXml.js' type='text/javascript'></script> + <script src='https://struts.apache.org/highlighter/js/shBrushJava.js' type='text/javascript'></script> + <script src='https://struts.apache.org/highlighter/js/shBrushJScript.js' type='text/javascript'></script> + <script src='https://struts.apache.org/highlighter/js/shBrushGroovy.js' type='text/javascript'></script> + <script src='https://struts.apache.org/highlighter/js/shBrushBash.js' type='text/javascript'></script> + <script type="text/javascript"> + SyntaxHighlighter.defaults['toolbar'] = false; + SyntaxHighlighter.all(); + </script> + <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-044</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-044.html">S2-044</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-044</div> + + <div class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> + <a href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=66853803"> + <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=66853803">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=66853803"> + <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=66853803">Add Page</a> + + <a href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=WW&fromPageId=66853803"> + <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=66853803">Add News</a> + </div> + </div> + + <div class="pagecontent"> + <div class="wiki-content"> + <div id="ConfluenceContent"><h2 id="S2-044-Summary">Summary</h2>Possible DoS attack when using <code>URLValidator</code><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Who should read this</p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>All Struts 2 developers and users</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Impact of vulnerability</p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>Possible DoS attack when using URLValidator</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>Upgrade to <a shape="rect" href="version-notes-257.html">Struts 2.5.7</a></p></td></tr><tr><th colspan="1" rowspan="1" class="confluen ceTh"><p>Affected Software</p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>Struts 2.5 -<span style="color: rgb(23,35,59);"> Struts 2.5.5</span></p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Reporter</p></th><td colspan="1" rowspan="1" class="confluenceTd"><p><span class="Apple-tab-span"> </span>Jonathan Bullock <jonbullock at gmail dot com></p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>CVE Identifier</p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>CVE-2016-8738</p></td></tr></tbody></table></div><h2 id="S2-044-Problem">Problem</h2><p>If an application allows enter an URL in a form field and built-in <code>URLValidator</code> is used, it is possible to prepare a special URL which will be used to overload server process when performing validation of the URL.</p><h2 id="S2-044-Solution">Solution</h2><p>Upgrade to Apache Struts version 2.5.7.</p><h2 id="S2-044-Backwardcompatibility">Backward compatibil ity</h2><p>No backward incompatibility issues are expected.</p><h2 id="S2-044-Workaround">Workaround</h2><p>Trim passed value before assigning it to a field, e.g.</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 String setUserUrl(String userUrl) { + this.userUrl = userUrl.trim(); +}</pre> +</div></div></div> + </div> + + + </div> +</div> +<div class="footer"> + Generated by CXF SiteExporter +</div> +</body> +</html>