Author: lukaszlenart Date: Wed May 10 06:35:13 2017 New Revision: 1011991 Log: Updates production
Added: websites/production/struts/content/docs/noop-interceptor.html Modified: websites/production/struts/content/docs/freemarker-result.html websites/production/struts/content/docs/interceptors.html websites/production/struts/content/docs/s2-028.html websites/production/struts/content/docs/spring-plugin.html Modified: websites/production/struts/content/docs/freemarker-result.html ============================================================================== --- websites/production/struts/content/docs/freemarker-result.html (original) +++ websites/production/struts/content/docs/freemarker-result.html Wed May 10 06:35:13 2017 @@ -139,38 +139,9 @@ under the License. <div class="pagecontent"> <div class="wiki-content"> - <div id="ConfluenceContent"> - -<p>Renders a view using the Freemarker template engine. -</p><p> -The FreemarkarManager class configures the template loaders so that the -template location can be either -</p> - -<p></p><ul></ul><p></p><ul><li>relative to the web root folder. eg <code>/WEB-INF/views/home.ftl</code> -</li></ul><p></p><ul><li>a classpath resuorce. eg <code>/com/company/web/views/home.ftl</code></li></ul><p></p> - - -<p>Also see <a shape="rect" href="freemarker-support.html">Freemarker Support</a>.</p> - -<h2 id="FreeMarkerResult-Parameters">Parameters</h2> - - -<p></p><ul></ul><p></p><ul><li><b>location (default)</b> - the location of the template to process.</li></ul><p></p><ul><li><b>parse</b> - true by default. If set to false, the location param will -not be parsed for Ognl expressions.</li></ul><p></p><ul><li><b>contentType</b> - defaults to "text/html" unless specified.</li></ul><p></p><ul><li><b>writeIfCompleted</b> - false by default, write to stream only if there isn't any error -processing the template. Setting template_exception_handler=rethrow in freemarker.properties -will have the same effect.</li></ul><p></p> - - -<h2 id="FreeMarkerResult-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[ - -<result name="success" type="freemarker">foo.ftl</result> - -]]></script> -</div></div></div> + <div id="ConfluenceContent"><p>Renders a view using the Freemarker template engine. The <code>FreemarkarManager</code> class configures the template loaders so that the template location can be either</p><ul style="list-style-type: square;"><li>relative to the web root folder, e.g.: <code>/WEB-INF/views/home.ftl</code></li><li>a classpath resource, e.g.: <code>/com/company/web/views/home.ftl</code></li></ul><p> </p><p>Also see <a shape="rect" href="freemarker-support.html">Freemarker Support</a>.</p><h2 id="FreeMarkerResult-Parameters">Parameters</h2><ul style="list-style-type: square;"><li><strong>location</strong> (default) - the location of the template to process.</li><li><strong>parse </strong>- true by default. If set to false, the location param will not be parsed for expressions.</li><li><strong>contentType</strong> - defaults to <code>text/html</code> unless specified.</li><li><strong>writeIfCompleted</strong> - <code>false</co de> by default, write to stream only if there isn't any error processing the template. Setting <code>template_exception_handler=rethrow</code> in <code>freemarker.properties</code> will have the same effect.</li></ul><h2 id="FreeMarkerResult-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;"><result name="success" type="freemarker">foo.ftl</result></pre> +</div></div><p> </p><p> </p></div> </div> <div class="tabletitle"> Modified: websites/production/struts/content/docs/interceptors.html ============================================================================== --- websites/production/struts/content/docs/interceptors.html (original) +++ websites/production/struts/content/docs/interceptors.html Wed May 10 06:35:13 2017 @@ -140,11 +140,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.rbtoc1492969959447 {padding: 0px;} -div.rbtoc1492969959447 ul {list-style: disc;margin-left: 0px;} -div.rbtoc1492969959447 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1494398043379 {padding: 0px;} +div.rbtoc1494398043379 ul {list-style: disc;margin-left: 0px;} +div.rbtoc1494398043379 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></p><div class="toc-macro rbtoc1492969959447"> +/*]]>*/</style></p><div class="toc-macro rbtoc1494398043379"> <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> @@ -425,6 +425,12 @@ div.rbtoc1492969959447 li {margin-left: <interceptor name="roles" class="org.apache.struts2.interceptor.RolesInterceptor" /> <interceptor name="annotationWorkflow" class="com.opensymphony.xwork2.interceptor.annotations.AnnotationWorkflowInterceptor" /> <interceptor name="multiselect" class="org.apache.struts2.interceptor.MultiselectInterceptor" /> + <interceptor name="noop" class="org.apache.struts2.interceptor.NoOpInterceptor" /> + + <!-- Empty stack - performs no operations --> + <interceptor-stack name="emptyStack"> + <interceptor-ref name="noop"/> + </interceptor-stack> <!-- Basic stack --> <interceptor-stack name="basicStack"> @@ -575,7 +581,7 @@ div.rbtoc1492969959447 li {margin-left: </struts> ]]></script> -</div></div>Since the <code>struts-default.xml</code> is included in the application's configuration by default, all of the predefined interceptors and stacks are available "out of the box".<h2 id="Interceptors-FrameworkInterceptors">Framework Interceptors</h2><p>Interceptor classes are also defined using a key-value pair specified in the Struts configuration file. The names specified below come specified in <a shape="rect" href="struts-defaultxml.html">struts-default.xml</a>. If you extend the <code>struts-default</code> package, then you can use the names below. Otherwise, they must be defined in your package with a name-class pair specified in the <interceptors> tag.</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Interceptor</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Name</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" rowspan=" 1" class="confluenceTd"><p><a shape="rect" href="alias-interceptor.html">Alias Interceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>alias</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Converts similar parameters that may be named differently between requests.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="chaining-interceptor.html">Chaining Interceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>chain</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Makes the previous Action's properties available to the current Action. Commonly used together with <result type="chain"> (in the previous Action).</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="checkbox-interceptor.html">Checkbox Interceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>checkbox</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Adds automatic checkbox handling code that detect an unchecked checkbox and add it as a parameter with a default (usually 'false') value. Uses a specially named hidden field to detect unsubmitted checkboxes. The default unchecked value is overridable for non-boolean value'd checkboxes.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="cookie-interceptor.html">Cookie Interceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>cookie</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Inject cookie with a certain configurable name / value into action. (Since 2.0.7.)</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="cookieprovider-interceptor.html">CookieProvider Interceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>cookieProvider</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Transfer cookies from action to response (Since 2.3.15.)</p></td></tr><tr><t d colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="conversion-error-interceptor.html">Conversion Error Interceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>conversionError</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Adds conversion errors from the ActionContext to the Action's field errors</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="create-session-interceptor.html">Create Session Interceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>createSession</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Create an HttpSession automatically, useful with certain Interceptors that require a HttpSession to work properly (like the TokenInterceptor)</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="debugginginterceptor.html">DebuggingInterceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>debugging</p ></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Provides several >different debugging screens to provide insight into the data behind the >page.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a >shape="rect" href="execute-and-wait-interceptor.html">Execute and Wait >Interceptor</a></p></td><td colspan="1" rowspan="1" >class="confluenceTd"><p>execAndWait</p></td><td colspan="1" rowspan="1" >class="confluenceTd"><p>Executes the Action in the background and then sends >the user off to an intermediate waiting page.</p></td></tr><tr><td >colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" >href="exception-interceptor.html">Exception Interceptor</a></p></td><td >colspan="1" rowspan="1" class="confluenceTd"><p>exception</p></td><td >colspan="1" rowspan="1" class="confluenceTd"><p>Maps exceptions to a >result.</p></td></tr><tr><td colspan="1" rowspan="1" >class="confluenceTd"><p><a shape="rect" >href="file-upload-interceptor.html">File Upload Interceptor</a></ p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>fileUpload</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>An Interceptor that adds easy access to file upload support.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="i18n-interceptor.html">I18n Interceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>i18n</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Remembers the locale selected for a user's session.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="logger-interceptor.html">Logger Interceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>logger</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Outputs the name of the Action.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="message-store-interceptor.html">Message Store Interceptor</a></p></td><td colspan="1" rowspan="1" class=" confluenceTd"><p>store</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Store and retrieve action messages / errors / field errors for action that implements ValidationAware interface into session.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="model-driven-interceptor.html">Model Driven Interceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>modelDriven</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>If the Action implements ModelDriven, pushes the <code>getModel</code> Result onto the Value Stack.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="scoped-model-driven-interceptor.html">Scoped Model Driven Interceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>scopedModelDriven</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>If the Action implements ScopedModelDriven, the interceptor retrieves and stores the model from a scop e and sets it on the action calling <code>setModel</code>.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="parameters-interceptor.html">Parameters Interceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>params</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Sets the request parameters onto the Action.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="prepare-interceptor.html">Prepare Interceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>prepare</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>If the Action implements Preparable, calls its <code>prepare</code> method.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="scope-interceptor.html">Scope Interceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>scope</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Simple mech anism for storing Action state in the session or application scope.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="servlet-config-interceptor.html">Servlet Config Interceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>servletConfig</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Provide access to Maps representing HttpServletRequest and HttpServletResponse.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="static-parameters-interceptor.html">Static Parameters Interceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>staticParams</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Sets the <code>struts.xml</code> defined parameters onto the action. These are the <param> tags that are direct children of the <action> tag.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="roles-interceptor.htm l">Roles Interceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>roles</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Action will only be executed if the user has the correct JAAS role.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="timer-interceptor.html">Timer Interceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>timer</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Outputs how long the Action takes to execute (including nested Interceptors and View)</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="token-interceptor.html">Token Interceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>token</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Checks for valid token presence in Action, prevents duplicate form submission.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" hr ef="token-session-interceptor.html">Token Session Interceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>tokenSession</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Same as Token Interceptor, but stores the submitted data in session when handed an invalid token</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="validation-interceptor.html">Validation Interceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>validation</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Performs validation using the validators defined in <em>action</em>-validation.xml</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="default-workflow-interceptor.html">Default Workflow Interceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>workflow</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Calls the <code>validate</code> method in your Actio n class. If Action errors are created then it returns the <code>INPUT</code> view.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="parameter-filter-interceptor.html">Parameter Filter Interceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>N/A</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Removes parameters from the list of those available to Actions</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="profiling-interceptor.html">Profiling Interceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>profiling</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Activate profiling through parameter</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="multiselect-interceptor.html">Multiselect Interceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>multiselect</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Like the checkbox interceptor detects that no value was selected for a field with multiple values (like a select) and adds an empty parameter</p></td></tr></tbody></table></div><div class="confluence-information-macro confluence-information-macro-warning"><span class="aui-icon aui-icon-small aui-iconfont-error confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>Since 2.0.7, Interceptors and Results with hyphenated names were converted to camelCase. (The former model-driven is now modelDriven.) The original hyphenated names are retained as "aliases" until Struts 2.1.0. For clarity, the hyphenated versions are not listed here, but might be referenced in prior versions of the documentation.</p></div></div><h3 id="Interceptors-MethodFiltering">Method Filtering</h3><p> +</div></div>Since the <code>struts-default.xml</code> is included in the application's configuration by default, all of the predefined interceptors and stacks are available "out of the box".<h2 id="Interceptors-FrameworkInterceptors">Framework Interceptors</h2><p>Interceptor classes are also defined using a key-value pair specified in the Struts configuration file. The names specified below come specified in <a shape="rect" href="struts-defaultxml.html">struts-default.xml</a>. If you extend the <code>struts-default</code> package, then you can use the names below. Otherwise, they must be defined in your package with a name-class pair specified in the <interceptors> tag.</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Interceptor</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Name</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" rowspan=" 1" class="confluenceTd"><p><a shape="rect" href="alias-interceptor.html">Alias Interceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>alias</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Converts similar parameters that may be named differently between requests.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="chaining-interceptor.html">Chaining Interceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>chain</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Makes the previous Action's properties available to the current Action. Commonly used together with <result type="chain"> (in the previous Action).</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="checkbox-interceptor.html">Checkbox Interceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>checkbox</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Adds automatic checkbox handling code that detect an unchecked checkbox and add it as a parameter with a default (usually 'false') value. Uses a specially named hidden field to detect unsubmitted checkboxes. The default unchecked value is overridable for non-boolean value'd checkboxes.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="cookie-interceptor.html">Cookie Interceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>cookie</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Inject cookie with a certain configurable name / value into action. (Since 2.0.7.)</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="cookieprovider-interceptor.html">CookieProvider Interceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>cookieProvider</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Transfer cookies from action to response (Since 2.3.15.)</p></td></tr><tr><t d colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="conversion-error-interceptor.html">Conversion Error Interceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>conversionError</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Adds conversion errors from the ActionContext to the Action's field errors</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="create-session-interceptor.html">Create Session Interceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>createSession</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Create an HttpSession automatically, useful with certain Interceptors that require a HttpSession to work properly (like the TokenInterceptor)</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="debugginginterceptor.html">DebuggingInterceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>debugging</p ></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Provides several >different debugging screens to provide insight into the data behind the >page.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a >shape="rect" href="execute-and-wait-interceptor.html">Execute and Wait >Interceptor</a></p></td><td colspan="1" rowspan="1" >class="confluenceTd"><p>execAndWait</p></td><td colspan="1" rowspan="1" >class="confluenceTd"><p>Executes the Action in the background and then sends >the user off to an intermediate waiting page.</p></td></tr><tr><td >colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" >href="exception-interceptor.html">Exception Interceptor</a></p></td><td >colspan="1" rowspan="1" class="confluenceTd"><p>exception</p></td><td >colspan="1" rowspan="1" class="confluenceTd"><p>Maps exceptions to a >result.</p></td></tr><tr><td colspan="1" rowspan="1" >class="confluenceTd"><p><a shape="rect" >href="file-upload-interceptor.html">File Upload Interceptor</a></ p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>fileUpload</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>An Interceptor that adds easy access to file upload support.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="i18n-interceptor.html">I18n Interceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>i18n</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Remembers the locale selected for a user's session.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="logger-interceptor.html">Logger Interceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>logger</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Outputs the name of the Action.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="message-store-interceptor.html">Message Store Interceptor</a></p></td><td colspan="1" rowspan="1" class=" confluenceTd"><p>store</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Store and retrieve action messages / errors / field errors for action that implements ValidationAware interface into session.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="model-driven-interceptor.html">Model Driven Interceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>modelDriven</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>If the Action implements ModelDriven, pushes the <code>getModel</code> Result onto the Value Stack.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="scoped-model-driven-interceptor.html">Scoped Model Driven Interceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>scopedModelDriven</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>If the Action implements ScopedModelDriven, the interceptor retrieves and stores the model from a scop e and sets it on the action calling <code>setModel</code>.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="parameters-interceptor.html">Parameters Interceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>params</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Sets the request parameters onto the Action.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="prepare-interceptor.html">Prepare Interceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>prepare</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>If the Action implements Preparable, calls its <code>prepare</code> method.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="scope-interceptor.html">Scope Interceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>scope</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Simple mech anism for storing Action state in the session or application scope.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="servlet-config-interceptor.html">Servlet Config Interceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>servletConfig</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Provide access to Maps representing HttpServletRequest and HttpServletResponse.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="static-parameters-interceptor.html">Static Parameters Interceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>staticParams</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Sets the <code>struts.xml</code> defined parameters onto the action. These are the <param> tags that are direct children of the <action> tag.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="roles-interceptor.htm l">Roles Interceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>roles</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Action will only be executed if the user has the correct JAAS role.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="timer-interceptor.html">Timer Interceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>timer</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Outputs how long the Action takes to execute (including nested Interceptors and View)</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="token-interceptor.html">Token Interceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>token</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Checks for valid token presence in Action, prevents duplicate form submission.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" hr ef="token-session-interceptor.html">Token Session Interceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>tokenSession</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Same as Token Interceptor, but stores the submitted data in session when handed an invalid token</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="validation-interceptor.html">Validation Interceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>validation</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Performs validation using the validators defined in <em>action</em>-validation.xml</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="default-workflow-interceptor.html">Default Workflow Interceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>workflow</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Calls the <code>validate</code> method in your Actio n class. If Action errors are created then it returns the <code>INPUT</code> view.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="parameter-filter-interceptor.html">Parameter Filter Interceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>N/A</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Removes parameters from the list of those available to Actions</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="profiling-interceptor.html">Profiling Interceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>profiling</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Activate profiling through parameter</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="multiselect-interceptor.html">Multiselect Interceptor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>multiselect</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Like the checkbox interceptor detects that no value was selected for a field with multiple values (like a select) and adds an empty parameter</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><a shape="rect" href="noop-interceptor.html">NoOp Interceptor</a></td><td colspan="1" rowspan="1" class="confluenceTd">noop</td><td colspan="1" rowspan="1" class="confluenceTd">Does nothing, just passes invocation further, used in empty stack</td></tr></tbody></table></div><div class="confluence-information-macro confluence-information-macro-warning"><span class="aui-icon aui-icon-small aui-iconfont-error confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>Since 2.0.7, Interceptors and Results with hyphenated names were converted to camelCase. (The former model-driven is now modelDriven.) The original hyphenated names are retained as "aliases" until Struts 2.1.0. For clarity, the hyphenated versions are not listed here, but might be referenced in prior versions of the documentation.</p></div></div><h3 id="Interceptors-MethodFiltering">Method Filtering</h3><p> </p><p></p><p> MethodFilterInterceptor is an abstract <code>Interceptor</code> used as a base class for interceptors that will filter execution based on method @@ -716,6 +722,9 @@ thisWillRunFirstInterceptor <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) Added: websites/production/struts/content/docs/noop-interceptor.html ============================================================================== --- websites/production/struts/content/docs/noop-interceptor.html (added) +++ websites/production/struts/content/docs/noop-interceptor.html Wed May 10 06:35:13 2017 @@ -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>NoOp Interceptor</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="guides.html">Guides</a> > <a href="core-developers-guide.html">Core Developers Guide</a> > <a href="interceptors.html">Interceptors</a> > <a href="noop-interceptor.html">NoOp Interceptor</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">NoOp Interceptor</div> + + <div class="greynavbar" align="right" style="padding: 2px 10px; margin: 0px;"> + <a href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=69407923"> + <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=69407923">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=69407923"> + <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=69407923">Add Page</a> + + <a href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=WW&fromPageId=69407923"> + <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=69407923">Add News</a> + </div> + </div> + + <div class="pagecontent"> + <div class="wiki-content"> + <div id="ConfluenceContent"><p><code>org.apache.struts2.interceptor.NoOpInterceptor</code> is in the <code>emptyStack</code> and it performs no computation, it is there to allow create an empty stack that can be used with actions that do not required receiving request parameters or are fully stateless, i.e. when producing a JSON response on public endpoints.</p></div> + </div> + + + </div> +</div> +<div class="footer"> + Generated by CXF SiteExporter +</div> +</body> +</html> Modified: websites/production/struts/content/docs/s2-028.html ============================================================================== --- websites/production/struts/content/docs/s2-028.html (original) +++ websites/production/struts/content/docs/s2-028.html Wed May 10 06:35:13 2017 @@ -125,7 +125,7 @@ under the License. <div class="pagecontent"> <div class="wiki-content"> - <div id="ConfluenceContent"><h2 id="S2-028-Summary">Summary</h2>Use of a JRE with broken URLDecoder implementation may lead to XSS vulnerability in Struts 2 based web applications.<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>Affects of a cross-site scripting vulnerability.</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>Important</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Recommendation</p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>Upgrade runtime JRE to a recent major version, preferably 1.8. Alternatively upgrade to <a shape="rect" href="version-notes-2328.html">Struts 2.3.28</a></p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Affected Software</p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>Struts 2.0.0 - Struts <span style="color: rgb(23,35,59);">Struts 2.3.24.1</span></p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Reporter</p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>WhiteHat Security (<a shape="rect" class="external-link" href="http://whitehatsec.com" rel="nofollow">whitehatsec.com</a>)</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-028-Problem">Problem</h2><p>When using a single byte page encoding such as ISO-8895-1, an attacker might submit a non-spec URL-encoded parameter value including multi-byte characters. </p><p>Struts 2 used the standard JRE URLDecoder to decode parameter values. <span>Especially JRE 1.5's URLDecoder implementation seems to be broken to the point that this non-spec encoding isn't rejected / filtered. In later JREs the issue was fixed, best known solution is found in JRE 1.8.</span></p><h2 id="S2-028-Solution">Solution</h2><p>Upgrade runtime JRE/JDK, preferably to the most recent 1.8 version.</p><p>Alternatively <span style="line-height: 1.42857;">upgrade to Struts 2.3.28, which includes and uses a safe URLDecoder implementation from Apache Tomcat</span></p><h2 id="S2-028-Backwardcompatibility">Backward compatibility</h2><p>No issues expected when upgrading to Struts 2.3.28</p><h2 id="S2-028-Workaround">Workaround</h2><p>Use UTF-8 for page and parameter encoding.</p><h2 id="S2-028-FurtherReference">Further Reference</h2><p><style> + <div id="ConfluenceContent"><h2 id="S2-028-Summary">Summary</h2>Use of a JRE with broken URLDecoder implementation may lead to XSS vulnerability in Struts 2 based web applications.<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>Affects of a cross-site scripting vulnerability.</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>Important</p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Recommendation</p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>Upgrade runtime JRE to a recent major version, preferably 1.8. Alternatively upgrade to <a shape="rect" href="version-notes-2328.html">Struts 2.3.28</a></p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Affected Software</p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>Struts 2.0.0 - Struts <span style="color: rgb(23,35,59);">Struts 2.3.24.1</span></p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Reporter</p></th><td colspan="1" rowspan="1" class="confluenceTd"><p>WhiteHat Security (<a shape="rect" class="external-link" href="http://whitehatsec.com" rel="nofollow">whitehatsec.com</a>)</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-0759</p></td></tr></tbody></table></div><h2 id="S2-028-Problem">Problem</h2><p>When using a single byte page encoding such as ISO-8895-1, an attacker might submit a non-spec URL-encoded parameter value including multi-byte characters.</p><p>Struts 2 used the standa rd JRE URLDecoder to decode parameter values. <span>Especially JRE 1.5's URLDecoder implementation seems to be broken to the point that this non-spec encoding isn't rejected / filtered. In later JREs the issue was fixed, best known solution is found in JRE 1.8.</span></p><h2 id="S2-028-Solution">Solution</h2><p>Upgrade runtime JRE/JDK, preferably to the most recent 1.8 version.</p><p>Alternatively <span style="line-height: 1.42857;">upgrade to Struts 2.3.28, which includes and uses a safe URLDecoder implementation from Apache Tomcat</span></p><h2 id="S2-028-Backwardcompatibility">Backward compatibility</h2><p>No issues expected when upgrading to Struts 2.3.28</p><h2 id="S2-028-Workaround">Workaround</h2><p>Use UTF-8 for page and parameter encoding.</p><h2 id="S2-028-FurtherReference">Further Reference</h2><p><style> .jira-issue { padding: 0 0 0 2px; line-height: 20px; Modified: websites/production/struts/content/docs/spring-plugin.html ============================================================================== --- websites/production/struts/content/docs/spring-plugin.html (original) +++ websites/production/struts/content/docs/spring-plugin.html Wed May 10 06:35:13 2017 @@ -140,11 +140,11 @@ under the License. <div class="pagecontent"> <div class="wiki-content"> <div id="ConfluenceContent"><p><style type="text/css">/*<![CDATA[*/ -div.rbtoc1490016578158 {padding: 0px;} -div.rbtoc1490016578158 ul {list-style: disc;margin-left: 0px;} -div.rbtoc1490016578158 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1494398046744 {padding: 0px;} +div.rbtoc1494398046744 ul {list-style: disc;margin-left: 0px;} +div.rbtoc1494398046744 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></p><div class="toc-macro rbtoc1490016578158"> +/*]]>*/</style></p><div class="toc-macro rbtoc1494398046744"> <ul class="toc-indentation"><li><a shape="rect" href="#SpringPlugin-Description">Description</a> <ul class="toc-indentation"><li><a shape="rect" href="#SpringPlugin-Features">Features</a></li></ul> </li><li><a shape="rect" href="#SpringPlugin-Usage">Usage</a> @@ -224,7 +224,7 @@ div.rbtoc1490016578158 li {margin-left: </div></div></li></ol><p>Letting the reloading class loader handle all the classes can lead to ClassCastException(s) because instances of the same classes loaded by different class loaders can not be assigned to each other. To prevent this problem we suggest that <code>struts.class.reloading.acceptClasses</code> is used to limit the classes loaded by the reloading class loader, so only actions are handled by it. This constant supports a comma separated list of regular expressions:</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;"><constant name="struts.class.reloading.acceptClasses" value="com\.myproject\.example\.actions\..*" /> </pre> -</div></div><div class="confluence-information-macro confluence-information-macro-warning"><span class="aui-icon aui-icon-small aui-iconfont-error confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>This feature is experimental, and <strong>should never</strong> be used in production systems.</p></div></div><h4 id="SpringPlugin-Settings">Settings</h4><p>The following settings can be customized. See the <a shape="rect" class="external-link" href="http://cwiki.apache.org/confluence/display/WW/Configuration+Files">developer guide</a>.</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Setting</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Default</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Possible Values</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code >struts.objectFactory.spring.autoWire</code></p></td><td colspan="1" >rowspan="1" class="confluenceTd"><p>The autowire strategy</p></td><td >colspan="1" rowspan="1" class="confluenceTd"><p><code>name</code></p></td><td >colspan="1" rowspan="1" >class="confluenceTd"><p><code>name</code>,<code>type</code>,<code>auto</code>, > or <code>constructor</code></p></td></tr><tr><td colspan="1" rowspan="1" >class="confluenceTd"><p><code>struts.objectFactory.spring.autoWire.alwaysRespect</code></p></td><td > colspan="1" rowspan="1" class="confluenceTd"><p>Whether the autowire >strategy should always be used, or if the framework should try to guess the >best strategy based on the situation</p></td><td colspan="1" rowspan="1" >class="confluenceTd"><p><code>false</code> for >backwards-compatibility</p></td><td colspan="1" rowspan="1" >class="confluenceTd"><p><code>true</code> or ><code>false</code></p></td></tr><tr><td colspan="1" rowspan="1" >class="confluenceTd"><p><code>struts.objectFactory.spring.useClassCach e</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Whether to have Spring use its class cache or not</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code> or <code>false</code></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>struts.class.reloading.watchList</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>List of jar files or directories to watch for changes</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Comma separated list of absolute or relative paths to jars or directories</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>struts.class.reloading.acceptClasses</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>List of regular expressions of accepted class names</p></td><td colspan="1" rows pan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Comma separated list of regular expressions of classes that will be loaded by the reloading class loader(we suggest to add regular expressions so only action classes are handled by the reloading class loader)</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>struts.class.reloading.reloadConfig</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Reload the runtime configuration (action mappings, results etc) when a change is detected in one of the watched directories</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code> or <code>false</code></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>struts.class.spring.enableAopSupport</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Uses different log ic to construct beans to allow support AOP</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code> or <code>false</code></p></td></tr></tbody></table></div><h4 id="SpringPlugin-Installation">Installation</h4><p>This plugin can be installed by copying the plugin jar into your application's <code>/WEB-INF/lib</code> directory. No other files need to be copied or created.</p></div> +</div></div><div class="confluence-information-macro confluence-information-macro-warning"><span class="aui-icon aui-icon-small aui-iconfont-error confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>This feature is experimental, and <strong>should never</strong> be used in production systems.</p></div></div><h4 id="SpringPlugin-Settings">Settings</h4><p>The following settings can be customized. See the <a shape="rect" class="external-link" href="http://cwiki.apache.org/confluence/display/WW/Configuration+Files">developer guide</a>.</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Setting</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Default</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Possible Values</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code >struts.objectFactory.spring.autoWire</code></p></td><td colspan="1" >rowspan="1" class="confluenceTd"><p>The autowire strategy</p></td><td >colspan="1" rowspan="1" class="confluenceTd"><p><code>name</code></p></td><td >colspan="1" rowspan="1" >class="confluenceTd"><p><code>name</code>,<code>type</code>,<code>auto</code>, > or <code>constructor</code></p></td></tr><tr><td colspan="1" rowspan="1" >class="confluenceTd"><p><code>struts.objectFactory.spring.autoWire.alwaysRespect</code></p></td><td > colspan="1" rowspan="1" class="confluenceTd"><p>Whether the autowire >strategy should always be used, or if the framework should try to guess the >best strategy based on the situation</p></td><td colspan="1" rowspan="1" >class="confluenceTd"><p><code>false</code> for >backwards-compatibility</p></td><td colspan="1" rowspan="1" >class="confluenceTd"><p><code>true</code> or ><code>false</code></p></td></tr><tr><td colspan="1" rowspan="1" >class="confluenceTd"><p><code>struts.objectFactory.spring.useClassCach e</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Whether to have Spring use its class cache or not</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code> or <code>false</code></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>struts.class.reloading.watchList</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>List of jar files or directories to watch for changes</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Comma separated list of absolute or relative paths to jars or directories</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>struts.class.reloading.acceptClasses</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>List of regular expressions of accepted class names</p></td><td colspan="1" rows pan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Comma separated list of regular expressions of classes that will be loaded by the reloading class loader(we suggest to add regular expressions so only action classes are handled by the reloading class loader)</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>struts.class.reloading.reloadConfig</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Reload the runtime configuration (action mappings, results etc) when a change is detected in one of the watched directories</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code> or <code>false</code></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>struts.objectFactory.spring.enableAopSupport</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Uses diffe rent logic to construct beans to allow support AOP, it uses an old approach to create a bean, switch this flag if you have problems with Spring beans and AOP</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code> or <code>false</code></p></td></tr></tbody></table></div><h4 id="SpringPlugin-Installation">Installation</h4><p>This plugin can be installed by copying the plugin jar into your application's <code>/WEB-INF/lib</code> directory. No other files need to be copied or created.</p></div> </div> <div class="tabletitle">