http://git-wip-us.apache.org/repos/asf/struts-site/blob/b16cc4ef/content/docs/parameters-interceptor.html
----------------------------------------------------------------------
diff --git a/content/docs/parameters-interceptor.html 
b/content/docs/parameters-interceptor.html
index 6ccba05..b653cfb 100644
--- a/content/docs/parameters-interceptor.html
+++ b/content/docs/parameters-interceptor.html
@@ -34,20 +34,6 @@ under the License.
             color:                 #666;
         }
     </style>
-    <link href='https://struts.apache.org/highlighter/style/shCoreStruts.css' 
rel='stylesheet' type='text/css' />
-    <link href='https://struts.apache.org/highlighter/style/shThemeStruts.css' 
rel='stylesheet' type='text/css' />
-    <script src='https://struts.apache.org/highlighter/js/shCore.js' 
type='text/javascript'></script>
-    <script src='https://struts.apache.org/highlighter/js/shBrushPlain.js' 
type='text/javascript'></script>
-    <script src='https://struts.apache.org/highlighter/js/shBrushXml.js' 
type='text/javascript'></script>
-    <script src='https://struts.apache.org/highlighter/js/shBrushJava.js' 
type='text/javascript'></script>
-    <script src='https://struts.apache.org/highlighter/js/shBrushJScript.js' 
type='text/javascript'></script>
-    <script src='https://struts.apache.org/highlighter/js/shBrushGroovy.js' 
type='text/javascript'></script>
-    <script src='https://struts.apache.org/highlighter/js/shBrushBash.js' 
type='text/javascript'></script>
-    <script src='https://struts.apache.org/highlighter/js/shBrushCss.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;
@@ -139,11 +125,8 @@ under the License.
 
     <div class="pagecontent">
         <div class="wiki-content">
-            <div id="ConfluenceContent"><p>This interceptor sets all 
parameters on the value stack.</p><p>This interceptor gets all parameters from 
{@link ActionContext#getParameters()} and sets them on the value stack 
by&#160;calling <code>ValueStack#setValue(String, Object)</code>, typically 
resulting in the values submitted in a form&#160;request being applied to an 
action in the value stack. Note that the parameter map must contain a String 
key and&#160;often containers a String[] for the value.</p><p>The interceptor 
takes one parameter named 'ordered'. When set to true action properties are 
guaranteed to be&#160;set top-down which means that top action's properties are 
set first. Then it's subcomponents properties are set.&#160;The reason for this 
order is to enable a 'factory' pattern. For example, let's assume that one has 
an action&#160;that contains a property named <code>modelClass</code>&#160;that 
allows to choose what is the underlying implementation of model.&#160;By as
 suring that <code>modelClass</code>&#160;property is set before any model 
properties are set, it's possible to choose model&#160;implementation during 
<code>action.setModelClass()</code>&#160;call. Similarly it's possible to use 
<code>action.setPrimaryKey()&#160;</code>property set call to actually load the 
model class from persistent storage. Without any assumption on 
parameter&#160;order you have to use patterns like <a shape="rect" 
href="preparable-interface.html">Preparable Interface</a>.</p><p>Because 
parameter names are effectively OGNL statements, it is important that security 
be taken in to account.&#160;This interceptor will not apply any values in the 
parameters map if the expression contains an assignment (=),&#160;multiple 
expressions (,), or references any objects in the context (#). This is all done 
in the <code>#acceptableName(String)</code>&#160;method. In addition to this 
method, if the action being invoked implements 
the&#160;<code>ParameterNameAware</code>&#160;in
 terface, the action will be consulted to determine if the parameter should be 
set.<br clear="none">In addition to these restrictions, a flag ( 
<code>ReflectionContextState#DENY_METHOD_EXECUTION</code>&#160;) is set such 
that&#160;no methods are allowed to be invoked. That means that any expression 
such as 
<code>person.doSomething()</code>&#160;or&#160;<code>person.getName()</code>&#160;will
 be explicitly forbidden. This is needed to make sure that your application is 
not&#160;exposed to attacks by malicious users.</p><p>While this interceptor is 
being invoked, a flag ( 
<code>ReflectionContextState#CREATE_NULL_OBJECTS</code>&#160;) is 
turned&#160;on to ensure that any null reference is automatically created - if 
possible. See the type conversion documentation&#160;and the 
<code>InstantiatingNullHandler</code>&#160;javadocs for more 
information.</p><p>Finally, a third flag ( 
<code>XWorkConverter#REPORT_CONVERSION_ERRORS</code>&#160;) is set that 
indicates any errors when&#160;converti
 ng the the values to their final data type (String[] -&amp;gt; int) an 
unrecoverable error occurred. With this&#160;flag set, the type conversion 
errors will be reported in the action context. See the type conversion 
documentation&#160;and the <code>XWorkConverter</code>&#160;javadocs for more 
information.<br clear="none"><br clear="none">If you are looking for detailed 
logging information about your parameters, turn on 
<code>DEBUG</code>&#160;level logging for this&#160;interceptor. A detailed log 
of all the parameter keys and values will be reported.<br clear="none"><br 
clear="none"></p><div class="confluence-information-macro 
confluence-information-macro-note"><span class="aui-icon aui-icon-small 
aui-iconfont-warning confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>Since XWork 2.0.2, this 
interceptor extends <code>MethodFilterInterceptor</code>, therefore being able 
to deal with <code>excludeMethods</code> / <code>includeMethods</code> p
 arameters. See <a shape="rect" 
href="default-workflow-interceptor.html">Default Workflow Interceptor</a> for 
documentation and examples on how to use this feature.</p></div></div><p>For 
more information on ways to restrict the parameter names allowed, see the 
<code>ParameterNameAware</code>&#160;javadocs.</p><h2 
id="ParametersInterceptor-Parameters">Parameters</h2><ul 
style="list-style-type: square;"><li><code>ordered</code>&#160;- set to true if 
you want the top-down property setter 
behaviour</li><li><code>acceptParamNames</code>&#160;- a comma delimited list 
of regular expressions to describe a whitelist of accepted parameter 
names.&#160;Don't change the default unless you know what you are doing in 
terms of security implications</li><li><code>excludeParams</code>&#160;- a 
comma delimited list of regular expressions to describe a blacklist of not 
allowed parameter names</li><li><code>paramNameMaxLength</code>&#160;- the 
maximum length of parameter names; parameters with longer nam
 es will be ignored; the default is 100 characters</li></ul><h2 
id="ParametersInterceptor-Excludingparameters">Excluding parameters</h2><p>This 
interceptor can be forced to ignore parameters, by setting its 
<em>excludeParams</em> attribute. This attribute accepts a comma separated list 
of regular expressions. When any of these expressions match the name of a 
parameter, such parameter will be ignored by the interceptor. Interceptor 
stacks defined by Struts already exclude some parameters:</p><div class="code 
panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" 
style="border-bottom-width: 1px;"><b>Default List of Parameters 
Excluded</b></div><div class="codeContent panelContent pdl">
-<pre class="brush: html; gutter: false; theme: Default" 
style="font-size:12px;">dojo\..*,^struts\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response)\..*,parameters\...*
-</pre>
-</div></div><p>Below is an example of adding a parameter named submit to the 
list of parameters that should be excluded.</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeHeader panelHeader pdl" 
style="border-bottom-width: 1px;"><b>Setup Interceptor Stack To Exclude submit 
Parameter</b></div><div class="codeContent panelContent pdl">
-<pre class="brush: xml; gutter: false; theme: Default" 
style="font-size:12px;">&lt;interceptors&gt;
+            <div id="ConfluenceContent"><p>This interceptor sets all 
parameters on the value stack.</p><p>This interceptor gets all parameters from 
{@link ActionContext#getParameters()} and sets them on the value stack 
by&#160;calling <code>ValueStack#setValue(String, Object)</code>, typically 
resulting in the values submitted in a form&#160;request being applied to an 
action in the value stack. Note that the parameter map must contain a String 
key and&#160;often containers a String[] for the value.</p><p>The interceptor 
takes one parameter named 'ordered'. When set to true action properties are 
guaranteed to be&#160;set top-down which means that top action's properties are 
set first. Then it's subcomponents properties are set.&#160;The reason for this 
order is to enable a 'factory' pattern. For example, let's assume that one has 
an action&#160;that contains a property named <code>modelClass</code>&#160;that 
allows to choose what is the underlying implementation of model.&#160;By as
 suring that <code>modelClass</code>&#160;property is set before any model 
properties are set, it's possible to choose model&#160;implementation during 
<code>action.setModelClass()</code>&#160;call. Similarly it's possible to use 
<code>action.setPrimaryKey()&#160;</code>property set call to actually load the 
model class from persistent storage. Without any assumption on 
parameter&#160;order you have to use patterns like <a shape="rect" 
href="preparable-interface.html">Preparable Interface</a>.</p><p>Because 
parameter names are effectively OGNL statements, it is important that security 
be taken in to account.&#160;This interceptor will not apply any values in the 
parameters map if the expression contains an assignment (=),&#160;multiple 
expressions (,), or references any objects in the context (#). This is all done 
in the <code>#acceptableName(String)</code>&#160;method. In addition to this 
method, if the action being invoked implements 
the&#160;<code>ParameterNameAware</code>&#160;in
 terface, the action will be consulted to determine if the parameter should be 
set.<br clear="none">In addition to these restrictions, a flag ( 
<code>ReflectionContextState#DENY_METHOD_EXECUTION</code>&#160;) is set such 
that&#160;no methods are allowed to be invoked. That means that any expression 
such as 
<code>person.doSomething()</code>&#160;or&#160;<code>person.getName()</code>&#160;will
 be explicitly forbidden. This is needed to make sure that your application is 
not&#160;exposed to attacks by malicious users.</p><p>While this interceptor is 
being invoked, a flag ( 
<code>ReflectionContextState#CREATE_NULL_OBJECTS</code>&#160;) is 
turned&#160;on to ensure that any null reference is automatically created - if 
possible. See the type conversion documentation&#160;and the 
<code>InstantiatingNullHandler</code>&#160;javadocs for more 
information.</p><p>Finally, a third flag ( 
<code>XWorkConverter#REPORT_CONVERSION_ERRORS</code>&#160;) is set that 
indicates any errors when&#160;converti
 ng the the values to their final data type (String[] -&amp;gt; int) an 
unrecoverable error occurred. With this&#160;flag set, the type conversion 
errors will be reported in the action context. See the type conversion 
documentation&#160;and the <code>XWorkConverter</code>&#160;javadocs for more 
information.<br clear="none"><br clear="none">If you are looking for detailed 
logging information about your parameters, turn on 
<code>DEBUG</code>&#160;level logging for this&#160;interceptor. A detailed log 
of all the parameter keys and values will be reported.<br clear="none"><br 
clear="none"></p><rich-text-body><p>Since XWork 2.0.2, this interceptor extends 
<code>MethodFilterInterceptor</code>, therefore being able to deal with 
<code>excludeMethods</code> / <code>includeMethods</code> parameters. See <a 
shape="rect" href="default-workflow-interceptor.html">Default Workflow 
Interceptor</a> for documentation and examples on how to use this 
feature.</p></rich-text-body><p>For more information
  on ways to restrict the parameter names allowed, see the 
<code>ParameterNameAware</code>&#160;javadocs.</p><h2 
id="ParametersInterceptor-Parameters">Parameters</h2><ul 
style="list-style-type: square;"><li><code>ordered</code>&#160;- set to true if 
you want the top-down property setter 
behaviour</li><li><code>acceptParamNames</code>&#160;- a comma delimited list 
of regular expressions to describe a whitelist of accepted parameter 
names.&#160;Don't change the default unless you know what you are doing in 
terms of security implications</li><li><code>excludeParams</code>&#160;- a 
comma delimited list of regular expressions to describe a blacklist of not 
allowed parameter names</li><li><code>paramNameMaxLength</code>&#160;- the 
maximum length of parameter names; parameters with longer names will be 
ignored; the default is 100 characters</li></ul><h2 
id="ParametersInterceptor-Excludingparameters">Excluding parameters</h2><p>This 
interceptor can be forced to ignore parameters, by setting 
 its <em>excludeParams</em> attribute. This attribute accepts a comma separated 
list of regular expressions. When any of these expressions match the name of a 
parameter, such parameter will be ignored by the interceptor. Interceptor 
stacks defined by Struts already exclude some parameters:</p><parameter 
ac:name="title">Default List of Parameters Excluded</parameter><parameter 
ac:name="">HTML</parameter><plain-text-body>dojo\..*,^struts\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response)\..*,parameters\...*
+</plain-text-body><p>Below is an example of adding a parameter named submit to 
the list of parameters that should be excluded.</p><parameter 
ac:name="title">Setup Interceptor Stack To Exclude submit 
Parameter</parameter><parameter 
ac:name="">XML</parameter><plain-text-body>&lt;interceptors&gt;
   &lt;interceptor-stack name="appDefault"&gt;
     &lt;interceptor-ref name="defaultStack"&gt;
        &lt;param name="exception.logEnabled"&gt;true&lt;/param&gt;
@@ -154,21 +137,16 @@ under the License.
 &lt;/interceptors&gt;
                
 &lt;default-interceptor-ref name="appDefault" /&gt;
-</pre>
-</div></div><h2 id="ParametersInterceptor-ExtendingtheInterceptor">Extending 
the Interceptor</h2><p>The best way to add behavior to this interceptor is to 
utilize the <code>ParameterNameAware</code>&#160;interface in 
your&#160;actions. However, if you wish to apply a global rule that isn't 
implemented in your action, then you could extend&#160;this interceptor and 
override the <code>#acceptableName(String)</code>&#160;method.</p><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>Using 
<code>ParameterNameAware</code> could be dangerous as 
<code>ParameterNameAware#acceptableParameterName(String)</code> takes 
precedence over <code>ParametersInterceptor</code> which means if 
<code>ParametersInterceptor</code> excluded given parameter name you can accept 
it with <code>ParameterNameAware#acceptableParameterName(Stri
 ng)</code>.</p><p>The best idea is to define very tight restrictions with 
<code>ParametersInterceptor</code> and relax them per action with 
<code>ParameterNameAware#acceptableParameterName(String)</code></p></div></div><h2
 id="ParametersInterceptor-Warningonmissingparameters">Warning on missing 
parameters</h2><p>When there is no setter for given parameter name, a warning 
message like below will be logged in devMode:</p><div class="preformatted 
panel" style="border-width: 1px;"><div class="preformattedContent panelContent">
-<pre>SEVERE: Developer Notification (set struts.devMode to false to disable 
this message):
+</plain-text-body><h2 
id="ParametersInterceptor-ExtendingtheInterceptor">Extending the 
Interceptor</h2><p>The best way to add behavior to this interceptor is to 
utilize the <code>ParameterNameAware</code>&#160;interface in 
your&#160;actions. However, if you wish to apply a global rule that isn't 
implemented in your action, then you could extend&#160;this interceptor and 
override the 
<code>#acceptableName(String)</code>&#160;method.</p><rich-text-body><p>Using 
<code>ParameterNameAware</code> could be dangerous as 
<code>ParameterNameAware#acceptableParameterName(String)</code> takes 
precedence over <code>ParametersInterceptor</code> which means if 
<code>ParametersInterceptor</code> excluded given parameter name you can accept 
it with 
<code>ParameterNameAware#acceptableParameterName(String)</code>.</p><p>The best 
idea is to define very tight restrictions with 
<code>ParametersInterceptor</code> and relax them per action with 
<code>ParameterNameAware#acceptableParameterName(String)</code
 ></p></rich-text-body><h2 
 >id="ParametersInterceptor-Warningonmissingparameters">Warning on missing 
 >parameters</h2><p>When there is no setter for given parameter name, a warning 
 >message like below will be logged in devMode:</p><plain-text-body>SEVERE: 
 >Developer Notification (set struts.devMode to false to disable this message):
 Unexpected Exception caught setting 'search' on 'class demo.ItemSearchAction: 
Error setting expression 'search' with value ['search', ]
 Error setting expression 'search' with value ['search', ] - [unknown location]
        at 
com.opensymphony.xwork2.ognl.OgnlValueStack.handleRuntimeException(OgnlValueStack.java:201)
        at 
com.opensymphony.xwork2.ognl.OgnlValueStack.setValue(OgnlValueStack.java:178)
        at 
com.opensymphony.xwork2.ognl.OgnlValueStack.setParameter(OgnlValueStack.java:152)
-</pre>
-</div></div><p>Thus is expected behaviour to allow developer to spot missing 
setter or typo in either parameter name or setter.</p><h2 
id="ParametersInterceptor-Examples">Examples</h2><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;">&lt;action name="someAction" 
class="com.examples.SomeAction"&gt;
+</plain-text-body><p>Thus is expected behaviour to allow developer to spot 
missing setter or typo in either parameter name or setter.</p><h2 
id="ParametersInterceptor-Examples">Examples</h2><plain-text-body>&lt;action 
name="someAction" class="com.examples.SomeAction"&gt;
   &lt;interceptor-ref name="params"/&gt;
   &lt;result name="success"&gt;good_result.ftl&lt;/result&gt;
-&lt;/action&gt;</pre>
-</div></div></div>
+&lt;/action&gt;</plain-text-body></div>
         </div>
 
         

http://git-wip-us.apache.org/repos/asf/struts-site/blob/b16cc4ef/content/docs/password.html
----------------------------------------------------------------------
diff --git a/content/docs/password.html b/content/docs/password.html
index bcb1f2c..466672e 100644
--- a/content/docs/password.html
+++ b/content/docs/password.html
@@ -152,7 +152,7 @@ under the License.
 <h2 id="password-Examples">Examples</h2>
 
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<script class="brush: plain; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
+<script class="brush: plain; gutter: false; theme: Confluence" 
type="syntaxhighlighter"><![CDATA[
 &lt;p&gt;
 In this example, a password control is displayed. For the label, we are 
calling ActionSupport&#39;s getText() to
 retrieve password label from a resource bundle.
@@ -160,7 +160,7 @@ retrieve password label from a resource bundle.
 ]]></script>
 </div></div>
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<script class="brush: xml; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
+<script class="brush: xml; gutter: false; theme: Confluence" 
type="syntaxhighlighter"><![CDATA[
 &lt;s:password label=&quot;%{text(&#39;password&#39;)}&quot; 
name=&quot;password&quot; size=&quot;10&quot; maxlength=&quot;15&quot; /&gt;
 ]]></script>
 </div></div></div>

http://git-wip-us.apache.org/repos/asf/struts-site/blob/b16cc4ef/content/docs/plugins.html
----------------------------------------------------------------------
diff --git a/content/docs/plugins.html b/content/docs/plugins.html
index d21f77b..c1f9137 100644
--- a/content/docs/plugins.html
+++ b/content/docs/plugins.html
@@ -34,20 +34,6 @@ under the License.
             color:                 #666;
         }
     </style>
-    <link href='https://struts.apache.org/highlighter/style/shCoreStruts.css' 
rel='stylesheet' type='text/css' />
-    <link href='https://struts.apache.org/highlighter/style/shThemeStruts.css' 
rel='stylesheet' type='text/css' />
-    <script src='https://struts.apache.org/highlighter/js/shCore.js' 
type='text/javascript'></script>
-    <script src='https://struts.apache.org/highlighter/js/shBrushPlain.js' 
type='text/javascript'></script>
-    <script src='https://struts.apache.org/highlighter/js/shBrushXml.js' 
type='text/javascript'></script>
-    <script src='https://struts.apache.org/highlighter/js/shBrushJava.js' 
type='text/javascript'></script>
-    <script src='https://struts.apache.org/highlighter/js/shBrushJScript.js' 
type='text/javascript'></script>
-    <script src='https://struts.apache.org/highlighter/js/shBrushGroovy.js' 
type='text/javascript'></script>
-    <script src='https://struts.apache.org/highlighter/js/shBrushBash.js' 
type='text/javascript'></script>
-    <script src='https://struts.apache.org/highlighter/js/shBrushCss.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;
@@ -139,19 +125,11 @@ under the License.
 
     <div class="pagecontent">
         <div class="wiki-content">
-            <div id="ConfluenceContent"><p>Struts 2 plugins contain classes 
and configuration that extend, replace, or add to existing Struts framework 
functionality. A plugin can be installed by adding its JAR file to the 
application's class path, in addition to the JAR files to fulfill whatever 
dependencies the plugin itself may have. To configure the plugin, the JAR 
should contain a <code>struts-plugin.xml</code> file, which follows the same 
format as an ordinary <code>struts.xml</code> file.</p><p>Since a plugin can 
contain the <code>struts-plugin.xml</code> file, it has the ability 
to:</p><ul><li>Define new packages with results, interceptors, and/or 
actions</li><li>Override framework constants</li><li>Introduce new extension 
point implementation classes</li></ul><p>Many popular but optional features of 
the framework are distributed as plugins. An application can retain all the 
plugins provided with the distribution, or just include the ones it uses. 
Plugins can be used to orga
 nize application code or to distribute code to third-parties.</p><div 
class="confluence-information-macro confluence-information-macro-note"><span 
class="aui-icon aui-icon-small aui-iconfont-warning 
confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>Packages defined in a plugin can 
have parent packages that are defined in another plugin. Plugins may define 
configuration elements with classes not contained in the plugin. Any classes 
not included in the plugin's JAR must be on the application's classpath at 
runtime. As from Struts 2.3.5</p></div></div><p>The framework loads its default 
configuration first, then any plugin configuration files found in others JARs 
on the classpath, and finally the "bootstrap" 
<code>struts.xml</code>.</p><ol><li><code>struts-default.xml</code> (bundled in 
the Core JAR)</li><li><code>struts-plugin.xml</code> (as many as can be found 
in other JARs)</li><li><code>struts.xml</code> (provided by your 
application)</li><
 /ol><p>Since the <code>struts.xml</code> file is always loaded last, it can 
make use of any resources provided by the plugins bundled with the 
distribution, or any other plugins available to an application.</p><h2 
id="Plugins-Staticresources">Static resources</h2><p>To include static 
resources in your plugins add them under "/static" in your jar. And include 
them in your page using "/struts" as the path, like in the following 
example:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
-<pre class="brush: html; gutter: false; theme: Default" 
style="font-size:12px;">Assuming /static/main.css is inside a plugin jar, to 
add it to the page:
+            <div id="ConfluenceContent"><p>Struts 2 plugins contain classes 
and configuration that extend, replace, or add to existing Struts framework 
functionality. A plugin can be installed by adding its JAR file to the 
application's class path, in addition to the JAR files to fulfill whatever 
dependencies the plugin itself may have. To configure the plugin, the JAR 
should contain a <code>struts-plugin.xml</code> file, which follows the same 
format as an ordinary <code>struts.xml</code> file.</p><p>Since a plugin can 
contain the <code>struts-plugin.xml</code> file, it has the ability 
to:</p><ul><li>Define new packages with results, interceptors, and/or 
actions</li><li>Override framework constants</li><li>Introduce new extension 
point implementation classes</li></ul><p>Many popular but optional features of 
the framework are distributed as plugins. An application can retain all the 
plugins provided with the distribution, or just include the ones it uses. 
Plugins can be used to orga
 nize application code or to distribute code to 
third-parties.</p><rich-text-body><p>Packages defined in a plugin can have 
parent packages that are defined in another plugin. Plugins may define 
configuration elements with classes not contained in the plugin. Any classes 
not included in the plugin's JAR must be on the application's classpath at 
runtime. As from Struts 2.3.5</p></rich-text-body><p>The framework loads its 
default configuration first, then any plugin configuration files found in 
others JARs on the classpath, and finally the "bootstrap" 
<code>struts.xml</code>.</p><ol><li><code>struts-default.xml</code> (bundled in 
the Core JAR)</li><li><code>struts-plugin.xml</code> (as many as can be found 
in other JARs)</li><li><code>struts.xml</code> (provided by your 
application)</li></ol><p>Since the <code>struts.xml</code> file is always 
loaded last, it can make use of any resources provided by the plugins bundled 
with the distribution, or any other plugins available to an applicat
 ion.</p><h2 id="Plugins-Staticresources">Static resources</h2><p>To include 
static resources in your plugins add them under "/static" in your jar. And 
include them in your page using "/struts" as the path, like in the following 
example:</p><parameter ac:name="">html</parameter><plain-text-body>Assuming 
/static/main.css is inside a plugin jar, to add it to the page:
 
 &lt;@s.url value="/struts/main.css" var="css" /&gt;
 &lt;link rel="stylesheet" type="text/css" href="%{#css}" /&gt;
-</pre>
-</div></div><p>Read also <a shape="rect" class="external-link" 
href="http://struts.apache.org/2.x/struts2-core/apidocs/org/apache/struts2/dispatcher/StaticContentLoader.html";>StaticContentLoader
 JavaDoc</a>.</p><h2 id="Plugins-ExtensionPoints">Extension 
Points</h2><p>Extension points allow a plugin to override a key class in the 
Struts framework with an alternate implementation. For example, a plugin could 
provide a new class to create Action classes or map requests to 
Actions.</p><p>The following extension points are available in Struts 
2:</p><p><table border="1" summary=""><tr><th colspan="1" 
rowspan="1">Type</th><th colspan="1" rowspan="1">Property</th><th colspan="1" 
rowspan="1">Scope</th><th colspan="1" rowspan="1">Description</th></tr><tr><td 
colspan="1" rowspan="1">com.opensymphony.xwork2.ObjectFactory</td><td 
colspan="1" rowspan="1">struts.objectFactory</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Creates actions, results, 
and interceptors</td></
 tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.factory.ActionFactory</td><td colspan="1" 
rowspan="1">struts.objectFactory.actionFactory</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Dedicated factory used to 
create Actions, you can implement/extend existing one instead of defining new 
ObjectFactory</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.factory.ResultFactory</td><td colspan="1" 
rowspan="1">struts.objectFactory.resultFactory</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Dedicated factory used to 
create Results, you can implement/extend existing one instead of defining new 
ObjectFactory</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.factory.InterceptorFactory</td><td 
colspan="1" rowspan="1">struts.objectFactory.interceptorFactory</td><td 
colspan="1" rowspan="1">singleton</td><td colspan="1" rowspan="1">Dedicated 
factory used to create Interceptors, you can implement/extend e
 xisting one instead of defining new ObjectFactory</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.factory.ConverterFactory</td><td 
colspan="1" rowspan="1">struts.objectFactory.converterFactory</td><td 
colspan="1" rowspan="1">singleton</td><td colspan="1" rowspan="1">Dedicated 
factory used to create TypeConverters, you can implement/extend existing one 
instead of defining new ObjectFactory</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.factory.ValidatorFactory</td><td 
colspan="1" rowspan="1">struts.objectFactory.validatorFactory</td><td 
colspan="1" rowspan="1">singleton</td><td colspan="1" rowspan="1">Dedicated 
factory used to create Validators, you can implement/extend existing one 
instead of defining new ObjectFactory</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.ActionProxyFactory</td><td colspan="1" 
rowspan="1">struts.actionProxyFactory</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Creates the Actio
 nProxy</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.util.ObjectTypeDeterminer</td><td 
colspan="1" rowspan="1">struts.objectTypeDeterminer</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Determines what the key 
and element class of a Map or Collection should be</td></tr><tr><td colspan="1" 
rowspan="1">org.apache.struts2.dispatcher.mapper.ActionMapper</td><td 
colspan="1" rowspan="1">struts.mapper.class</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Determines the 
ActionMapping from a request and a URI from an ActionMapping</td></tr><tr><td 
colspan="1" 
rowspan="1">org.apache.struts2.dispatcher.multipart.MultiPartRequest</td><td 
colspan="1" rowspan="1">struts.multipart.parser</td><td colspan="1" 
rowspan="1">per request</td><td colspan="1" rowspan="1">Parses a multipart 
request (file upload)</td></tr><tr><td colspan="1" 
rowspan="1">org.apache.struts2.views.freemarker.FreemarkerManager</td><td 
colspan="1" rowspan="1"
 >struts.freemarker.manager.classname</td><td colspan="1" 
 >rowspan="1">singleton</td><td colspan="1" rowspan="1">Loads and processes 
 >Freemarker templates</td></tr><tr><td colspan="1" 
 >rowspan="1">org.apache.struts2.views.velocity.VelocityManager</td><td 
 >colspan="1" rowspan="1">struts.velocity.manager.classname</td><td colspan="1" 
 >rowspan="1">singleton</td><td colspan="1" rowspan="1">Loads and processes 
 >Velocity templates</td></tr><tr><td colspan="1" 
 >rowspan="1">com.opensymphony.xwork2.validator.ActionValidatorManager</td><td 
 >colspan="1" rowspan="1">struts.actionValidatorManager</td><td colspan="1" 
 >rowspan="1">singleton</td><td colspan="1" rowspan="1">Main interface for 
 >validation managers (regular and annotation based).  Handles both the loading 
 >of
-        configuration and the actual validation (since 2.1)</td></tr><tr><td 
colspan="1" rowspan="1">com.opensymphony.xwork2.util.ValueStackFactory</td><td 
colspan="1" rowspan="1">struts.valueStackFactory</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Creates value stacks 
(since 2.1)</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.reflection.ReflectionProvider</td><td 
colspan="1" rowspan="1">struts.reflectionProvider</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Provides reflection 
services, key place to plug in a custom expression language (since 
2.1)</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.reflection.ReflectionContextFactory</td><td 
colspan="1" rowspan="1">struts.reflectionContextFactory</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Creates reflection 
context maps used for reflection and expression language operations (since 
2.1)</td></tr><tr><td colspan="1"
  rowspan="1">com.opensymphony.xwork2.config.PackageProvider</td><td 
colspan="1" rowspan="1">N/A</td><td colspan="1" rowspan="1">singleton</td><td 
colspan="1" rowspan="1">All beans registered as PackageProvider implementations 
will be automatically included in configuration building (since 
2.1)</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.util.PatternMatcher</td><td colspan="1" 
rowspan="1">struts.patternMatcher</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Matches patterns, such as 
action names, generally used in configuration (since 2.1)</td></tr><tr><td 
colspan="1" 
rowspan="1">org.apache.struts2.views.dispatcher.DefaultStaticContentLoader</td><td
 colspan="1" rowspan="1">struts.staticContentLoader</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Loads static resources 
(since 2.1)</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.conversion.impl.XWorkConverter</td><td 
colspan="1" rowspan="1">strut
 s.xworkConverter</td><td colspan="1" rowspan="1">singleton</td><td colspan="1" 
rowspan="1">Handles conversion logic and allows to load custom converters per 
class or per action</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.TextProvider</td><td colspan="1" 
rowspan="1">struts.xworkTextProvider</td><td colspan="1" 
rowspan="1">default</td><td colspan="1" rowspan="1">Allows provide custom 
TextProvider for whole application</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.LocaleProvider</td><td colspan="1" 
rowspan="1">struts.localeProvider</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">DEPRECATED! Allows 
provide custom TextProvider for whole application - instead this endpoint use 
<b>struts.localeProviderFactory</b></td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.LocaleProviderFactory</td><td colspan="1" 
rowspan="1">struts.localeProviderFactory</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowsp
 an="1">Allows provide custom LocaleProvider for whole 
application</td></tr><tr><td colspan="1" 
rowspan="1">org.apache.struts2.components.UrlRenderer</td><td colspan="1" 
rowspan="1">struts.urlRenderer</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Allows provide custom 
implementation of environment specific URL rendering/creating 
class</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.UnknownHandlerManager</td><td colspan="1" 
rowspan="1">struts.unknownHandlerManager</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Implementation of this 
interface allows handle logic of unknown Actions, Methods or 
Results</td></tr><tr><td colspan="1" 
rowspan="1">org.apache.struts2.views.util.UrlHelper</td><td colspan="1" 
rowspan="1">struts.view.urlHelper</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Helper class used with 
URLRenderer to provide exact logic for building URLs</td></tr><tr><td 
colspan="1" rowsp
 an="1">com.opensymphony.xwork2.FileManagerFactory</td><td colspan="1" 
rowspan="1">struts.fileManagerFactory</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Used to create 
FileManager instance to access files on the File System as also to monitor if 
reload is needed,
-    can be implemented / overwritten to meet specific an application server 
needs
-    </td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.conversion.impl.CollectionConverter</td><td 
colspan="1" rowspan="1">struts.converter.collection</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Converter used to convert 
any object to Collection and back</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.conversion.impl.ArrayConverter</td><td 
colspan="1" rowspan="1">struts.converter.array</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Converter used to convert 
any object to Array and back</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.conversion.impl.DateConverter</td><td 
colspan="1" rowspan="1">struts.converter.date</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Converter used to convert 
any object to Date and back</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.conversion.impl.NumberConverter</td><td 
colspan="1" rowspan="1">struts.conv
 erter.number</td><td colspan="1" rowspan="1">singleton</td><td colspan="1" 
rowspan="1">Converter used to convert any object to Number and 
back</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.conversion.impl.StringConverter</td><td 
colspan="1" rowspan="1">struts.converter.string</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Converter used to convert 
any object to String and back</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.conversion.ConversionPropertiesProcessor</td><td
 colspan="1" rowspan="1">struts.conversion.properties.processor</td><td 
colspan="1" rowspan="1">singleton</td><td colspan="1" rowspan="1">Process 
Properties to create converters</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.conversion.ConversionPropertiesProcessor</td><td
 colspan="1" rowspan="1">struts.converter.file.processor</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Process 
&lt;class&gt;-conversion.pro
 perties file create converters&lt;/class&gt;</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.conversion.ConversionAnnotationProcessor</td><td
 colspan="1" rowspan="1">struts.converter.annotation.processor</td><td 
colspan="1" rowspan="1">singleton</td><td colspan="1" rowspan="1">Process 
TypeConversion annotation to create converters</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.conversion.TypeConverterCreator</td><td 
colspan="1" rowspan="1">struts.converter.creator</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Creates user 
converters</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.conversion.TypeConverterHolder</td><td 
colspan="1" rowspan="1">struts.converter.holder</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Holds user converters' 
instances</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.util.TextParser</td><td colspan="1" 
rowspan="1">struts.expression.parse
 r</td><td colspan="1" rowspan="1">singleton</td><td colspan="1" 
rowspan="1">Used to parse expressions like ${foo.bar} or %{bar.foo} but it is 
up tp the TextParser's
-        implementation what kind of opening char to use (#, $, %, 
etc)</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.ExcludedPatternsChecker</td><td colspan="1" 
rowspan="1">struts.excludedPatterns.checker</td><td colspan="1" 
rowspan="1">request</td><td colspan="1" rowspan="1">Used across different 
interceptors to check if given string matches one of the excluded 
patterns</td></tr><tr><td colspan="1" 
rowspan="1">com.opensymphony.xwork2.AcceptedPatternsChecker</td><td colspan="1" 
rowspan="1">struts.acceptedPatterns.checker</td><td colspan="1" 
rowspan="1">request</td><td colspan="1" rowspan="1">Used across different 
interceptors to check if given string matches one of the accepted 
patterns</td></tr><tr><td colspan="1" 
rowspan="1">org.apache.struts2.util.ContentTypeMatcher</td><td colspan="1" 
rowspan="1">struts.contentTypeMatcher</td><td colspan="1" 
rowspan="1">singleton</td><td colspan="1" rowspan="1">Matches content type of 
uploaded files (since 2.3.22)</td></tr><tr
 ><td colspan="1" 
 >rowspan="1">com.opensymphony.xwork2.LocalizedTextProvider</td><td colspan="1" 
 >rowspan="1">struts.localizedTextProvider</td><td colspan="1" 
 >rowspan="1">singleton</td><td colspan="1" rowspan="1">Provides access to 
 >resource bundles used to localise messages (since 
 >2.5.11)</td></tr></table></p>
-<h2 id="Plugins-PluginExamples">Plugin Examples</h2><p>Let's look at two 
similar but different plugins bundled with the core distribution.</p><h3 
id="Plugins-Sitemeshplugin">Sitemesh plugin</h3><p><a shape="rect" 
class="external-link" href="http://opensymphony.com/sitemesh/"; 
rel="nofollow">SiteMesh</a> is a popular alternative to Tiles. SiteMesh 
provides a common look-and-feel to an application's pages by automatically 
wrapping a plain page with common elements like headers and menubars.</p><p>The 
<code>sitemesh-plugin.jar</code> contains several classes, a standard JAR 
manifest, and a plugin configuration file.</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;"> + META-INF/
+</plain-text-body><p>Read also <a shape="rect" class="external-link" 
href="http://struts.apache.org/2.x/struts2-core/apidocs/org/apache/struts2/dispatcher/StaticContentLoader.html";>StaticContentLoader
 JavaDoc</a>.</p><h2 id="Plugins-ExtensionPoints">Extension 
Points</h2><p>Extension points allow a plugin to override a key class in the 
Struts framework with an alternate implementation. For example, a plugin could 
provide a new class to create Action classes or map requests to 
Actions.</p><p>The following extension points are available in Struts 
2:</p><plain-text-body>{snippet:id=extensionPoints|javadoc=true|url=org.apache.struts2.config.DefaultBeanSelectionProvider}</plain-text-body><h2
 id="Plugins-PluginExamples">Plugin Examples</h2><p>Let's look at two similar 
but different plugins bundled with the core distribution.</p><h3 
id="Plugins-Sitemeshplugin">Sitemesh plugin</h3><p><a shape="rect" 
class="external-link" href="http://opensymphony.com/sitemesh/"; 
rel="nofollow">SiteMesh</a> is
  a popular alternative to Tiles. SiteMesh provides a common look-and-feel to 
an application's pages by automatically wrapping a plain page with common 
elements like headers and menubars.</p><p>The <code>sitemesh-plugin.jar</code> 
contains several classes, a standard JAR manifest, and a plugin configuration 
file.</p><plain-text-body> + META-INF/
    + manifest.mf
  + org
    + apache
@@ -161,43 +139,7 @@ under the License.
          + TemplatePageFilter.class
          + VelocityPageFilter.class
  + struts-plugin.xml
-</pre>
-</div></div><p>While the SiteMesh Plugin doesn't provide any new results, 
interceptors, or actions, or even extend any Struts integration points, it does 
need to know what settings have been enabled in the Struts framework. 
Therefore, its <code>struts-plugin.xml</code> looks like this:</p><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[
-&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&gt;
-&lt;!--
-/*
- * $Id$
- *
- * 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
- * &quot;License&quot;); 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
- * &quot;AS IS&quot; 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.
- */
---&gt;
-&lt;!DOCTYPE struts PUBLIC
-       &quot;-//Apache Software Foundation//DTD Struts Configuration 
2.5//EN&quot;
-       &quot;http://struts.apache.org/dtds/struts-2.5.dtd&quot;&gt;
-    
-&lt;struts&gt;
-    &lt;bean 
class=&quot;org.apache.struts2.sitemesh.FreemarkerPageFilter&quot; 
static=&quot;true&quot; optional=&quot;true&quot;/&gt;
-    &lt;bean class=&quot;org.apache.struts2.sitemesh.VelocityPageFilter&quot; 
static=&quot;true&quot; optional=&quot;true&quot;/&gt;
-&lt;/struts&gt;
-]]></script>
-</div></div><p>The two bean elements, with the "static" flag enabled, tell 
Struts to inject the current settings and framework objects into static 
property setters on startup. This allows, for example, the FreeMarkerPageFilter 
class to get an instance of the Struts FreemarkerManager and the current 
encoding setting.</p><h3 id="Plugins-Tilesplugin">Tiles plugin</h3><p><a 
shape="rect" class="external-link" 
href="http://struts.apache.org/struts-sandbox/tiles/index.html";>Tiles</a> is a 
popular alternative to SiteMesh. Tiles provides a common look-and-feel to an 
application's pages by breaking the page down into common fragments or 
"tiles".</p><p>The <code>tiles-plugin.jar</code> contains several classes, a 
standard JAR manifest, and a configuration file.</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;"> + META-INF/
+</plain-text-body><p>While the SiteMesh Plugin doesn't provide any new 
results, interceptors, or actions, or even extend any Struts integration 
points, it does need to know what settings have been enabled in the Struts 
framework. Therefore, its <code>struts-plugin.xml</code> looks like 
this:</p><plain-text-body>{snippet:id=all|lang=xml|url=struts2/plugins/sitemesh/src/main/resources/struts-plugin.xml}</plain-text-body><p>The
 two bean elements, with the "static" flag enabled, tell Struts to inject the 
current settings and framework objects into static property setters on startup. 
This allows, for example, the FreeMarkerPageFilter class to get an instance of 
the Struts FreemarkerManager and the current encoding setting.</p><h3 
id="Plugins-Tilesplugin">Tiles plugin</h3><p><a shape="rect" 
class="external-link" 
href="http://struts.apache.org/struts-sandbox/tiles/index.html";>Tiles</a> is a 
popular alternative to SiteMesh. Tiles provides a common look-and-feel to an 
application's pages by 
 breaking the page down into common fragments or "tiles".</p><p>The 
<code>tiles-plugin.jar</code> contains several classes, a standard JAR 
manifest, and a configuration file.</p><plain-text-body> + META-INF/
    + manifest.mf
  + org
    + apache
@@ -209,8 +151,7 @@ under the License.
          + tiles
            + TilesResult.class
    + struts-plugin.xml
-</pre>
-</div></div><p>Since the Tiles Plugin does need to register configuration 
elements, a result class, it provides a <code>struts-plugin.xml</code> 
file.</p><h2 id="Plugins-PluginRegistry">Plugin Registry</h2><p><img 
class="emoticon emoticon-tick" 
src="https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/check.png";
 data-emoticon-name="tick" alt="(tick)"> For a list of bundled plugins, see the 
<a shape="rect" href="plugin-developers-guide.html">Plugin Reference 
Documentation</a>. For more about bundled and third-party plugins, visit the <a 
shape="rect" class="external-link" 
href="http://cwiki.apache.org/S2PLUGINS/home.html";>Apache Struts Plugin 
Registry</a>.</p><h2 id="Plugins-Backto">Back to <a shape="rect" 
href="home.html">Home</a></h2></div>
+</plain-text-body><p>Since the Tiles Plugin does need to register 
configuration elements, a result class, it provides a 
<code>struts-plugin.xml</code> file.</p><h2 id="Plugins-PluginRegistry">Plugin 
Registry</h2><p><img class="emoticon emoticon-tick" 
src="https://cwiki.apache.org/confluence/s/en_GB/5997/6f42626d00e36f53fe51440403446ca61552e2a2.1/_/images/icons/emoticons/check.png";
 data-emoticon-name="tick" alt="(tick)"> For a list of bundled plugins, see the 
<a shape="rect" href="plugin-developers-guide.html">Plugin Reference 
Documentation</a>. For more about bundled and third-party plugins, visit the <a 
shape="rect" class="external-link" 
href="http://cwiki.apache.org/S2PLUGINS/home.html";>Apache Struts Plugin 
Registry</a>.</p><h2 id="Plugins-Backto">Back to <a shape="rect" 
href="home.html">Home</a></h2></div>
         </div>
 
         

http://git-wip-us.apache.org/repos/asf/struts-site/blob/b16cc4ef/content/docs/prepare-interceptor.html
----------------------------------------------------------------------
diff --git a/content/docs/prepare-interceptor.html 
b/content/docs/prepare-interceptor.html
index c079d51..61b7a43 100644
--- a/content/docs/prepare-interceptor.html
+++ b/content/docs/prepare-interceptor.html
@@ -190,7 +190,7 @@ otherwise it will not.</li></ul><p></p>
 <h2 id="PrepareInterceptor-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[
+<script class="brush: xml; gutter: false; theme: Confluence" 
type="syntaxhighlighter"><![CDATA[
 &lt;!-- Calls the params interceptor twice, allowing you to
       pre-load data for the second time parameters are set --&gt;
  &lt;action name=&quot;someAction&quot; 
class=&quot;com.examples.SomeAction&quot;&gt;

http://git-wip-us.apache.org/repos/asf/struts-site/blob/b16cc4ef/content/docs/profiling.html
----------------------------------------------------------------------
diff --git a/content/docs/profiling.html b/content/docs/profiling.html
index a299a76..efa43f2 100644
--- a/content/docs/profiling.html
+++ b/content/docs/profiling.html
@@ -34,20 +34,6 @@ under the License.
             color:                 #666;
         }
     </style>
-    <link href='https://struts.apache.org/highlighter/style/shCoreStruts.css' 
rel='stylesheet' type='text/css' />
-    <link href='https://struts.apache.org/highlighter/style/shThemeStruts.css' 
rel='stylesheet' type='text/css' />
-    <script src='https://struts.apache.org/highlighter/js/shCore.js' 
type='text/javascript'></script>
-    <script src='https://struts.apache.org/highlighter/js/shBrushPlain.js' 
type='text/javascript'></script>
-    <script src='https://struts.apache.org/highlighter/js/shBrushXml.js' 
type='text/javascript'></script>
-    <script src='https://struts.apache.org/highlighter/js/shBrushJava.js' 
type='text/javascript'></script>
-    <script src='https://struts.apache.org/highlighter/js/shBrushJScript.js' 
type='text/javascript'></script>
-    <script src='https://struts.apache.org/highlighter/js/shBrushGroovy.js' 
type='text/javascript'></script>
-    <script src='https://struts.apache.org/highlighter/js/shBrushBash.js' 
type='text/javascript'></script>
-    <script src='https://struts.apache.org/highlighter/js/shBrushCss.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;
@@ -143,29 +129,11 @@ under the License.
 
 
 <h2 id="Profiling-Profilingaspects">Profiling aspects </h2>
-<p></p><p>
-Struts2 profiling aspects involves the following:
-</p>
-
-<p></p><ul><li>ActionContextCleanUp</li><li>FreemarkerPageFilter</li><li>DispatcherFilter
-     <ul><li>Dispatcher
-             <ul><li>creation of DefaultActionProxy
-                     <ul><li>creation of DefaultActionInvocation
-                             <ul><li>creation of Action</li></ul>
-                         </li></ul>
-                 </li><li>execution of DefaultActionProxy
-                     <ul><li>invocation of DefaultActionInvocation
-                             <ul><li>invocation of 
Interceptors</li><li>invocation of Action</li><li>invocation of 
PreResultListener</li><li>invocation of Result</li></ul>
-                         </li></ul>
-                 </li></ul>
-         </li></ul>
- </li></ul>
-
+<plain-text-body>{snippet:id=profilingAspect_struts2|javadoc=true|url=com.opensymphony.xwork2.util.profiling.UtilTimerStack}</plain-text-body>
 
 <h2 id="Profiling-Using">Using</h2>
 <p>To enable profiling, first make sure that the <code>profiling</code> 
interceptor is applied to your action, like:</p>
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;">
+<parameter ac:name="">xml</parameter><plain-text-body>
 &lt;action ... &gt;   
    ... 
    &lt;interceptor-ref name="profiling"&gt; 
@@ -173,49 +141,26 @@ Struts2 profiling aspects involves the following:
    &lt;/interceptor-ref&gt; 
    ... 
 &lt;/action&gt; 
-</pre>
-</div></div>
+</plain-text-body>
 
 <p>Then enable profiling using one of the following methods:</p>
 
 <h3 id="Profiling-ActivateThroughSystemproperty">Activate Through System 
property</h3>
-<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[
-
- -Dxwork.profile.activate=true
-
-]]></script>
-</div></div>
-<p></p><p>
-This could be done in the container startup script eg. CATALINA_OPTS in 
catalina.sh
-(tomcat) or using 'java -Dxwork.profile.activate=true -jar start.jar' (jetty)
-</p>
+<plain-text-body>{snippet:id=activationThroughSystemProperty|lang=xml|javadoc=true|url=com.opensymphony.xwork2.util.profiling.UtilTimerStack}</plain-text-body>
+<plain-text-body>{snippet:id=activationThroughSystemPropertyDescription|javadoc=true|url=com.opensymphony.xwork2.util.profiling.UtilTimerStack}</plain-text-body>
 
 <h3 id="Profiling-ActivateThroughcode">Activate Through code</h3>
-<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[
-
- UtilTimerStack.setActivate(true);
-
-]]></script>
-</div></div>
-<p></p><p>
-This could be done in a static block, in a Spring bean with lazy-init='false',
-in a Servlet with init-on-startup as some numeric value, in a Filter or
-Listener's init method etc.
-</p>
+<plain-text-body>{snippet:id=activationThroughCode|lang=xml|javadoc=true|url=com.opensymphony.xwork2.util.profiling.UtilTimerStack}</plain-text-body>
+<plain-text-body>{snippet:id=activationThroughCodeDescription|javadoc=true|url=com.opensymphony.xwork2.util.profiling.UtilTimerStack}</plain-text-body>
 
 <h3 id="Profiling-ActivateThroughparameter">Activate Through parameter</h3>
-<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;">
+<plain-text-body>
 http://host:port/context/namespace/someAction.action?profiling=true 
-</pre>
-</div></div> 
+</plain-text-body> 
 
 <h3 id="Profiling-Changingtheactivationparametername">Changing the activation 
parameter name</h3>
 <p>Set the <code>profilingKey</code> attribute of the <code>profiling</code> 
interceptor to the desired name:</p>
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;">
+<parameter ac:name="">xml</parameter><plain-text-body>
 &lt;action ... &gt;   
    ... 
    &lt;interceptor-ref name="profiling"&gt; 
@@ -223,27 +168,23 @@ 
http://host:port/context/namespace/someAction.action?profiling=true
    &lt;/interceptor-ref&gt; 
    ... 
 &lt;/action&gt; 
-</pre>
-</div></div>
+</plain-text-body>
 
-<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>Profiling activation through a parameter requires 
<code>struts.devMode</code> to be <code>true</code>.</p></div></div>
+<rich-text-body>
+<p>Profiling activation through a parameter requires 
<code>struts.devMode</code> to be <code>true</code>.</p></rich-text-body>
 
 <h2 id="Profiling-Filteringprofileinformation">Filtering profile 
information</h2>
 <p>One could filter out the profile logging by having a System property as 
follows:</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;">
+<plain-text-body>
 -Dxwork.profile.mintime=10000 
-</pre>
-</div></div>
+</plain-text-body>
 <p> With this <code>xwork.profile.mintime</code> property, one could only log 
profile information when its execution time exceed those specified in 
<code>xwork.profile.mintime</code> system property. If no such property is 
specified, it will be assumed to be 0, hence all profile information will be 
logged.</p>
 
 <h2 id="Profiling-Writeprofilingcode">Write profiling code</h2>
 <p>One could extend the profiling feature provided by Struts2 in their web 
application as well. </p>
 
 <h3 id="Profiling-UsingUtilTimerStack'spushandpop">Using UtilTimerStack's push 
and pop</h3>
-<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;">
+<parameter ac:name="">java</parameter><plain-text-body>
 String logMessage = "Log message"; 
 UtilTimerStack.push(logMessage); 
 try { 
@@ -251,12 +192,10 @@ try {
 } finally { 
     UtilTimerStack.pop(logMessage); // this needs to be the same text as above 
 } 
-</pre>
-</div></div>
+</plain-text-body>
 
 <h3 id="Profiling-UsingaUtilTimerStack'sProfileBlocktemplate">Using a 
UtilTimerStack's ProfileBlock template</h3>
-<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;">
+<parameter ac:name="">java</parameter><plain-text-body>
 String result = UtilTimerStack.profile("purchaseItem: ",  
       new UtilTimerStack.ProfilingBlock&lt;String&gt;() { 
            public String doProfiling() { 
@@ -264,8 +203,7 @@ String result = UtilTimerStack.profile("purchaseItem: ",
               return "Ok"; 
            } 
       }); 
-</pre>
-</div></div>
+</plain-text-body>
 
 <h2 id="Profiling-ProfilingLogfiles">Profiling Log files</h2>
 <p>Profiled result is logged using commons-logging under the logger named 
<code>com.opensymphony.xwork2.util.profiling.UtilTimerStack</code>. Depending 
on the underlying logging implementation, say if it is Log4j, one could direct 
the log to appear in a different file, being emailed to someone or have it 
stored in the db.</p>

http://git-wip-us.apache.org/repos/asf/struts-site/blob/b16cc4ef/content/docs/property.html
----------------------------------------------------------------------
diff --git a/content/docs/property.html b/content/docs/property.html
index 0eb0de2..04ac9c2 100644
--- a/content/docs/property.html
+++ b/content/docs/property.html
@@ -143,7 +143,7 @@ under the License.
 Used to get the property of a <i>value</i>, which will default to the top of
 the stack if none is specified.
 </p><h1 id="property-Parameters">Parameters</h1><p><table width="100%"><tr><td 
colspan="6" rowspan="1"><h4>Dynamic Attributes Allowed:</h4> 
false</td></tr><tr><td colspan="6" rowspan="1">&#160;</td></tr><tr><th 
align="left" colspan="1" rowspan="1" valign="top"><h4>Name</h4></th><th 
align="left" colspan="1" rowspan="1" valign="top"><h4>Required</h4></th><th 
align="left" colspan="1" rowspan="1" valign="top"><h4>Default</h4></th><th 
align="left" colspan="1" rowspan="1" valign="top"><h4>Evaluated</h4></th><th 
align="left" colspan="1" rowspan="1" valign="top"><h4>Type</h4></th><th 
align="left" colspan="1" rowspan="1" 
valign="top"><h4>Description</h4></th></tr><tr><td align="left" colspan="1" 
rowspan="1" valign="top">default</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top"></td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">String</td><td align="l
 eft" colspan="1" rowspan="1" valign="top">The default value to be used if 
<u>value</u> attribute is null</td></tr><tr><td align="left" colspan="1" 
rowspan="1" valign="top">escapeCsv</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">Boolean</td><td align="left" colspan="1" rowspan="1" 
valign="top">Whether to escape CSV (useful to escape a value for a 
column)</td></tr><tr><td align="left" colspan="1" rowspan="1" 
valign="top">escapeHtml</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">true</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">Boolean</td><td align="left" colspan="1" rowspan="1" 
valign="top">Whether to escape HTML</td></tr><tr><td alig
 n="left" colspan="1" rowspan="1" valign="top">escapeJavaScript</td><td 
align="left" colspan="1" rowspan="1" valign="top">false</td><td align="left" 
colspan="1" rowspan="1" valign="top">false</td><td align="left" colspan="1" 
rowspan="1" valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">Boolean</td><td align="left" colspan="1" rowspan="1" 
valign="top">Whether to escape Javascript</td></tr><tr><td align="left" 
colspan="1" rowspan="1" valign="top">escapeXml</td><td align="left" colspan="1" 
rowspan="1" valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">Boolean</td><td align="left" colspan="1" rowspan="1" 
valign="top">Whether to escape XML</td></tr><tr><td align="left" colspan="1" 
rowspan="1" valign="top">value</td><td align="left" colspan="1" rowspan="1" 
valign="top">false</td><td align="left" colspan="1" rows
 pan="1" valign="top">&lt;top of stack&gt;</td><td align="left" colspan="1" 
rowspan="1" valign="top">false</td><td align="left" colspan="1" rowspan="1" 
valign="top">Object</td><td align="left" colspan="1" rowspan="1" 
valign="top">Value to be displayed</td></tr></table></p><h1 
id="property-Examples">Examples</h1><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[
+<script class="brush: xml; gutter: false; theme: Confluence" 
type="syntaxhighlighter"><![CDATA[
 
 &lt;s:push value=&quot;myBean&quot;&gt;
     &lt;!-- Example 1: --&gt;
@@ -155,7 +155,7 @@ the stack if none is specified.
 
 ]]></script>
 </div></div><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
-<script class="brush: plain; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
+<script class="brush: plain; gutter: false; theme: Confluence" 
type="syntaxhighlighter"><![CDATA[
 Example 1 prints the result of myBean&#39;s getMyBeanProperty() method.
 Example 2 prints the result of myBean&#39;s getMyBeanProperty() method and if 
it is null, print &#39;a default value&#39; instead.
 ]]></script>

http://git-wip-us.apache.org/repos/asf/struts-site/blob/b16cc4ef/content/docs/pure-javascript-client-side-validation.html
----------------------------------------------------------------------
diff --git a/content/docs/pure-javascript-client-side-validation.html 
b/content/docs/pure-javascript-client-side-validation.html
index 42f63db..9c4ecbe 100644
--- a/content/docs/pure-javascript-client-side-validation.html
+++ b/content/docs/pure-javascript-client-side-validation.html
@@ -34,20 +34,6 @@ under the License.
             color:                 #666;
         }
     </style>
-    <link href='https://struts.apache.org/highlighter/style/shCoreStruts.css' 
rel='stylesheet' type='text/css' />
-    <link href='https://struts.apache.org/highlighter/style/shThemeStruts.css' 
rel='stylesheet' type='text/css' />
-    <script src='https://struts.apache.org/highlighter/js/shCore.js' 
type='text/javascript'></script>
-    <script src='https://struts.apache.org/highlighter/js/shBrushPlain.js' 
type='text/javascript'></script>
-    <script src='https://struts.apache.org/highlighter/js/shBrushXml.js' 
type='text/javascript'></script>
-    <script src='https://struts.apache.org/highlighter/js/shBrushJava.js' 
type='text/javascript'></script>
-    <script src='https://struts.apache.org/highlighter/js/shBrushJScript.js' 
type='text/javascript'></script>
-    <script src='https://struts.apache.org/highlighter/js/shBrushGroovy.js' 
type='text/javascript'></script>
-    <script src='https://struts.apache.org/highlighter/js/shBrushBash.js' 
type='text/javascript'></script>
-    <script src='https://struts.apache.org/highlighter/js/shBrushCss.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;
@@ -141,18 +127,16 @@ under the License.
         <div class="wiki-content">
             <div id="ConfluenceContent"><p>Pure JavaScript client side 
validation is the simplest but least feature-rich type of <a shape="rect" 
href="client-side-validation.html">Client Side Validation</a>. This type of 
validation uses 100% client-side JavaScript code to try to validate the values 
entered by the user. Because the validation logic is actually repeated in the 
JavaScript code, it is important to understand that some values will be 
considered acceptable by the JavaScript code but will be marked as unacceptable 
by the server-side <a shape="rect" href="validation.html">Validation</a>.</p>
 
-<p>Only the following validators are supported:</p>
-<ul><li>required validator</li><li>requiredstring 
validator</li><li>stringlength validator</li><li>regex validator</li><li>email 
validator</li><li>url validator</li><li>int validator</li><li>double 
validator</li></ul>
-
+<plain-text-body>{snippet:id=supported-validators|url=struts2/core/src/main/resources/template/xhtml/form-close-validate.ftl}</plain-text-body>
 
-<div class="confluence-information-macro 
confluence-information-macro-information"><span class="aui-icon aui-icon-small 
aui-iconfont-info confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body">
-<p>JavaScript client validation is not available for visitor 
validations.</p></div></div>
+<rich-text-body>
+<p>JavaScript client validation is not available for visitor 
validations.</p></rich-text-body>
 
 <h2 id="PureJavaScriptClientSideValidation-Errorreporting">Error reporting</h2>
 
 <p>Because client side validation does not talk to the server, the theme (<a 
shape="rect" href="xhtml-theme.html">xhtml theme</a> or <a shape="rect" 
href="cssxhtml-theme.html">css_xhtml theme</a>) is responsible for properly 
manipulating the HTML DOM to display the error message inline. The JavaScript 
that is responsible for doing this logic is <code>validation.js</code> and can 
be found in each theme.</p>
 
-<div class="confluence-information-macro 
confluence-information-macro-note"><span class="aui-icon aui-icon-small 
aui-iconfont-warning confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>Errors are reported using the 
default validation message, not the internationalized version that the 
server-side might be aware of. This is a known issue. You may want to try the 
<a shape="rect" href="ajax-client-side-validation.html">AJAX Client Side 
Validation</a> for messages that are fully internationalized.</p></div></div>
+<rich-text-body><p>Errors are reported using the default validation message, 
not the internationalized version that the server-side might be aware of. This 
is a known issue. You may want to try the <a shape="rect" 
href="ajax-client-side-validation.html">AJAX Client Side Validation</a> for 
messages that are fully internationalized.</p></rich-text-body>
 
 <h2 
id="PureJavaScriptClientSideValidation-AdditionalValidatorSupport">Additional 
Validator Support</h2>
 

http://git-wip-us.apache.org/repos/asf/struts-site/blob/b16cc4ef/content/docs/push.html
----------------------------------------------------------------------
diff --git a/content/docs/push.html b/content/docs/push.html
index 6299c93..c9ec667 100644
--- a/content/docs/push.html
+++ b/content/docs/push.html
@@ -152,7 +152,7 @@ under the License.
 <h1 id="push-Examples">Examples</h1>
 
 <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[
+<script class="brush: xml; gutter: false; theme: Confluence" 
type="syntaxhighlighter"><![CDATA[
 &lt;s:push value=&quot;user&quot;&gt;
     &lt;s:propery value=&quot;firstName&quot; /&gt;
     &lt;s:propery value=&quot;lastName&quot; /&gt;
@@ -160,13 +160,13 @@ under the License.
 ]]></script>
 </div></div>
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<script class="brush: plain; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
+<script class="brush: plain; gutter: false; theme: Confluence" 
type="syntaxhighlighter"><![CDATA[
 Pushed user into the stack, and hence property tag could access user&#39;s 
properties
 (firstName, lastName etc) since user is now at the top of the stack
 ]]></script>
 </div></div>
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<script class="brush: xml; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
+<script class="brush: xml; gutter: false; theme: Confluence" 
type="syntaxhighlighter"><![CDATA[
 &lt;s:push value=&quot;myObject&quot;&gt;                              ----- 
(1)
      &lt;s:bean name=&quot;jp.SomeBean&quot; var=&quot;myBean&quot;/&gt;       
 ----- (2)
         &lt;s:param name=&quot;myParam&quot; value=&quot;top&quot;/&gt;        
----- (3)
@@ -175,14 +175,14 @@ Pushed user into the stack, and hence property tag could 
access user&#39;s prope
 ]]></script>
 </div></div>
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<script class="brush: plain; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
+<script class="brush: plain; gutter: false; theme: Confluence" 
type="syntaxhighlighter"><![CDATA[
 when in (1), myObject is at the top of the stack
 when in (2), jp.SomeBean is in the top of stack, also in stack&#39;s context 
with key myBean
 when in (3), top will get the jp.SomeBean instance
 ]]></script>
 </div></div>
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<script class="brush: xml; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
+<script class="brush: xml; gutter: false; theme: Confluence" 
type="syntaxhighlighter"><![CDATA[
 &lt;s:push value=&quot;myObject&quot;&gt;                                      
 ---(A)
    &lt;s:bean name=&quot;jp.SomeBean&quot; var=&quot;myBean&quot;/&gt;         
          ---(B)
       &lt;s:param name=&quot;myParam&quot; 
value=&quot;top.mySomeOtherValue&quot;/&gt;  ---(C)
@@ -191,14 +191,14 @@ when in (3), top will get the jp.SomeBean instance
 ]]></script>
 </div></div>
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<script class="brush: plain; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
+<script class="brush: plain; gutter: false; theme: Confluence" 
type="syntaxhighlighter"><![CDATA[
 when in (A), myObject is at the top of the stack
 when in (B), jp.SomeBean is at the top of the stack, also in context with key 
myBean
 when in (C), top refers to jp.SomeBean instance. so top.mySomeOtherValue would 
invoke SomeBean&#39;s mySomeOtherValue() method
 ]]></script>
 </div></div>
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<script class="brush: xml; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
+<script class="brush: xml; gutter: false; theme: Confluence" 
type="syntaxhighlighter"><![CDATA[
 &lt;s:push value=&quot;myObject&quot;&gt;                                 ---- 
(i)
    &lt;s:bean name=&quot;jp.SomeBean&quot; var=&quot;myBean&quot;/&gt;         
    ---- (ii)
       &lt;s:param name=&quot;myParam&quot; value=&quot;[1].top&quot;/&gt;      
   -----(iii)
@@ -207,7 +207,7 @@ when in (C), top refers to jp.SomeBean instance. so 
top.mySomeOtherValue would i
 ]]></script>
 </div></div>
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<script class="brush: plain; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
+<script class="brush: plain; gutter: false; theme: Confluence" 
type="syntaxhighlighter"><![CDATA[
 when in (i), myObject is at the top of the stack
 when in (ii), jp.SomeBean is at the top of the stack, followed by myObject
 when in (iii), [1].top will returned top of the cut of stack starting from 
myObject, namely myObject itself

http://git-wip-us.apache.org/repos/asf/struts-site/blob/b16cc4ef/content/docs/radio.html
----------------------------------------------------------------------
diff --git a/content/docs/radio.html b/content/docs/radio.html
index bb9a536..1d05e76 100644
--- a/content/docs/radio.html
+++ b/content/docs/radio.html
@@ -163,13 +163,13 @@ see the section select tag. The default selected one will 
be determined (in this
 in the action class which should return a value similar to the key of the 
getGenders() map if that particular
 gender is to be selected.</p>
 <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[
+<script class="brush: xml; gutter: false; theme: Confluence" 
type="syntaxhighlighter"><![CDATA[
 &lt;s:action name=&quot;GenderMap&quot; var=&quot;genders&quot;/&gt;
 &lt;s:radio label=&quot;Gender&quot; name=&quot;male&quot; 
list=&quot;#genders.genders&quot;/&gt;
 ]]></script>
 </div></div>
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<script class="brush: xml; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
+<script class="brush: xml; gutter: false; theme: Confluence" 
type="syntaxhighlighter"><![CDATA[
 &lt;@s.radio name=&quot;car&quot; list={&quot;ford&quot;: &quot;Ford Motor 
Co&quot;, &quot;toyota&quot;: &quot;Toyota&quot;} listKey=&quot;key&quot; 
listValue=&quot;value&quot; /&gt;
 ]]></script>
 </div></div></div>

http://git-wip-us.apache.org/repos/asf/struts-site/blob/b16cc4ef/content/docs/redirect-action-result.html
----------------------------------------------------------------------
diff --git a/content/docs/redirect-action-result.html 
b/content/docs/redirect-action-result.html
index 430f75e..e0bb655 100644
--- a/content/docs/redirect-action-result.html
+++ b/content/docs/redirect-action-result.html
@@ -164,7 +164,7 @@ URL.</li><li><b>parse</b> - Boolean, true by default.  If 
set to false, the acti
 param will not be parsed for Ognl expressions.</li><li><b>anchor</b> - 
Optional.  Also known as "fragment" or colloquially as
 "hash".  You can specify an anchor for a result.</li></ul>
 <h1 id="RedirectActionResult-Examples">Examples</h1><p></p><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[
+<script class="brush: xml; gutter: false; theme: Confluence" 
type="syntaxhighlighter"><![CDATA[
 &lt;package name=&quot;public&quot; extends=&quot;struts-default&quot;&gt;
     &lt;action name=&quot;login&quot; class=&quot;...&quot;&gt;
         &lt;!-- Redirect to another namespace --&gt;
@@ -210,7 +210,7 @@ param will not be parsed for Ognl 
expressions.</li><li><b>anchor</b> - Optional.
 
 ]]></script>
 </div></div><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;">&lt;!--
+<pre class="brush: bash; gutter: false; theme: Confluence" 
style="font-size:12px;">&lt;!--
        Example of "anchor" param usage in conjunction with "redirectAction" 
result-type.
 
        Generated URL: /displayReport.action#SUMMARY

http://git-wip-us.apache.org/repos/asf/struts-site/blob/b16cc4ef/content/docs/redirect-result.html
----------------------------------------------------------------------
diff --git a/content/docs/redirect-result.html 
b/content/docs/redirect-result.html
index 22f1915..5fe20ec 100644
--- a/content/docs/redirect-result.html
+++ b/content/docs/redirect-result.html
@@ -157,7 +157,7 @@ not be parsed for Ognl 
expressions.</li></ul><p></p><ul><li><b>anchor</b> - Opti
 This result follows the same rules from StrutsResultSupport.
 </p>
 <h1 id="RedirectResult-Examples">Examples</h1><p></p><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[
+<script class="brush: xml; gutter: false; theme: Confluence" 
type="syntaxhighlighter"><![CDATA[
 &lt;!--
   The redirect URL generated will be:
   /foo.jsp#FRAGMENT
@@ -169,7 +169,7 @@ This result follows the same rules from StrutsResultSupport.
 &lt;/result&gt;
 ]]></script>
 </div></div><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;">&lt;package name="passingRequestParameters" 
extends="struts-default" namespace="/passingRequestParameters"&gt;
+<pre class="brush: bash; gutter: false; theme: Confluence" 
style="font-size:12px;">&lt;package name="passingRequestParameters" 
extends="struts-default" namespace="/passingRequestParameters"&gt;
    &lt;-- Pass parameters (reportType, width and height) --&gt;
    &lt;!--
    The redirect url generated will be - the namespace of current acction will 
be appended as location doesn't start with "/":

http://git-wip-us.apache.org/repos/asf/struts-site/blob/b16cc4ef/content/docs/regex-validator.html
----------------------------------------------------------------------
diff --git a/content/docs/regex-validator.html 
b/content/docs/regex-validator.html
index f2b18e2..e93b780 100644
--- a/content/docs/regex-validator.html
+++ b/content/docs/regex-validator.html
@@ -156,7 +156,7 @@ Do not use ${regexExpression}, ${caseSensitiveExpression} 
and ${trimExpression}
 
 <h1 id="regexvalidator-Examples">Examples</h1>
 <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[
+<script class="brush: xml; gutter: false; theme: Confluence" 
type="syntaxhighlighter"><![CDATA[
 &lt;validators&gt;
     &lt;!-- Plain Validator Syntax --&gt;
     &lt;validator type=&quot;regex&quot;&gt;

http://git-wip-us.apache.org/repos/asf/struts-site/blob/b16cc4ef/content/docs/regexfieldvalidator-annotation.html
----------------------------------------------------------------------
diff --git a/content/docs/regexfieldvalidator-annotation.html 
b/content/docs/regexfieldvalidator-annotation.html
index db00270..2a74afc 100644
--- a/content/docs/regexfieldvalidator-annotation.html
+++ b/content/docs/regexfieldvalidator-annotation.html
@@ -152,7 +152,7 @@ under the License.
 <h2 id="RegexFieldValidatorAnnotation-Examples">Examples</h2>
 
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
+<script class="brush: java; gutter: false; theme: Confluence" 
type="syntaxhighlighter"><![CDATA[
 @RegexFieldValidator( key = &quot;regex.field&quot;, regex = 
&quot;yourregexp&quot;)
 ]]></script>
 </div></div></div>

http://git-wip-us.apache.org/repos/asf/struts-site/blob/b16cc4ef/content/docs/required-validator.html
----------------------------------------------------------------------
diff --git a/content/docs/required-validator.html 
b/content/docs/required-validator.html
index 2e042b8..0266f6d 100644
--- a/content/docs/required-validator.html
+++ b/content/docs/required-validator.html
@@ -149,7 +149,7 @@ under the License.
 
 <h1 id="requiredvalidator-Examples">Examples</h1>
 <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[
+<script class="brush: xml; gutter: false; theme: Confluence" 
type="syntaxhighlighter"><![CDATA[
           &lt;validators&gt;
 
         &lt;!-- Plain Validator Syntax --&gt;

http://git-wip-us.apache.org/repos/asf/struts-site/blob/b16cc4ef/content/docs/requiredfieldvalidator-annotation.html
----------------------------------------------------------------------
diff --git a/content/docs/requiredfieldvalidator-annotation.html 
b/content/docs/requiredfieldvalidator-annotation.html
index 3383b86..2dea151 100644
--- a/content/docs/requiredfieldvalidator-annotation.html
+++ b/content/docs/requiredfieldvalidator-annotation.html
@@ -152,7 +152,7 @@ under the License.
 <h2 id="RequiredFieldValidatorAnnotation-Examples">Examples</h2>
 
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
+<script class="brush: java; gutter: false; theme: Confluence" 
type="syntaxhighlighter"><![CDATA[
 @RequiredFieldValidator(message = &quot;Default message&quot;, key = 
&quot;i18n.key&quot;, shortCircuit = true)
 ]]></script>
 </div></div></div>

http://git-wip-us.apache.org/repos/asf/struts-site/blob/b16cc4ef/content/docs/requiredstring-validator.html
----------------------------------------------------------------------
diff --git a/content/docs/requiredstring-validator.html 
b/content/docs/requiredstring-validator.html
index 6949e95..78c90c9 100644
--- a/content/docs/requiredstring-validator.html
+++ b/content/docs/requiredstring-validator.html
@@ -150,7 +150,7 @@ the String before performing the length check.  If 
unspecified, the String will
 
 <h1 id="requiredstringvalidator-Examples">Examples</h1>
 <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[
+<script class="brush: xml; gutter: false; theme: Confluence" 
type="syntaxhighlighter"><![CDATA[
     &lt;validators&gt;
         &lt;!-- Plain-Validator Syntax --&gt;
         &lt;validator type=&quot;requiredstring&quot;&gt;

http://git-wip-us.apache.org/repos/asf/struts-site/blob/b16cc4ef/content/docs/requiredstringvalidator-annotation.html
----------------------------------------------------------------------
diff --git a/content/docs/requiredstringvalidator-annotation.html 
b/content/docs/requiredstringvalidator-annotation.html
index 6c74212..13dc711 100644
--- a/content/docs/requiredstringvalidator-annotation.html
+++ b/content/docs/requiredstringvalidator-annotation.html
@@ -152,7 +152,7 @@ under the License.
 <h2 id="RequiredStringValidatorAnnotation-Examples">Examples</h2>
 
 <div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default" 
type="syntaxhighlighter"><![CDATA[
+<script class="brush: java; gutter: false; theme: Confluence" 
type="syntaxhighlighter"><![CDATA[
 @RequiredStringValidator(message = &quot;Default message&quot;, key = 
&quot;i18n.key&quot;, shortCircuit = true, trim = true)
 ]]></script>
 </div></div></div>

http://git-wip-us.apache.org/repos/asf/struts-site/blob/b16cc4ef/content/docs/reset.html
----------------------------------------------------------------------
diff --git a/content/docs/reset.html b/content/docs/reset.html
index 4c5e91a..ebdbe17 100644
--- a/content/docs/reset.html
+++ b/content/docs/reset.html
@@ -160,7 +160,7 @@ text shown on the button face, but has issues with 
Microsoft Internet Explorer a
 <h3 id="reset-Example1">Example 1</h3>
 
 <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[
+<script class="brush: xml; gutter: false; theme: Confluence" 
type="syntaxhighlighter"><![CDATA[
 &lt;s:reset value=&quot;Reset&quot; /&gt;
 ]]></script>
 </div></div>
@@ -168,7 +168,7 @@ text shown on the button face, but has issues with 
Microsoft Internet Explorer a
 <h3 id="reset-Example2">Example 2</h3>
 
 <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[
+<script class="brush: xml; gutter: false; theme: Confluence" 
type="syntaxhighlighter"><![CDATA[
 Render a reset button:
 &lt;s:reset type=&quot;button&quot; key=&quot;reset&quot;/&gt;
 ]]></script>

Reply via email to