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">