Modified:
websites/production/struts/content/release/2.3.x/docs/spring-plugin.html
==============================================================================
--- websites/production/struts/content/release/2.3.x/docs/spring-plugin.html
(original)
+++ websites/production/struts/content/release/2.3.x/docs/spring-plugin.html
Fri Nov 14 07:43:54 2014
@@ -144,128 +144,58 @@ under the License.
<p><a shape="rect" class="external-link"
href="http://www.springframework.org" rel="nofollow">Spring</a> is a
lightweight container, providing centralized, automated configuration and
wiring of your application objects, using a technique called "Dependency
Injection"</p>
</div>
</div>
-
-
-<p>The Spring Plugin works by overriding the Struts <a shape="rect"
href="objectfactory.html">ObjectFactory</a> to enhance the creation of core
framework objects. When an object is to be created, it uses the
<code>class</code> attribute in the Struts configuration to correspond to the
<code>id</code> attribute in the Spring configuration. If not found, the class
will try to be created as usual, then be autowired by Spring. In the case of
Actions, Spring 2's <a shape="rect" class="external-link"
href="http://www.springframework.org/docs/reference/beans.html#beans-factory-scopes"
rel="nofollow">bean scope feature</a> can be used to scope an Action instance
to the session, application, or a custom scope, providing advanced
customization above the default per-request scoping.</p>
-
- <div class="aui-message warning shadowed information-macro">
+<p>The Spring Plugin works by overriding the Struts <a shape="rect"
href="objectfactory.html">ObjectFactory</a> to enhance the creation of core
framework objects. When an object is to be created, it uses the
<code>class</code> attribute in the Struts configuration to correspond to the
<code>id</code> attribute in the Spring configuration. If not found, the class
will try to be created as usual, then be autowired by Spring. In the case of
Actions, Spring 2's <a shape="rect" class="external-link"
href="http://www.springframework.org/docs/reference/beans.html#beans-factory-scopes"
rel="nofollow">bean scope feature</a> can be used to scope an Action instance
to the session, application, or a custom scope, providing advanced
customization above the default per-request scoping.</p> <div
class="aui-message warning shadowed information-macro">
<p class="title">Spring Actions are Optional!</p>
<span class="aui-icon icon-warning">Icon</span>
<div class="message-content">
-
-<p>Remember: <strong>registering Actions with Spring is not required</strong>.
The Spring alternative is there if you need it, but the framework will
automatically create Actions objects from the action mappings. But, if you want
to use Spring to inject your Actions, the option is there.</p>
+ <p>Remember: <strong>registering Actions with
Spring is not required</strong>. The Spring alternative is there if you need
it, but the framework will automatically create Actions objects from the action
mappings. But, if you want to use Spring to inject your Actions, the option is
there.</p>
</div>
</div>
-
-
-<h4 id="SpringPlugin-Features">Features</h4>
-
-<ul><li>Allow Actions, Interceptors, and Results to be created by
Spring</li><li>Struts-created objects can be autowired by Spring after
creation</li><li>Provides two interceptors that autowire actions, if not using
the Spring ObjectFactory</li></ul>
-
-
-<h2 id="SpringPlugin-Usage">Usage</h2>
-
-<p>To enable Spring integration, simply include
struts2-spring-plugin-x-x-x.jar in your application.</p>
-
-<p>If you are using more than one object factory, (for example, by including
both the Spring and Plexus plugins in your application,) you will need to set
the struts.objectFactory property in <a shape="rect"
href="strutsproperties.html">struts.properties</a> or in one of several XML
files via <a shape="rect" href="constant-configuration.html">Constant
Configuration</a>:</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader
panelHeader pdl" style="border-bottom-width:
1px;"><b>struts.properties</b></div><div class="codeContent panelContent pdl">
+<h4 id="SpringPlugin-Features">Features</h4><ul><li>Allow Actions,
Interceptors, and Results to be created by Spring</li><li>Struts-created
objects can be autowired by Spring after creation</li><li>Provides two
interceptors that autowire actions, if not using the Spring
ObjectFactory</li></ul><h2 id="SpringPlugin-Usage">Usage</h2><p>To enable
Spring integration, simply include struts2-spring-plugin-x-x-x.jar in your
application.</p><p>If you are using more than one object factory, (for example,
by including both the Spring and Plexus plugins in your application,) you will
need to set the struts.objectFactory property in <a shape="rect"
href="strutsproperties.html">struts.properties</a> or in one of several XML
files via <a shape="rect" href="constant-configuration.html">Constant
Configuration</a>:</p><div class="code panel pdl" style="border-width:
1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width:
1px;"><b>struts.properties</b></div><div class="codeContent pa
nelContent pdl">
<script class="theme: Default; brush: java; gutter: false"
type="syntaxhighlighter"><![CDATA[struts.objectFactory = spring]]></script>
-</div></div>
-
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader
panelHeader pdl" style="border-bottom-width: 1px;"><b>struts.xml</b></div><div
class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false"
type="syntaxhighlighter"><![CDATA[
-<struts>
+</div></div><div class="code panel pdl" style="border-width: 1px;"><div
class="codeHeader panelHeader pdl" style="border-bottom-width:
1px;"><b>struts.xml</b></div><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false"
type="syntaxhighlighter"><![CDATA[<struts>
<constant name="struts.objectFactory" value="spring"
/>
...
</struts>
]]></script>
-</div></div>
-
-<h4 id="SpringPlugin-Autowiring">Autowiring</h4>
-
-<p>The framework enables "autowiring" by default. (Autowiring means to look
for objects defined in Spring with the same name as your object property). To
change the wiring mode, modify the <code>spring.autowire</code> property.</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader
panelHeader pdl" style="border-bottom-width: 1px;"><b>Wiring Mode</b></div><div
class="codeContent panelContent pdl">
+</div></div><h4 id="SpringPlugin-Autowiring">Autowiring</h4><p>The framework
enables "autowiring" by default. (Autowiring means to look for objects defined
in Spring with the same name as your object property). To change the wiring
mode, modify the <code>spring.autowire</code> property.</p><div class="code
panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl"
style="border-bottom-width: 1px;"><b>Wiring Mode</b></div><div
class="codeContent panelContent pdl">
<script class="theme: Default; brush: java; gutter: false"
type="syntaxhighlighter"><![CDATA[struts.objectFactory.spring.autoWire =
type]]></script>
-</div></div>
-
-<p>The <code>autowire</code> property can be set to several options. </p>
-
-<div class="table-wrap"><table class="confluenceTable"><tbody><tr><th
colspan="1" rowspan="1" class="confluenceTh"><p> name </p></th><td colspan="1"
rowspan="1" class="confluenceTd"><p> Auto-wire by matching the name of the bean
in Spring with the name of the property in your action. <strong>This is the
default</strong> </p></td></tr><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p> type </p></th><td colspan="1" rowspan="1"
class="confluenceTd"><p> Auto-wire by looking for a bean registered with Spring
of the same type as the property in your action. This requires you to have only
one bean of this type registered with Spring </p></td></tr><tr><th colspan="1"
rowspan="1" class="confluenceTh"><p> auto </p></th><td colspan="1" rowspan="1"
class="confluenceTd"><p> Spring will attempt to auto-detect the best method for
auto-wiring your action </p></td></tr><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p> constructor </p></th><td colspan="1" rowspan="1"
class="confluenceTd"
><p> Spring will auto-wire the parameters of the bean's constructor
></p></td></tr><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> no
></p></th><td colspan="1" rowspan="1" class="confluenceTd"><p> Turn off
>externally defined autowiring. Annotation-driven injection and injection
>based on Springs *Aware-interfaces still applies
></p></td></tr></tbody></table></div>
-
-
-<p>By default, the framework will at least try to use Spring to create all its
objects. If the object cannot be created by Spring, then the framework will
create the object itself. </p>
-
-<p>Enabling Spring integration for other application objects is a two-step
process. </p>
-
-<ul><li>Configure the Spring listener</li></ul>
-
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader
panelHeader pdl" style="border-bottom-width: 1px;"><b>web.xml</b></div><div
class="codeContent panelContent pdl">
-<script class="theme: Default; brush: xml; gutter: false"
type="syntaxhighlighter"><![CDATA[
-<listener>
+</div></div><p>The <code>autowire</code> property can be set to several
options.</p><div class="table-wrap"><table
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p>name</p></th><td colspan="1" rowspan="1"
class="confluenceTd"><p>Auto-wire by matching the name of the bean in Spring
with the name of the property in your action. <strong>This is the
default</strong></p></td></tr><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p>type</p></th><td colspan="1" rowspan="1"
class="confluenceTd"><p>Auto-wire by looking for a bean registered with Spring
of the same type as the property in your action. This requires you to have only
one bean of this type registered with Spring</p></td></tr><tr><th colspan="1"
rowspan="1" class="confluenceTh"><p>auto</p></th><td colspan="1" rowspan="1"
class="confluenceTd"><p>Spring will attempt to auto-detect the best method for
auto-wiring your action</p></td></tr><tr><th colspan="1" rowspan="1"
class="confluenceTh"><
p>constructor</p></th><td colspan="1" rowspan="1"
class="confluenceTd"><p>Spring will auto-wire the parameters of the bean's
constructor</p></td></tr><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p>no</p></th><td colspan="1" rowspan="1"
class="confluenceTd"><p>Turn off externally defined autowiring.
Annotation-driven injection and injection based on Springs *Aware-interfaces
still applies</p></td></tr></tbody></table></div><p>By default, the framework
will at least try to use Spring to create all its objects. If the object cannot
be created by Spring, then the framework will create the object
itself.</p><p>Enabling Spring integration for other application objects is a
two-step process.</p><ul><li>Configure the Spring listener</li></ul><div
class="code panel pdl" style="border-width: 1px;"><div class="codeHeader
panelHeader pdl" style="border-bottom-width: 1px;"><b>web.xml</b></div><div
class="codeContent panelContent pdl">
+<script class="theme: Default; brush: xml; gutter: false"
type="syntaxhighlighter"><![CDATA[<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
]]></script>
-</div></div>
-
-
-<ul><li>Register your objects via the Spring configuration</li></ul>
-
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader
panelHeader pdl" style="border-bottom-width:
1px;"><b>applicationContext.xml</b></div><div class="codeContent panelContent
pdl">
-<script class="theme: Default; brush: xml; gutter: false"
type="syntaxhighlighter"><![CDATA[
-<?xml version="1.0" encoding="UTF-8"?>
+</div></div><ul><li>Register your objects via the Spring
configuration</li></ul><div class="code panel pdl" style="border-width:
1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width:
1px;"><b>applicationContext.xml</b></div><div class="codeContent panelContent
pdl">
+<script class="theme: Default; brush: xml; gutter: false"
type="syntaxhighlighter"><![CDATA[<?xml version="1.0"
encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans default-autowire="autodetect">
<bean id="personManager"
class="com.acme.PersonManager" scope="prototype"/>
...
</beans>
]]></script>
-</div></div>
-
- <div class="aui-message success shadowed information-macro">
+</div></div> <div class="aui-message success shadowed information-macro">
<p class="title">More applicationContext configuration
files needed?</p>
<span class="aui-icon icon-success">Icon</span>
<div class="message-content">
-
-<p>Since the Spring integration uses a standard Listener, it can be configured
to support configuration files other than <code>applicationContext.xml</code>.
Adding the following to your web.xml will cause Spring's ApplicationContext to
be inititalized from all files matching the given pattern:</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent
panelContent pdl">
-<script class="theme: Default; brush: xml; gutter: false"
type="syntaxhighlighter"><![CDATA[
-<!-- Context Configuration locations for Spring XML files -->
+ <p>Since the Spring integration uses a standard
Listener, it can be configured to support configuration files other than
<code>applicationContext.xml</code>. Adding the following to your web.xml will
cause Spring's ApplicationContext to be inititalized from all files matching
the given pattern:</p><div class="code panel pdl" style="border-width:
1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: xml; gutter: false"
type="syntaxhighlighter"><![CDATA[<!-- Context Configuration locations for
Spring XML files -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext-*.xml,classpath*:applicationContext-*.xml</param-value>
</context-param>
]]></script>
-</div></div>
-<p>See the Spring documentation for a full description of this parameter.</p>
+</div></div><p>See the Spring documentation for a full description of this
parameter.</p>
</div>
</div>
-
-
-<h4 id="SpringPlugin-InitializingActionsfromSpring">Initializing Actions from
Spring</h4>
-
-<p>Normally, in <code>struts.xml</code> you specify the class for each Action.
When using the default SpringObjectFactory, the framework will ask Spring to
create the Action and wire up dependencies as specified by the default
auto-wire behavior. </p>
-
- <div class="aui-message success shadowed information-macro">
+<h4 id="SpringPlugin-InitializingActionsfromSpring">Initializing Actions from
Spring</h4><p>Normally, in <code>struts.xml</code> you specify the class for
each Action. When using the default SpringObjectFactory, the framework will ask
Spring to create the Action and wire up dependencies as specified by the
default auto-wire behavior.</p> <div class="aui-message success shadowed
information-macro">
<span class="aui-icon icon-success">Icon</span>
<div class="message-content">
<p>We <strong>strongly</strong> recommend that you
find declarative ways of letting Spring know what to provide for your actions.
This includes making your beans able to be autowired by either naming your
dependent properties on your action the same as the bean defined in Spring
which should be provided (to allow for name-based autowiring), or using
autowire-by-type and only having one of the required type registered with
Spring. It also can include using JDK5 annotations to declare transactional and
security requirements rather than having to explicitly set up proxies in your
Spring configuration. If you can find ways to let Spring know what it needs to
do for your action without needing any explicit configuration in the Spring
<code>applicationContext.xml</code>, then you won't have to maintain this
configuration in both places.</p>
</div>
</div>
-
-
-<p>However, sometimes you might want the bean to be completely managed by
Spring. This is useful, for example, if you wish to apply more complex AOP or
Spring-enabled technologies, such as Acegi, to your beans. To do this, all you
have to do is configure the bean in your Spring
<code>applicationContext.xml</code> and then <em>change</em> the class
attribute from your Action in the <code>struts.xml</code> to use the bean name
defined in Spring instead of the class name.</p>
-
-<p>Your <code>struts.xml</code> file would then have the Action class
attributes changed.</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader
panelHeader pdl" style="border-bottom-width: 1px;"><b>struts.xml</b></div><div
class="codeContent panelContent pdl">
-<script class="theme: Default; brush: xml; gutter: false"
type="syntaxhighlighter"><![CDATA[
-<!DOCTYPE struts PUBLIC
+<p>However, sometimes you might want the bean to be completely managed by
Spring. This is useful, for example, if you wish to apply more complex AOP or
Spring-enabled technologies, such as Acegi, to your beans. To do this, all you
have to do is configure the bean in your Spring
<code>applicationContext.xml</code> and then <em>change</em> the class
attribute from your Action in the <code>struts.xml</code> to use the bean name
defined in Spring instead of the class name.</p><p>Your <code>struts.xml</code>
file would then have the Action class attributes changed.</p><div class="code
panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl"
style="border-bottom-width: 1px;"><b>struts.xml</b></div><div
class="codeContent panelContent pdl">
+<script class="theme: Default; brush: xml; gutter: false"
type="syntaxhighlighter"><![CDATA[<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
@@ -284,74 +214,37 @@ under the License.
</package>
</struts>
]]></script>
-</div></div>
-
-<p>Where you have a Spring bean defined in your
<code>applicationContext.xml</code> named "bar". Note that the
<code>com.acme.Foo</code> Action did not need to be changed, because it can be
autowired.</p>
-
-<p>A typical spring configuration for bar could look as following.</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader
panelHeader pdl" style="border-bottom-width:
1px;"><b>applicationConext.xml</b></div><div class="codeContent panelContent
pdl">
-<script class="theme: Default; brush: xml; gutter: false"
type="syntaxhighlighter"><![CDATA[
-<?xml version="1.0" encoding="UTF-8"?>
+</div></div><p>Where you have a Spring bean defined in your
<code>applicationContext.xml</code> named "bar". Note that the
<code>com.acme.Foo</code> Action did not need to be changed, because it can be
autowired.</p><p>A typical spring configuration for bar could look as
following.</p><div class="code panel pdl" style="border-width: 1px;"><div
class="codeHeader panelHeader pdl" style="border-bottom-width:
1px;"><b>applicationConext.xml</b></div><div class="codeContent panelContent
pdl">
+<script class="theme: Default; brush: xml; gutter: false"
type="syntaxhighlighter"><![CDATA[<?xml version="1.0"
encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans default-autowire="autodetect">
<bean id="bar" class="com.my.BarClass"
singleton="false"/>
...
</beans>
]]></script>
-</div></div>
-
-<p>To use session-scoped components with Spring and Struts, see the <a
shape="rect" href="spring-session-components-workarounds.html">Spring Session
Components Workarounds</a> analysis.</p>
-
-<h4 id="SpringPlugin-ClassReloading">Class Reloading</h4>
-<p>The Spring plugin can be configured to automatically reload classes that
change in the file system. This feature will enable code changes to be "hot
deployed" without having to restart the web container. To enable this feature
follow these steps:</p>
-<ol><li>Set "struts.devMode" to "true"</li><li>Set
"struts.class.reloading.watchList" to a comma separated list of directories, or
jar files (absolute or relative paths)</li><li>Add this to web.xml:
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent
panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false"
type="syntaxhighlighter"><![CDATA[
- <context-param>
+</div></div><p>To use session-scoped components with Spring and Struts, see
the <a shape="rect" href="spring-session-components-workarounds.html">Spring
Session Components Workarounds</a> analysis.</p><h4
id="SpringPlugin-ClassReloading">Class Reloading</h4><p>The Spring plugin can
be configured to automatically reload classes that change in the file system.
This feature will enable code changes to be "hot deployed" without having to
restart the web container. To enable this feature follow these
steps:</p><ol><li>Set "struts.devMode" to "true"</li><li>Set
"struts.class.reloading.watchList" to a comma separated list of directories, or
jar files (absolute or relative paths)</li><li><p>Add this to web.xml:</p><div
class="code panel pdl" style="border-width: 1px;"><div class="codeContent
panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false"
type="syntaxhighlighter"><![CDATA[ <context-param>
<param-name>contextClass</param-name>
<param-value>org.apache.struts2.spring.ClassReloadingXMLWebApplicationContext</param-value>
</context-param>
]]></script>
-</div></div></li><li>Add Apache Commons JCI FAM to the classpath. If you are
using maven, add this to pom.xml
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent
panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false"
type="syntaxhighlighter"><![CDATA[
- <dependency>
+</div></div></li><li><p>Add Apache Commons JCI FAM to the classpath. If you
are using maven, add this to pom.xml</p><div class="code panel pdl"
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false"
type="syntaxhighlighter"><![CDATA[ <dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-jci-fam</artifactId>
<version>1.0</version>
</dependency>
]]></script>
-</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">
-<script class="theme: Default; brush: java; gutter: false"
type="syntaxhighlighter"><![CDATA[
-<constant name="struts.class.reloading.acceptClasses"
value="com\.myproject\.example\.actions\..*" />
+</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">
+<script class="theme: Default; brush: java; gutter: false"
type="syntaxhighlighter"><![CDATA[<constant
name="struts.class.reloading.acceptClasses"
value="com\.myproject\.example\.actions\..*" />
]]></script>
-</div></div>
-
- <div class="aui-message problem shadowed information-macro">
+</div></div> <div class="aui-message problem shadowed information-macro">
<span class="aui-icon icon-problem">Icon</span>
<div class="message-content">
-
-<p>This feature is experimental, and <strong>should never</strong> be used in
production systems.</p>
+ <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 alw
ays 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.useClassCache</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="confluenceT
d"><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" rowspan="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 de
tected 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></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>
+<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.useClassCache</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" rowspan="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 logic 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 copyi
ng 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">
Modified:
websites/production/struts/content/release/2.3.x/docs/type-conversion.html
==============================================================================
--- websites/production/struts/content/release/2.3.x/docs/type-conversion.html
(original)
+++ websites/production/struts/content/release/2.3.x/docs/type-conversion.html
Fri Nov 14 07:43:54 2014
@@ -141,11 +141,11 @@ under the License.
<div id="ConfluenceContent"><p>Routine type conversion in the
framework is transparent. Generally, all you need to do is ensure that HTML
inputs have names that can be used in <a shape="rect" href="ognl.html">OGNL</a>
expressions. (HTML inputs are form elements and other GET/POST parameters.)</p>
<style type="text/css">/*<![CDATA[*/
-div.rbtoc1405758419157 {padding: 0px;}
-div.rbtoc1405758419157 ul {list-style: none;margin-left: 0px;}
-div.rbtoc1405758419157 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1411292161176 {padding: 0px;}
+div.rbtoc1411292161176 ul {list-style: none;margin-left: 0px;}
+div.rbtoc1411292161176 li {margin-left: 0px;padding-left: 0px;}
-/*]]>*/</style><div class="toc-macro rbtoc1405758419157">
+/*]]>*/</style><div class="toc-macro rbtoc1411292161176">
<ul class="toc-indentation"><li><span class="TOCOutline">1</span> <a
shape="rect" href="#TypeConversion-BuiltinTypeConversionSupport">Built in Type
Conversion Support</a></li><li><span class="TOCOutline">2</span> <a
shape="rect" href="#TypeConversion-RelationshiptoParameterNames">Relationship
to Parameter Names</a></li><li><span class="TOCOutline">3</span> <a
shape="rect" href="#TypeConversion-CreatingaTypeConverter">Creating a Type
Converter</a></li><li><span class="TOCOutline">4</span> <a shape="rect"
href="#TypeConversion-ApplyingaTypeConvertertoanAction">Applying a Type
Converter to an Action</a></li><li><span class="TOCOutline">5</span> <a
shape="rect"
href="#TypeConversion-ApplyingaTypeConvertertoabeanormodel">Applying a Type
Converter to a bean or model</a></li><li><span class="TOCOutline">6</span> <a
shape="rect"
href="#TypeConversion-ApplyingaTypeConverterforanapplication">Applying a Type
Converter for an application</a></li><li><span class="TOCOutline">7</span> <a
shape="r
ect" href="#TypeConversion-ASimpleExample">A Simple Example</a></li><li><span
class="TOCOutline">8</span> <a shape="rect"
href="#TypeConversion-AdvancedTypeConversion">Advanced Type Conversion</a>
<ul class="toc-indentation"><li><span class="TOCOutline">8.1</span> <a
shape="rect" href="#TypeConversion-NullPropertyHandling">Null Property
Handling</a></li><li><span class="TOCOutline">8.2</span> <a shape="rect"
href="#TypeConversion-CollectionandMapSupport">Collection and Map Support</a>
<ul class="toc-indentation"><li><span class="TOCOutline">8.2.1</span> <a
shape="rect"
href="#TypeConversion-Indexingacollectionbyapropertyofthatcollection">Indexing
a collection by a property of that collection</a></li></ul>
Modified: websites/production/struts/content/release/2.3.x/docs/validation.html
==============================================================================
--- websites/production/struts/content/release/2.3.x/docs/validation.html
(original)
+++ websites/production/struts/content/release/2.3.x/docs/validation.html Fri
Nov 14 07:43:54 2014
@@ -139,11 +139,11 @@ under the License.
<div class="pagecontent">
<div class="wiki-content">
<div id="ConfluenceContent"><p>Struts 2 validation is configured
via XML or annotations. Manual validation in the action is also possible, and
may be combined with XML and annotation-driven validation.</p><p>Validation
also depends on both the <code>validation</code> and <code>workflow</code>
interceptors (both are included in the default interceptor stack). The
<code>validation</code> interceptor does the validation itself and creates a
list of field-specific errors. The <code>workflow</code> interceptor checks for
the presence of validation errors: if any are found, it returns the "input"
result (by default), taking the user back to the form which contained the
validation errors.</p><p>If we're using the default settings <em>and</em> our
action doesn't have an "input" result defined <em>and</em> there are validation
(or, incidentally, type conversion) errors, we'll get an error message back
telling us there's no "input" result defined for the action.</p><p><strong>CONT
ENTS</strong></p><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1405758546535 {padding: 0px;}
-div.rbtoc1405758546535 ul {list-style: none;margin-left: 0px;}
-div.rbtoc1405758546535 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1411292257312 {padding: 0px;}
+div.rbtoc1411292257312 ul {list-style: none;margin-left: 0px;}
+div.rbtoc1411292257312 li {margin-left: 0px;padding-left: 0px;}
-/*]]>*/</style></p><div class="toc-macro rbtoc1405758546535">
+/*]]>*/</style></p><div class="toc-macro rbtoc1411292257312">
<ul class="toc-indentation"><li><span class="TOCOutline">1</span> <a
shape="rect" href="#Validation-UsingAnnotations">Using
Annotations</a></li><li><span class="TOCOutline">2</span> <a shape="rect"
href="#Validation-Examples">Examples</a></li><li><span
class="TOCOutline">3</span> <a shape="rect"
href="#Validation-BundledValidators">Bundled Validators</a></li><li><span
class="TOCOutline">4</span> <a shape="rect"
href="#Validation-RegisteringValidators">Registering
Validators</a></li><li><span class="TOCOutline">5</span> <a shape="rect"
href="#Validation-TurningonValidation">Turning on Validation</a></li><li><span
class="TOCOutline">6</span> <a shape="rect"
href="#Validation-ValidatorScopes">Validator Scopes</a>
<ul class="toc-indentation"><li><span class="TOCOutline">6.1</span> <a
shape="rect" href="#Validation-Notes">Notes</a></li></ul>
</li><li><span class="TOCOutline">7</span> <a shape="rect"
href="#Validation-DefiningValidationRules">Defining Validation
Rules</a></li><li><span class="TOCOutline">8</span> <a shape="rect"
href="#Validation-LocalizingandParameterizingMessages">Localizing and
Parameterizing Messages</a></li><li><span class="TOCOutline">9</span> <a
shape="rect" href="#Validation-ValidatorFlavor">Validator
Flavor</a></li><li><span class="TOCOutline">10</span> <a shape="rect"
href="#Validation-Non-FieldValidatorVsField-Validatorvalidatortypes">Non-Field
Validator Vs Field-Validator</a></li><li><span class="TOCOutline">11</span> <a
shape="rect" href="#Validation-Short-CircuitingValidator">Short-Circuiting
Validator</a></li><li><span class="TOCOutline">12</span> <a shape="rect"
href="#Validation-HowValidatorsofanActionareFound">How Validators of an Action
are Found</a></li><li><span class="TOCOutline">13</span> <a shape="rect"
href="#Validation-Writingcustomvalidators">Writing custom validators</a></li><
li><span class="TOCOutline">14</span> <a shape="rect"
href="#Validation-Resources">Resources</a></li><li><span
class="TOCOutline">15</span> <a shape="rect" href="#Validation-Next:">Next:
Localization</a></li></ul>
Modified:
websites/production/struts/content/release/2.3.x/docs/version-notes-2318.html
==============================================================================
---
websites/production/struts/content/release/2.3.x/docs/version-notes-2318.html
(original)
+++
websites/production/struts/content/release/2.3.x/docs/version-notes-2318.html
Fri Nov 14 07:43:54 2014
@@ -138,13 +138,7 @@ under the License.
<div class="pagecontent">
<div class="wiki-content">
- <div id="ConfluenceContent"> <div class="aui-message problem
shadowed information-macro">
- <span class="aui-icon icon-problem">Icon</span>
- <div class="message-content">
- <p>This version is not yet released!</p>
- </div>
- </div>
-<p> </p><p><img class="emoticon emoticon-tick"
src="https://cwiki.apache.org/confluence/s/en_GB-1988229788/4109/76e0dbb30bc8580e459c201f3535d84f9283a9ac.1/_/images/icons/emoticons/check.png"
data-emoticon-name="tick" alt="(tick)"> These are the notes for the Struts
2.3.18 distribution.</p><p><img class="emoticon emoticon-tick"
src="https://cwiki.apache.org/confluence/s/en_GB-1988229788/4109/76e0dbb30bc8580e459c201f3535d84f9283a9ac.1/_/images/icons/emoticons/check.png"
data-emoticon-name="tick" alt="(tick)"> For prior notes in this release
series, see <a shape="rect" href="version-notes-23161.html">Version Notes
2.3.16.1</a></p><ul><li>If you are a Maven user, you might want to get started
using the <a shape="rect" href="struts-2-maven-archetypes.html">Maven
Archetype</a>.</li><li>Another quick-start entry point is the
<strong>blank</strong> application. Rename and deploy the WAR as a starting
point for your own development.</li></ul><div class="code panel pdl"
style="border-wid
th: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width:
1px;"><b>Maven Dependency</b></div><div class="codeContent panelContent pdl">
+ <div id="ConfluenceContent"><p><img class="emoticon emoticon-tick"
src="https://cwiki.apache.org/confluence/s/en_GB-1988229788/4109/76e0dbb30bc8580e459c201f3535d84f9283a9ac.1/_/images/icons/emoticons/check.png"
data-emoticon-name="tick" alt="(tick)"> These are the notes for the Struts
2.3.18 distribution.</p><p><img class="emoticon emoticon-tick"
src="https://cwiki.apache.org/confluence/s/en_GB-1988229788/4109/76e0dbb30bc8580e459c201f3535d84f9283a9ac.1/_/images/icons/emoticons/check.png"
data-emoticon-name="tick" alt="(tick)"> For prior notes in this release
series, see <a shape="rect" href="version-notes-23161.html">Version Notes
2.3.16.1</a></p><ul><li>If you are a Maven user, you might want to get started
using the <a shape="rect" href="struts-2-maven-archetypes.html">Maven
Archetype</a>.</li><li>Another quick-start entry point is the
<strong>blank</strong> application. Rename and deploy the WAR as a starting
point for your own development.</li></ul><div class="code p
anel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl"
style="border-bottom-width: 1px;"><b>Maven Dependency</b></div><div
class="codeContent panelContent pdl">
<script class="theme: Default; brush: xml; gutter: false"
type="syntaxhighlighter"><![CDATA[<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
@@ -161,7 +155,7 @@ under the License.
<url>https://repository.apache.org/content/groups/staging/</url>
</repository>
</repositories>]]></script>
-</div></div><h2 id="VersionNotes2.3.18-InternalChanges">Internal
Changes</h2><ul><li><img class="emoticon emoticon-warning"
src="https://cwiki.apache.org/confluence/s/en_GB-1988229788/4109/76e0dbb30bc8580e459c201f3535d84f9283a9ac.1/_/images/icons/emoticons/warning.png"
data-emoticon-name="warning" alt="(warning)"> Merged security fix from version
2.3.16.1</li><li>Collection Parameters for RedirectResults, <a shape="rect"
class="external-link"
href="https://issues.apache.org/jira/browse/WW-4224">WW-4224</a></li><li>Make
ParametersInterceptor supports chinese in hash key by default, <a shape="rect"
class="external-link"
href="https://issues.apache.org/jira/browse/WW-4250">WW-4250</a></li><li>themes.properties
can be loaded using ServletContext allows to put <code>template</code> folder
under WEB-INF or on classpath, <a shape="rect" class="external-link"
href="https://issues.apache.org/jira/browse/WW-4260">WW-4260</a></li><li><span>New
tag datetextfield, <a shape="rect" class="external
-link"
href="https://issues.apache.org/jira/browse/WW-3493">WW-3493</a></span></li><li><span>Only
valid Ognl expressions are cached, <a shape="rect" class="external-link"
href="https://issues.apache.org/jira/browse/WW-4146">WW-4146</a></span></li><li><span>CustomTextProvider
can be used for validation errors of model driven actions, <a shape="rect"
class="external-link"
href="https://issues.apache.org/jira/browse/WW-4202">WW-4202</a></span></li><li><span>datetimepicker's
label fixed, <a shape="rect" class="external-link"
href="https://issues.apache.org/jira/browse/WW-4254">WW-4254</a></span></li><li><span>PropertiesJudge<span> removed
and properties are checked
in <code>SecurityMemberAccess</code></span></span>, <a shape="rect"
class="external-link"
href="https://issues.apache.org/jira/browse/WW-4257">WW-4257</a></li><li>resource
reloading works in IBM JVM, <a shape="rect" class="external-link"
href="https://issues.apache.org/jira/browse/WW-4266">WW-4266</a></li><li>defaul
t reloading settings were removed from <code>default.properties</code>,
<a shape="rect" class="external-link"
href="https://issues.apache.org/jira/browse/WW-4267">WW-4267</a></li><li>and
other many small improvements, please see release notes</li></ul><h3
id="VersionNotes2.3.18-IssueDetail">Issue Detail</h3><ul><li><a shape="rect"
class="external-link"
href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311041&version=12324780">JIRA
Release Notes 2.3.18</a> TBD</li></ul><h3
id="VersionNotes2.3.18-IssueList">Issue List</h3><ul><li><a shape="rect"
class="external-link"
href="https://issues.apache.org/jira/issues/?filter=12326872">Struts 2.3.18
DONE</a></li><li><a shape="rect" class="external-link"
href="https://issues.apache.org/jira/issues/?filter=12318399">Struts 2.3.x
TODO</a></li></ul><h3 id="VersionNotes2.3.18-Otherresources">Other
resources</h3><ul><li><a shape="rect" class="external-link"
href="http://www.mail-archive.com/commits%40struts.apache.or
g/" rel="nofollow">Commit Logs (Struts 1 and Struts 2)</a></li><li><a
shape="rect" class="external-link"
href="http://svn.apache.org/viewvc/struts/struts2/trunk/">Source Code
Repository (includes change browsing)</a></li></ul><div><span style="font-size:
24.0px;line-height: 30.0px;"><br clear="none"></span></div><div><span
style="font-size: 24.0px;line-height: 30.0px;background-color:
rgb(245,245,245);"><br clear="none"></span></div></div>
+</div></div><h2 id="VersionNotes2.3.18-InternalChanges">Internal
Changes</h2><ul><li><img class="emoticon emoticon-warning"
src="https://cwiki.apache.org/confluence/s/en_GB-1988229788/4109/76e0dbb30bc8580e459c201f3535d84f9283a9ac.1/_/images/icons/emoticons/warning.png"
data-emoticon-name="warning" alt="(warning)"> Merged security fixes from
version 2.3.16.1, 2.3.16.2, 2.3.16.3</li><li><img class="emoticon
emoticon-warning"
src="https://cwiki.apache.org/confluence/s/en_GB-1988229788/4109/76e0dbb30bc8580e459c201f3535d84f9283a9ac.1/_/images/icons/emoticons/warning.png"
data-emoticon-name="warning" alt="(warning)"> Extended existing security
mechanism to block access to given Java packages and Classes, see <a
shape="rect" class="external-link"
href="https://github.com/apache/struts/pull/11"
rel="nofollow">#11</a></li><li>Collection Parameters for RedirectResults, <a
shape="rect" class="external-link"
href="https://issues.apache.org/jira/browse/WW-4224">WW-4224</a></li><li
>Make ParametersInterceptor supports chinese in hash key by default, <a
>shape="rect" class="external-link"
>href="https://issues.apache.org/jira/browse/WW-4250">WW-4250</a></li><li>themes.properties
> can be loaded using ServletContext allows to put <code>template</code>
>folder under WEB-INF or on classpath, <a shape="rect" class="external-link"
>href="https://issues.apache.org/jira/browse/WW-4260">WW-4260</a></li><li><span>New
> tag datetextfield, <a shape="rect" class="external-link"
>href="https://issues.apache.org/jira/browse/WW-3493">WW-3493</a></span></li><li><span>Only
> valid Ognl expressions are cached, <a shape="rect" class="external-link"
>href="https://issues.apache.org/jira/browse/WW-4146">WW-4146</a></span></li><li><span>CustomTextProvider
> can be used for validation errors of model driven actions, <a shape="rect"
>class="external-link"
>href="https://issues.apache.org/jira/browse/WW-4202">WW-4202</a></span></li><li><span>datetimepicker's
> label fixed, <a shape="rect" class="externa
l-link"
href="https://issues.apache.org/jira/browse/WW-4254">WW-4254</a></span></li><li><span>PropertiesJudge<span> removed
and properties are checked
in <code>SecurityMemberAccess</code></span></span>, <a shape="rect"
class="external-link"
href="https://issues.apache.org/jira/browse/WW-4257">WW-4257</a></li><li>resource
reloading works in IBM JVM, <a shape="rect" class="external-link"
href="https://issues.apache.org/jira/browse/WW-4266">WW-4266</a></li><li>default
reloading settings were removed from <code>default.properties</code>, <a
shape="rect" class="external-link"
href="https://issues.apache.org/jira/browse/WW-4267">WW-4267</a></li><li><img
class="emoticon emoticon-warning"
src="https://cwiki.apache.org/confluence/s/en_GB-1988229788/4109/76e0dbb30bc8580e459c201f3535d84f9283a9ac.1/_/images/icons/emoticons/warning.png"
data-emoticon-name="warning" alt="(warning)"> commons-fileupload library
upgraded to version 1.3.1 to fix potential security vulnerability, <
a shape="rect" class="external-link"
href="https://issues.apache.org/jira/browse/WW-4286">WW-4286</a></li><li>The <code>scheme</code>
attribute accepts expressions in <code>s:url</code> tag, <a shape="rect"
class="external-link"
href="https://issues.apache.org/jira/browse/WW-4024">WW-4024</a></li><li>Solves
problem with infinite loop in <code>FastByteArrayOutputStream</code>, <a
shape="rect" class="external-link"
href="https://issues.apache.org/jira/browse/WW-4383">WW-4383</a></li><li><code>LocalizedTextUtil</code>
supports many <code>ClassLoaders</code>, <a shape="rect"
class="external-link"
href="https://issues.apache.org/jira/browse/WW-4379">WW-4379</a></li><li>Bill
of Materials pom was introduced, <a shape="rect" class="external-link"
href="https://issues.apache.org/jira/browse/WW-4326">WW-4326</a></li><li><code>debug=browser|console</code>
was migrated to jQuery, <a shape="rect" class="external-link"
href="https://issues.apache.org/jira/browse/WW-4322">WW-43
22</a></li><li><code>struts_dojo.js</code> was fixed, <a shape="rect"
class="external-link"
href="https://issues.apache.org/jira/browse/WW-4349">WW-4349</a></li><li>interface <code>org/apache/struts2/views/TagLibrary</code>
was restored and marked as <code>@Depreacted</code>, <a shape="rect"
class="external-link"
href="https://issues.apache.org/jira/browse/WW-4255">WW-4255</a></li><li>and
many other small improvements, please see the release notes</li></ul><h3
id="VersionNotes2.3.18-IssueDetail">Issue Detail</h3><ul><li><a shape="rect"
class="external-link"
href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311041&version=12319176">JIRA
Release Notes 2.3.18</a></li></ul><h3 id="VersionNotes2.3.18-IssueList">Issue
List</h3><ul><li><a shape="rect" class="external-link"
href="https://issues.apache.org/jira/issues/?filter=12326872">Struts 2.3.18
DONE</a></li><li><a shape="rect" class="external-link"
href="https://issues.apache.org/jira/issues/?filter=
12318399">Struts 2.3.x TODO</a></li></ul><h3
id="VersionNotes2.3.18-Otherresources">Other resources</h3><ul><li><a
shape="rect" class="external-link"
href="http://www.mail-archive.com/commits%40struts.apache.org/"
rel="nofollow">Commit Logs</a></li><li><a shape="rect" class="external-link"
href="https://git-wip-us.apache.org/repos/asf?p=struts.git;a=tree;h=refs/heads/develop;hb=develop">Source
Code Repository</a></li></ul><div><span style="font-size: 24.0px;line-height:
30.0px;"><br clear="none"></span></div><div><span style="font-size:
24.0px;line-height: 30.0px;background-color: rgb(245,245,245);"><br
clear="none"></span></div></div>
</div>
Added:
websites/production/struts/content/release/2.3.x/docs/version-notes-2319.html
==============================================================================
---
websites/production/struts/content/release/2.3.x/docs/version-notes-2319.html
(added)
+++
websites/production/struts/content/release/2.3.x/docs/version-notes-2319.html
Fri Nov 14 07:43:54 2014
@@ -0,0 +1,174 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<html>
+<head>
+ <link type="text/css" rel="stylesheet"
href="https://struts.apache.org/css/default.css">
+ <style type="text/css">
+ .dp-highlighter {
+ width:95% !important;
+ }
+ </style>
+ <style type="text/css">
+ .footer {
+ background-image:
url('https://cwiki.apache.org/confluence/images/border/border_bottom.gif');
+ background-repeat: repeat-x;
+ background-position: left top;
+ padding-top: 4px;
+ color: #666;
+ }
+ </style>
+ <link href='http://struts.apache.org/highlighter/style/shCoreStruts.css'
rel='stylesheet' type='text/css' />
+ <link href='http://struts.apache.org/highlighter/style/shThemeStruts.css'
rel='stylesheet' type='text/css' />
+ <script src='http://struts.apache.org/highlighter/js/shCore.js'
type='text/javascript'></script>
+ <script src="http://struts.apache.org/highlighter/js/shBrushPlain.js"
type="text/javascript"></script>
+ <script src="http://struts.apache.org/highlighter/js/shBrushXml.js"
type="text/javascript"></script>
+ <script src="http://struts.apache.org/highlighter/js/shBrushJava.js"
type="text/javascript"></script>
+ <script src="http://struts.apache.org/highlighter/js/shBrushJScript.js"
type="text/javascript"></script>
+ <script src="http://struts.apache.org/highlighter/js/shBrushGroovy.js"
type="text/javascript"></script>
+ <script src="http://struts.apache.org/highlighter/js/shBrushBash.js"
type="text/javascript"></script>
+ <script type="text/javascript">
+ SyntaxHighlighter.defaults['toolbar'] = false;
+ SyntaxHighlighter.all();
+ </script>
+ <script type="text/javascript" language="javascript">
+ var hide = null;
+ var show = null;
+ var children = null;
+
+ function init() {
+ /* Search form initialization */
+ var form = document.forms['search'];
+ if (form != null) {
+ form.elements['domains'].value = location.hostname;
+ form.elements['sitesearch'].value = location.hostname;
+ }
+
+ /* Children initialization */
+ hide = document.getElementById('hide');
+ show = document.getElementById('show');
+ children = document.all != null ?
+ document.all['children'] :
+ document.getElementById('children');
+ if (children != null) {
+ children.style.display = 'none';
+ show.style.display = 'inline';
+ hide.style.display = 'none';
+ }
+ }
+
+ function showChildren() {
+ children.style.display = 'block';
+ show.style.display = 'none';
+ hide.style.display = 'inline';
+ }
+
+ function hideChildren() {
+ children.style.display = 'none';
+ show.style.display = 'inline';
+ hide.style.display = 'none';
+ }
+ </script>
+ <title>Version Notes 2.3.19</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="migration-guide.html">Migration Guide</a> > <a
href="version-notes-2319.html">Version Notes 2.3.19</a>
+ </td>
+ <td align="right" valign="middle" nowrap>
+ <form name="search" action="http://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">Version
Notes 2.3.19</div>
+
+ <div class="greynavbar" align="right" style="padding: 2px 10px;
margin: 0px;">
+ <a
href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=40506670">
+ <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=40506670">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=40506670">
+ <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=40506670">Add
Page</a>
+
+ <a
href="https://cwiki.apache.org/confluence/pages/createblogpost.action?spaceKey=WW&fromPageId=40506670">
+ <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=40506670">Add
News</a>
+ </div>
+ </div>
+
+ <div class="pagecontent">
+ <div class="wiki-content">
+ <div id="ConfluenceContent"><p><img class="emoticon emoticon-tick"
src="https://cwiki.apache.org/confluence/s/en_GB-1988229788/4109/76e0dbb30bc8580e459c201f3535d84f9283a9ac.1/_/images/icons/emoticons/check.png"
data-emoticon-name="tick" alt="(tick)"> These are the notes for the Struts
2.3.19 distribution.</p><p><img class="emoticon emoticon-tick"
src="https://cwiki.apache.org/confluence/s/en_GB-1988229788/4109/76e0dbb30bc8580e459c201f3535d84f9283a9ac.1/_/images/icons/emoticons/check.png"
data-emoticon-name="tick" alt="(tick)"> For prior notes in this release
series, see <a shape="rect" href="version-notes-23161.html">Version Notes
2.3.16.1</a></p><ul><li>If you are a Maven user, you might want to get started
using the <a shape="rect" href="struts-2-maven-archetypes.html">Maven
Archetype</a>.</li><li>Another quick-start entry point is the
<strong>blank</strong> application. Rename and deploy the WAR as a starting
point for your own development.</li></ul><div class="code p
anel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl"
style="border-bottom-width: 1px;"><b>Maven Dependency</b></div><div
class="codeContent panelContent pdl">
+<script class="theme: Default; brush: xml; gutter: false"
type="syntaxhighlighter"><![CDATA[<dependency>
+ <groupId>org.apache.struts</groupId>
+ <artifactId>struts2-core</artifactId>
+ <version>2.3.19</version>
+</dependency>
+]]></script>
+</div></div><p>You can also use Struts Archetype Catalog like below</p><div
class="code panel pdl" style="border-width: 1px;"><div class="codeHeader
panelHeader pdl" style="border-bottom-width: 1px;"><b>Struts Archetype
Catalog</b></div><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: text; gutter: false"
type="syntaxhighlighter"><![CDATA[mvn archetype:generate
-DarchetypeCatalog=http://struts.apache.org/]]></script>
+</div></div><div class="code panel pdl" style="border-width: 1px;"><div
class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>Staging
Repository</b></div><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: xml; gutter: false"
type="syntaxhighlighter"><![CDATA[<repositories>
+ <repository>
+ <id>apache.nexus</id>
+ <name>ASF Nexus Staging</name>
+
<url>https://repository.apache.org/content/groups/staging/</url>
+ </repository>
+</repositories>]]></script>
+</div></div><h2 id="VersionNotes2.3.19-InternalChanges">Internal
Changes</h2><ul><li><img class="emoticon emoticon-warning"
src="https://cwiki.apache.org/confluence/s/en_GB-1988229788/4109/76e0dbb30bc8580e459c201f3535d84f9283a9ac.1/_/images/icons/emoticons/warning.png"
data-emoticon-name="warning" alt="(warning)"> Merged security fixes from
version 2.3.16.1, 2.3.16.2, 2.3.16.3</li><li><img class="emoticon
emoticon-warning"
src="https://cwiki.apache.org/confluence/s/en_GB-1988229788/4109/76e0dbb30bc8580e459c201f3535d84f9283a9ac.1/_/images/icons/emoticons/warning.png"
data-emoticon-name="warning" alt="(warning)"> Extended existing security
mechanism to block access to given Java packages and Classes, see <a
shape="rect" class="external-link"
href="https://github.com/apache/struts/pull/11" rel="nofollow">#11</a> or
read <a shape="rect"
href="security.html#Security-Internalsecuritymechanism">Internal security
mechanism</a></li><li>Collection Parameters for Redir
ectResults, <a shape="rect" class="external-link"
href="https://issues.apache.org/jira/browse/WW-4224">WW-4224</a></li><li>Make
ParametersInterceptor supports chinese in hash key by default, <a shape="rect"
class="external-link"
href="https://issues.apache.org/jira/browse/WW-4250">WW-4250</a></li><li>themes.properties
can be loaded using ServletContext allows to put <code>template</code> folder
under WEB-INF or on classpath, <a shape="rect" class="external-link"
href="https://issues.apache.org/jira/browse/WW-4260">WW-4260</a></li><li><span>New
tag datetextfield, <a shape="rect" class="external-link"
href="https://issues.apache.org/jira/browse/WW-3493">WW-3493</a></span></li><li><span>Only
valid Ognl expressions are cached, <a shape="rect" class="external-link"
href="https://issues.apache.org/jira/browse/WW-4146">WW-4146</a></span></li><li><span>CustomTextProvider
can be used for validation errors of model driven actions, <a shape="rect"
class="external-link" href="https://issues.apa
che.org/jira/browse/WW-4202">WW-4202</a></span></li><li><span>datetimepicker's
label fixed, <a shape="rect" class="external-link"
href="https://issues.apache.org/jira/browse/WW-4254">WW-4254</a></span></li><li><span>PropertiesJudge<span> removed
and properties are checked
in <code>SecurityMemberAccess</code></span></span>, <a shape="rect"
class="external-link"
href="https://issues.apache.org/jira/browse/WW-4257">WW-4257</a></li><li>resource
reloading works in IBM JVM, <a shape="rect" class="external-link"
href="https://issues.apache.org/jira/browse/WW-4266">WW-4266</a></li><li>default
reloading settings were removed from <code>default.properties</code>, <a
shape="rect" class="external-link"
href="https://issues.apache.org/jira/browse/WW-4267">WW-4267</a></li><li><img
class="emoticon emoticon-warning"
src="https://cwiki.apache.org/confluence/s/en_GB-1988229788/4109/76e0dbb30bc8580e459c201f3535d84f9283a9ac.1/_/images/icons/emoticons/warning.png"
data-emoticon-name="warn
ing" alt="(warning)"> commons-fileupload library upgraded to version
1.3.1 to fix potential security vulnerability, <a shape="rect"
class="external-link"
href="https://issues.apache.org/jira/browse/WW-4286">WW-4286</a></li><li>The <code>scheme</code>
attribute accepts expressions in <code>s:url</code> tag, <a shape="rect"
class="external-link"
href="https://issues.apache.org/jira/browse/WW-4024">WW-4024</a></li><li>Solves
problem with infinite loop in <code>FastByteArrayOutputStream</code>, <a
shape="rect" class="external-link"
href="https://issues.apache.org/jira/browse/WW-4383">WW-4383</a></li><li><code>LocalizedTextUtil</code>
supports many <code>ClassLoaders</code>, <a shape="rect"
class="external-link"
href="https://issues.apache.org/jira/browse/WW-4379">WW-4379</a></li><li>Bill
of Materials pom was introduced, <a shape="rect" class="external-link"
href="https://issues.apache.org/jira/browse/WW-4326">WW-4326</a></li><li><code>debug=browser|console</code
> was migrated to jQuery, <a shape="rect" class="external-link"
> href="https://issues.apache.org/jira/browse/WW-4322">WW-4322</a></li><li><code>struts_dojo.js</code>
> was fixed, <a shape="rect" class="external-link"
> href="https://issues.apache.org/jira/browse/WW-4349">WW-4349</a></li><li>interface <code>org/apache/struts2/views/TagLibrary</code>
> was restored and marked as <code>@Depreacted</code>, <a shape="rect"
> class="external-link"
> href="https://issues.apache.org/jira/browse/WW-4255">WW-4255</a></li><li>and
> many other small improvements, please see the release
> notes</li></ul><p> </p> <div class="aui-message warning shadowed
> information-macro">
+ <span class="aui-icon icon-warning">Icon</span>
+ <div class="message-content">
+ <p>Please read information about new <a
shape="rect" href="security.html#Security-Internalsecuritymechanism">internal
security mechanism</a> introduced with this version, it can have impact on your
application!</p>
+ </div>
+ </div>
+<p> </p><h3 id="VersionNotes2.3.19-IssueDetail">Issue
Detail</h3><ul><li><a shape="rect" class="external-link"
href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311041&version=12319176">JIRA
Release Notes 2.3.19</a></li></ul><h3 id="VersionNotes2.3.19-IssueList">Issue
List</h3><ul><li><a shape="rect" class="external-link"
href="https://issues.apache.org/jira/issues/?filter=12326872">Struts 2.3.19
DONE</a></li><li><a shape="rect" class="external-link"
href="https://issues.apache.org/jira/issues/?filter=12318399">Struts 2.3.x
TODO</a></li></ul><h3 id="VersionNotes2.3.19-Otherresources">Other
resources</h3><ul><li><a shape="rect" class="external-link"
href="http://www.mail-archive.com/commits%40struts.apache.org/"
rel="nofollow">Commit Logs</a></li><li><a shape="rect" class="external-link"
href="https://git-wip-us.apache.org/repos/asf?p=struts.git;a=tree;h=refs/heads/develop;hb=develop">Source
Code Repository</a></li></ul><div><span style="font-size: 24.
0px;line-height: 30.0px;"><br clear="none"></span></div><div><span
style="font-size: 24.0px;line-height: 30.0px;background-color:
rgb(245,245,245);"><br clear="none"></span></div></div>
+ </div>
+
+
+ </div>
+</div>
+<div class="footer">
+ Generated by CXF SiteExporter
+</div>
+</body>
+</html>
\ No newline at end of file