http://git-wip-us.apache.org/repos/asf/struts-site/blob/f694fc8f/content/core-developers/interceptors.html
----------------------------------------------------------------------
diff --git a/content/core-developers/interceptors.html 
b/content/core-developers/interceptors.html
index 5cf3a14..4fcb55b 100644
--- a/content/core-developers/interceptors.html
+++ b/content/core-developers/interceptors.html
@@ -223,7 +223,403 @@ than reiterate the same list of Interceptors, we can 
bundle these Interceptors t
 
 <h2 id="the-default-configuration">The Default Configuration</h2>
 
-<figure class="highlight"><pre><code class="language-xml" data-lang="xml">500: 
Internal Server Error</code></pre></figure>
+<figure class="highlight"><pre><code class="language-xml" 
data-lang="xml"><span class="cp">&lt;?xml version="1.0" encoding="UTF-8" 
?&gt;</span>
+<span class="c">&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
+ * "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.
+ */
+--&gt;</span>
+
+<span class="c">&lt;!--
+    When declaring beans in this file you must either use name="struts" or 
don't name the bean at all.
+
+    The name="struts" must be used when alias was defined in {@link 
org.apache.struts2.config.DefaultBeanSelectionProvider} -
+    it is then the default bean's name and {@link 
org.apache.struts2.config.DefaultBeanSelectionProvider} links name "struts"
+    with "default" (aliasing it)
+
+    If name won't be defined then the "default" value will be used {@link 
com.opensymphony.xwork2.inject.Container#DEFAULT_NAME}
+    and {@link com.opensymphony.xwork2.inject.Inject}
+--&gt;</span>
+<span class="cp">&lt;!DOCTYPE struts PUBLIC
+    "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
+    "http://struts.apache.org/dtds/struts-2.5.dtd"&gt;</span>
+
+<span class="nt">&lt;struts&gt;</span>
+
+    <span class="nt">&lt;constant</span> <span class="na">name=</span><span 
class="s">"struts.excludedClasses"</span>
+              <span class="na">value=</span><span class="s">"</span>
+                <span class="err">java.lang.Object,</span>
+                <span class="err">java.lang.Runtime,</span>
+                <span class="err">java.lang.System,</span>
+                <span class="err">java.lang.Class,</span>
+                <span class="err">java.lang.ClassLoader,</span>
+                <span class="err">java.lang.Shutdown,</span>
+                <span class="err">java.lang.ProcessBuilder,</span>
+                <span class="err">ognl.OgnlContext,</span>
+                <span class="err">ognl.ClassResolver,</span>
+                <span class="err">ognl.TypeConverter,</span>
+                <span class="err">ognl.MemberAccess,</span>
+                <span class="err">ognl.DefaultMemberAccess,</span>
+                <span 
class="err">com.opensymphony.xwork2.ognl.SecurityMemberAccess,</span>
+                <span 
class="err">com.opensymphony.xwork2.ActionContext"</span> <span 
class="nt">/&gt;</span>
+
+    <span class="c">&lt;!-- this must be valid regex, each '.' in package name 
must be escaped! --&gt;</span>
+    <span class="c">&lt;!-- it's more flexible but slower than simple string 
comparison --&gt;</span>
+    <span class="c">&lt;!-- constant name="struts.excludedPackageNamePatterns" 
value="^java\.lang\..*,^ognl.*,^(?!javax\.servlet\..+)(javax\..+)" / 
--&gt;</span>
+
+    <span class="c">&lt;!-- this is simpler version of the above used with 
string comparison --&gt;</span>
+    <span class="nt">&lt;constant</span> <span class="na">name=</span><span 
class="s">"struts.excludedPackageNames"</span>
+              <span class="na">value=</span><span class="s">"</span>
+                <span class="err">java.lang.,</span>
+                <span class="err">ognl.,</span>
+                <span class="err">javax,</span>
+                <span class="err">freemarker.core.,</span>
+                <span class="err">freemarker.template.,</span>
+                <span class="err">freemarker.ext.rhino.,</span>
+                <span class="err">freemarker.ext.beans.,</span>
+                <span class="err">sun.reflect.,</span>
+                <span class="err">javassist."</span> <span 
class="nt">/&gt;</span>
+
+    <span class="nt">&lt;bean</span> <span class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.ObjectFactory"</span> <span 
class="na">name=</span><span class="s">"struts"</span><span 
class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"com.opensymphony.xwork2.factory.ResultFactory"</span> <span 
class="na">name=</span><span class="s">"struts"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.factory.StrutsResultFactory"</span> <span 
class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"com.opensymphony.xwork2.factory.ActionFactory"</span> <span 
class="na">name=</span><span class="s">"struts"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.factory.DefaultActionFactory"</span> <span 
class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"com.opensymphony.xwork2.factory.ConverterFactory"</span> <span 
class="na">name=</span><span class="s">"struts"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.factory.DefaultConverterFactory"</span> 
<span class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"com.opensymphony.xwork2.factory.InterceptorFactory"</span> <span 
class="na">name=</span><span class="s">"struts"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.factory.DefaultInterceptorFactory"</span> 
<span class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"com.opensymphony.xwork2.factory.ValidatorFactory"</span> <span 
class="na">name=</span><span class="s">"struts"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.factory.DefaultValidatorFactory"</span> 
<span class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"com.opensymphony.xwork2.factory.UnknownHandlerFactory"</span> <span 
class="na">name=</span><span class="s">"struts"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.factory.DefaultUnknownHandlerFactory"</span> 
<span class="nt">/&gt;</span>
+
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"com.opensymphony.xwork2.FileManager"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.util.fs.DefaultFileManager"</span> <span 
class="na">name=</span><span class="s">"system"</span> <span 
class="na">scope=</span><span class="s">"singleton"</span><span 
class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"com.opensymphony.xwork2.FileManagerFactory"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.util.fs.DefaultFileManagerFactory"</span> 
<span class="na">name=</span><span class="s">"struts"</span> <span 
class="na">scope=</span><span class="s">"singleton"</span><span 
class="nt">/&gt;</span>
+
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"com.opensymphony.xwork2.ActionProxyFactory"</span> <span 
class="na">name=</span><span class="s">"struts"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.factory.StrutsActionProxyFactory"</span><span 
class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"com.opensymphony.xwork2.ActionProxyFactory"</span> <span 
class="na">name=</span><span class="s">"prefix"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.factory.PrefixBasedActionProxyFactory"</span><span
 class="nt">/&gt;</span>
+
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"com.opensymphony.xwork2.conversion.ObjectTypeDeterminer"</span> 
<span class="na">name=</span><span class="s">"struts"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.conversion.impl.DefaultObjectTypeDeterminer"</span><span
 class="nt">/&gt;</span>
+
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"com.opensymphony.xwork2.util.PatternMatcher"</span> <span 
class="na">name=</span><span class="s">"struts"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.util.WildcardHelper"</span> <span 
class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"com.opensymphony.xwork2.util.PatternMatcher"</span> <span 
class="na">name=</span><span class="s">"namedVariable"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.util.NamedVariablePatternMatcher"</span><span
 class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"com.opensymphony.xwork2.util.PatternMatcher"</span> <span 
class="na">name=</span><span class="s">"regex"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.util.RegexPatternMatcher"</span><span 
class="nt">/&gt;</span>
+
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"org.apache.struts2.util.ContentTypeMatcher"</span> <span 
class="na">name=</span><span class="s">"struts"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.util.DefaultContentTypeMatcher"</span><span 
class="nt">/&gt;</span>
+
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"org.apache.struts2.dispatcher.mapper.ActionMapper"</span> <span 
class="na">name=</span><span class="s">"struts"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.dispatcher.mapper.DefaultActionMapper"</span> 
<span class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"org.apache.struts2.dispatcher.mapper.ActionMapper"</span> <span 
class="na">name=</span><span class="s">"composite"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.dispatcher.mapper.CompositeActionMapper"</span> 
<span class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"org.apache.struts2.dispatcher.mapper.ActionMapper"</span> <span 
class="na">name=</span><span class="s">"restful"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.dispatcher.mapper.RestfulActionMapper"</span> 
<span class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"org.apache.struts2.dispatcher.mapper.ActionMapper"</span> <span 
class="na">name=</span><span class="s">"restful2"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.dispatcher.mapper.Restful2ActionMapper"</span> 
<span class="nt">/&gt;</span>
+
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"org.apache.struts2.dispatcher.multipart.MultiPartRequest"</span> 
<span class="na">name=</span><span class="s">"jakarta"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest"</span>
 <span class="na">scope=</span><span class="s">"prototype"</span><span 
class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"org.apache.struts2.dispatcher.multipart.MultiPartRequest"</span> 
<span class="na">name=</span><span class="s">"jakarta-stream"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.dispatcher.multipart.JakartaStreamMultiPartRequest"</span>
 <span class="na">scope=</span><span class="s">"prototype"</span><span 
class="nt">/&gt;</span>
+
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"org.apache.struts2.views.TagLibraryDirectiveProvider"</span> <span 
class="na">name=</span><span class="s">"s"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.views.DefaultTagLibrary"</span> <span 
class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"org.apache.struts2.views.TagLibraryModelProvider"</span> <span 
class="na">name=</span><span class="s">"s"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.views.DefaultTagLibrary"</span> <span 
class="nt">/&gt;</span>
+
+    <span class="nt">&lt;bean</span> <span class="na">class=</span><span 
class="s">"org.apache.struts2.views.freemarker.FreemarkerThemeTemplateLoader"</span>
 <span class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">class=</span><span 
class="s">"org.apache.struts2.views.freemarker.FreemarkerManager"</span> <span 
class="na">name=</span><span class="s">"struts"</span> <span 
class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">class=</span><span 
class="s">"org.apache.struts2.views.velocity.VelocityManager"</span> <span 
class="na">name=</span><span class="s">"struts"</span> <span 
class="na">optional=</span><span class="s">"true"</span> <span 
class="nt">/&gt;</span>
+
+    <span class="nt">&lt;bean</span> <span class="na">class=</span><span 
class="s">"org.apache.struts2.components.template.TemplateEngineManager"</span> 
<span class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"org.apache.struts2.components.template.TemplateEngine"</span> <span 
class="na">name=</span><span class="s">"ftl"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.components.template.FreemarkerTemplateEngine"</span>
 <span class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"org.apache.struts2.components.template.TemplateEngine"</span> <span 
class="na">name=</span><span class="s">"vm"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.components.template.VelocityTemplateEngine"</span>
 <span class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"org.apache.struts2.components.template.TemplateEngine"</span> <span 
class="na">name=</span><span class="s">"jsp"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.components.template.JspTemplateEngine"</span> 
<span class="nt">/&gt;</span>
+
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"com.opensymphony.xwork2.conversion.impl.XWorkConverter"</span> <span 
class="na">name=</span><span class="s">"struts"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.conversion.impl.XWorkConverter"</span> <span 
class="nt">/&gt;</span>
+
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"com.opensymphony.xwork2.conversion.ConversionPropertiesProcessor"</span>
 <span class="na">name=</span><span class="s">"struts"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.conversion.impl.DefaultConversionPropertiesProcessor"</span>
 <span class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"com.opensymphony.xwork2.conversion.ConversionFileProcessor"</span> 
<span class="na">name=</span><span class="s">"struts"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.conversion.impl.DefaultConversionFileProcessor"</span>
 <span class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"com.opensymphony.xwork2.conversion.ConversionAnnotationProcessor"</span>
 <span class="na">name=</span><span class="s">"struts"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.conversion.impl.DefaultConversionAnnotationProcessor"</span>
 <span class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"com.opensymphony.xwork2.conversion.TypeConverterCreator"</span> 
<span class="na">name=</span><span class="s">"struts"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.conversion.impl.DefaultTypeConverterCreator"</span>
 <span class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"com.opensymphony.xwork2.conversion.TypeConverterHolder"</span> <span 
class="na">name=</span><span class="s">"struts"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.conversion.impl.DefaultTypeConverterHolder"</span>
 <span class="nt">/&gt;</span>
+
+    <span class="nt">&lt;bean</span> <span class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.conversion.impl.XWorkBasicConverter"</span> 
<span class="nt">/&gt;</span>
+
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"com.opensymphony.xwork2.conversion.impl.CollectionConverter"</span> 
<span class="na">name=</span><span class="s">"struts"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.conversion.impl.CollectionConverter"</span> 
<span class="na">scope=</span><span class="s">"singleton"</span><span 
class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"com.opensymphony.xwork2.conversion.impl.ArrayConverter"</span> <span 
class="na">name=</span><span class="s">"struts"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.conversion.impl.ArrayConverter"</span> <span 
class="na">scope=</span><span class="s">"singleton"</span><span 
class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"com.opensymphony.xwork2.conversion.impl.DateConverter"</span> <span 
class="na">name=</span><span class="s">"struts"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.conversion.impl.DateConverter"</span> <span 
class="na">scope=</span><span class="s">"singleton"</span><span 
class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"com.opensymphony.xwork2.conversion.impl.NumberConverter"</span> 
<span class="na">name=</span><span class="s">"struts"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.conversion.impl.NumberConverter"</span> 
<span class="na">scope=</span><span class="s">"singleton"</span><span 
class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"com.opensymphony.xwork2.conversion.impl.StringConverter"</span> 
<span class="na">name=</span><span class="s">"struts"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.conversion.impl.StringConverter"</span> 
<span class="na">scope=</span><span class="s">"singleton"</span><span 
class="nt">/&gt;</span>
+
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"com.opensymphony.xwork2.LocalizedTextProvider"</span> <span 
class="na">name=</span><span class="s">"global-only"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.util.GlobalLocalizedTextProvider"</span> 
<span class="na">scope=</span><span class="s">"singleton"</span> <span 
class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"com.opensymphony.xwork2.LocalizedTextProvider"</span> <span 
class="na">name=</span><span class="s">"struts"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.util.StrutsLocalizedTextProvider"</span> 
<span class="na">scope=</span><span class="s">"singleton"</span> <span 
class="nt">/&gt;</span>
+
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"com.opensymphony.xwork2.TextProvider"</span> <span 
class="na">name=</span><span class="s">"system"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.DefaultTextProvider"</span> <span 
class="na">scope=</span><span class="s">"singleton"</span> <span 
class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"com.opensymphony.xwork2.TextProviderFactory"</span> <span 
class="na">name=</span><span class="s">"struts"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.StrutsTextProviderFactory"</span> <span 
class="na">scope=</span><span class="s">"singleton"</span> <span 
class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"com.opensymphony.xwork2.LocaleProviderFactory"</span> <span 
class="na">name=</span><span class="s">"struts"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.DefaultLocaleProviderFactory"</span> <span 
class="na">scope=</span><span class="s">"singleton"</span> <span 
class="nt">/&gt;</span>
+
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"org.apache.struts2.components.UrlRenderer"</span> <span 
class="na">name=</span><span class="s">"struts"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.components.ServletUrlRenderer"</span><span 
class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"org.apache.struts2.views.util.UrlHelper"</span> <span 
class="na">name=</span><span class="s">"struts"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.views.util.DefaultUrlHelper"</span><span 
class="nt">/&gt;</span>
+
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"com.opensymphony.xwork2.util.ValueStackFactory"</span> <span 
class="na">name=</span><span class="s">"struts"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.ognl.OgnlValueStackFactory"</span> <span 
class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"com.opensymphony.xwork2.util.reflection.ReflectionProvider"</span> 
<span class="na">name=</span><span class="s">"struts"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.ognl.OgnlReflectionProvider"</span> <span 
class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"com.opensymphony.xwork2.util.reflection.ReflectionContextFactory"</span>
 <span class="na">name=</span><span class="s">"struts"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.ognl.OgnlReflectionContextFactory"</span> 
<span class="nt">/&gt;</span>
+
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"com.opensymphony.xwork2.conversion.NullHandler"</span> <span 
class="na">name=</span><span class="s">"java.lang.Object"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.conversion.impl.InstantiatingNullHandler"</span>
 <span class="nt">/&gt;</span>
+
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"com.opensymphony.xwork2.validator.ActionValidatorManager"</span> 
<span class="na">name=</span><span class="s">"struts"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.validator.AnnotationActionValidatorManager"</span>
 <span class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"com.opensymphony.xwork2.validator.ActionValidatorManager"</span> 
<span class="na">name=</span><span class="s">"no-annotations"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.validator.DefaultActionValidatorManager"</span>
 <span class="nt">/&gt;</span>
+
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"com.opensymphony.xwork2.validator.ValidatorFactory"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.validator.DefaultValidatorFactory"</span><span
 class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"com.opensymphony.xwork2.validator.ValidatorFileParser"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.validator.DefaultValidatorFileParser"</span> 
<span class="nt">/&gt;</span>
+
+    <span class="nt">&lt;bean</span> <span class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.ognl.OgnlUtil"</span> <span 
class="nt">/&gt;</span>
+
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"com.opensymphony.xwork2.util.TextParser"</span> <span 
class="na">name=</span><span class="s">"struts"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.util.OgnlTextParser"</span> <span 
class="na">scope=</span><span class="s">"singleton"</span><span 
class="nt">/&gt;</span>
+
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"ognl.PropertyAccessor"</span> <span class="na">name=</span><span 
class="s">"com.opensymphony.xwork2.util.CompoundRoot"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.ognl.accessor.CompoundRootAccessor"</span> 
<span class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"ognl.PropertyAccessor"</span> <span class="na">name=</span><span 
class="s">"java.lang.Object"</span> <span class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.ognl.accessor.ObjectAccessor"</span> <span 
class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"ognl.PropertyAccessor"</span> <span class="na">name=</span><span 
class="s">"java.util.Iterator"</span> <span class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.ognl.accessor.XWorkIteratorPropertyAccessor"</span>
 <span class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"ognl.PropertyAccessor"</span> <span class="na">name=</span><span 
class="s">"java.util.Enumeration"</span> <span class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.ognl.accessor.XWorkEnumerationAccessor"</span>
 <span class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"ognl.PropertyAccessor"</span> <span class="na">name=</span><span 
class="s">"java.util.List"</span> <span class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.ognl.accessor.XWorkListPropertyAccessor"</span>
 <span class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"ognl.PropertyAccessor"</span> <span class="na">name=</span><span 
class="s">"java.util.Set"</span> <span class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.ognl.accessor.XWorkCollectionPropertyAccessor"</span>
 <span class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"ognl.PropertyAccessor"</span> <span class="na">name=</span><span 
class="s">"java.util.Map"</span> <span class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.ognl.accessor.XWorkMapPropertyAccessor"</span>
 <span class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"ognl.PropertyAccessor"</span> <span class="na">name=</span><span 
class="s">"java.util.Collection"</span> <span class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.ognl.accessor.XWorkCollectionPropertyAccessor"</span>
 <span class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"ognl.PropertyAccessor"</span> <span class="na">name=</span><span 
class="s">"com.opensymphony.xwork2.ognl.ObjectProxy"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.ognl.accessor.ObjectProxyPropertyAccessor"</span>
 <span class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"ognl.PropertyAccessor"</span> <span class="na">name=</span><span 
class="s">"org.apache.struts2.dispatcher.HttpParameters"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.ognl.accessor.HttpParametersPropertyAccessor"</span>
 <span class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"ognl.PropertyAccessor"</span> <span class="na">name=</span><span 
class="s">"org.apache.struts2.dispatcher.Parameter"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.ognl.accessor.ParameterPropertyAccessor"</span>
 <span class="nt">/&gt;</span>
+
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"ognl.MethodAccessor"</span> <span class="na">name=</span><span 
class="s">"java.lang.Object"</span> <span class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.ognl.accessor.XWorkMethodAccessor"</span> 
<span class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"ognl.MethodAccessor"</span> <span class="na">name=</span><span 
class="s">"com.opensymphony.xwork2.util.CompoundRoot"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.ognl.accessor.CompoundRootAccessor"</span> 
<span class="nt">/&gt;</span>
+
+    <span class="nt">&lt;bean</span> <span class="na">class=</span><span 
class="s">"org.apache.struts2.views.jsp.ui.OgnlTool"</span> <span 
class="nt">/&gt;</span>
+
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"org.apache.struts2.dispatcher.StaticContentLoader"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.dispatcher.DefaultStaticContentLoader"</span> 
<span class="na">name=</span><span class="s">"struts"</span> <span 
class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"com.opensymphony.xwork2.UnknownHandlerManager"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.DefaultUnknownHandlerManager"</span> <span 
class="na">name=</span><span class="s">"struts"</span> <span 
class="nt">/&gt;</span>
+
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"org.apache.struts2.dispatcher.DispatcherErrorHandler"</span> <span 
class="na">name=</span><span class="s">"struts"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.dispatcher.DefaultDispatcherErrorHandler"</span> 
<span class="nt">/&gt;</span>
+    
+    <span class="nt">&lt;constant</span> <span class="na">name=</span><span 
class="s">"struts.dispatcher.errorHandler"</span> <span 
class="na">value=</span><span class="s">"struts"</span> <span 
class="nt">/&gt;</span>
+
+    <span class="c">&lt;!--  Silly workarounds for OGNL since there is 
currently no way to flush its internal caches --&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"ognl.PropertyAccessor"</span> <span class="na">name=</span><span 
class="s">"java.util.ArrayList"</span> <span class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.ognl.accessor.XWorkListPropertyAccessor"</span>
 <span class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"ognl.PropertyAccessor"</span> <span class="na">name=</span><span 
class="s">"java.util.HashSet"</span> <span class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.ognl.accessor.XWorkCollectionPropertyAccessor"</span>
 <span class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"ognl.PropertyAccessor"</span> <span class="na">name=</span><span 
class="s">"java.util.HashMap"</span> <span class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.ognl.accessor.XWorkMapPropertyAccessor"</span>
 <span class="nt">/&gt;</span>
+
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"com.opensymphony.xwork2.security.ExcludedPatternsChecker"</span> 
<span class="na">name=</span><span class="s">"struts"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.security.DefaultExcludedPatternsChecker"</span>
 <span class="na">scope=</span><span class="s">"prototype"</span> <span 
class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"com.opensymphony.xwork2.security.AcceptedPatternsChecker"</span> 
<span class="na">name=</span><span class="s">"struts"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.security.DefaultAcceptedPatternsChecker"</span>
 <span class="na">scope=</span><span class="s">"prototype"</span> <span 
class="nt">/&gt;</span>
+
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"com.opensymphony.xwork2.config.providers.ValueSubstitutor"</span> 
<span class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.config.providers.EnvsValueSubstitutor"</span>
 <span class="na">scope=</span><span class="s">"singleton"</span><span 
class="nt">/&gt;</span>
+
+    <span class="nt">&lt;package</span> <span class="na">name=</span><span 
class="s">"struts-default"</span> <span class="na">abstract=</span><span 
class="s">"true"</span> <span class="na">strict-method-invocation=</span><span 
class="s">"true"</span><span class="nt">&gt;</span>
+        <span class="nt">&lt;result-types&gt;</span>
+            <span class="nt">&lt;result-type</span> <span 
class="na">name=</span><span class="s">"chain"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.ActionChainResult"</span><span 
class="nt">/&gt;</span>
+            <span class="nt">&lt;result-type</span> <span 
class="na">name=</span><span class="s">"dispatcher"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.result.ServletDispatcherResult"</span> <span 
class="na">default=</span><span class="s">"true"</span><span 
class="nt">/&gt;</span>
+            <span class="nt">&lt;result-type</span> <span 
class="na">name=</span><span class="s">"freemarker"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.views.freemarker.FreemarkerResult"</span><span 
class="nt">/&gt;</span>
+            <span class="nt">&lt;result-type</span> <span 
class="na">name=</span><span class="s">"httpheader"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.result.HttpHeaderResult"</span><span 
class="nt">/&gt;</span>
+            <span class="nt">&lt;result-type</span> <span 
class="na">name=</span><span class="s">"redirect"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.result.ServletRedirectResult"</span><span 
class="nt">/&gt;</span>
+            <span class="nt">&lt;result-type</span> <span 
class="na">name=</span><span class="s">"redirectAction"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.result.ServletActionRedirectResult"</span><span 
class="nt">/&gt;</span>
+            <span class="nt">&lt;result-type</span> <span 
class="na">name=</span><span class="s">"stream"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.result.StreamResult"</span><span 
class="nt">/&gt;</span>
+            <span class="nt">&lt;result-type</span> <span 
class="na">name=</span><span class="s">"velocity"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.result.VelocityResult"</span><span 
class="nt">/&gt;</span>
+            <span class="nt">&lt;result-type</span> <span 
class="na">name=</span><span class="s">"xslt"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.views.xslt.XSLTResult"</span><span 
class="nt">/&gt;</span>
+            <span class="nt">&lt;result-type</span> <span 
class="na">name=</span><span class="s">"plainText"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.result.PlainTextResult"</span> <span 
class="nt">/&gt;</span>
+            <span class="nt">&lt;result-type</span> <span 
class="na">name=</span><span class="s">"postback"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.result.PostbackResult"</span> <span 
class="nt">/&gt;</span>
+        <span class="nt">&lt;/result-types&gt;</span>
+
+        <span class="nt">&lt;interceptors&gt;</span>
+            <span class="nt">&lt;interceptor</span> <span 
class="na">name=</span><span class="s">"alias"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.interceptor.AliasInterceptor"</span><span 
class="nt">/&gt;</span>
+            <span class="nt">&lt;interceptor</span> <span 
class="na">name=</span><span class="s">"autowiring"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.spring.interceptor.ActionAutowiringInterceptor"</span><span
 class="nt">/&gt;</span>
+            <span class="nt">&lt;interceptor</span> <span 
class="na">name=</span><span class="s">"chain"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.interceptor.ChainingInterceptor"</span><span 
class="nt">/&gt;</span>
+            <span class="nt">&lt;interceptor</span> <span 
class="na">name=</span><span class="s">"conversionError"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.interceptor.StrutsConversionErrorInterceptor"</span><span
 class="nt">/&gt;</span>
+            <span class="nt">&lt;interceptor</span> <span 
class="na">name=</span><span class="s">"cookie"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.interceptor.CookieInterceptor"</span><span 
class="nt">/&gt;</span>
+            <span class="nt">&lt;interceptor</span> <span 
class="na">name=</span><span class="s">"cookieProvider"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.interceptor.CookieProviderInterceptor"</span><span
 class="nt">/&gt;</span>
+            <span class="nt">&lt;interceptor</span> <span 
class="na">name=</span><span class="s">"clearSession"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.interceptor.ClearSessionInterceptor"</span> <span 
class="nt">/&gt;</span>
+            <span class="nt">&lt;interceptor</span> <span 
class="na">name=</span><span class="s">"createSession"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.interceptor.CreateSessionInterceptor"</span> 
<span class="nt">/&gt;</span>
+            <span class="nt">&lt;interceptor</span> <span 
class="na">name=</span><span class="s">"debugging"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.interceptor.debugging.DebuggingInterceptor"</span>
 <span class="nt">/&gt;</span>
+            <span class="nt">&lt;interceptor</span> <span 
class="na">name=</span><span class="s">"execAndWait"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.interceptor.ExecuteAndWaitInterceptor"</span><span
 class="nt">/&gt;</span>
+            <span class="nt">&lt;interceptor</span> <span 
class="na">name=</span><span class="s">"exception"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor"</span><span
 class="nt">/&gt;</span>
+            <span class="nt">&lt;interceptor</span> <span 
class="na">name=</span><span class="s">"fileUpload"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.interceptor.FileUploadInterceptor"</span><span 
class="nt">/&gt;</span>
+            <span class="nt">&lt;interceptor</span> <span 
class="na">name=</span><span class="s">"i18n"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.interceptor.I18nInterceptor"</span><span 
class="nt">/&gt;</span>
+            <span class="nt">&lt;interceptor</span> <span 
class="na">name=</span><span class="s">"logger"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.interceptor.LoggingInterceptor"</span><span 
class="nt">/&gt;</span>
+            <span class="nt">&lt;interceptor</span> <span 
class="na">name=</span><span class="s">"modelDriven"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor"</span><span
 class="nt">/&gt;</span>
+            <span class="nt">&lt;interceptor</span> <span 
class="na">name=</span><span class="s">"scopedModelDriven"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor"</span><span
 class="nt">/&gt;</span>
+            <span class="nt">&lt;interceptor</span> <span 
class="na">name=</span><span class="s">"params"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.interceptor.ParametersInterceptor"</span><span
 class="nt">/&gt;</span>
+            <span class="nt">&lt;interceptor</span> <span 
class="na">name=</span><span class="s">"actionMappingParams"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.interceptor.ActionMappingParametersInteceptor"</span><span
 class="nt">/&gt;</span>
+            <span class="nt">&lt;interceptor</span> <span 
class="na">name=</span><span class="s">"prepare"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.interceptor.PrepareInterceptor"</span><span 
class="nt">/&gt;</span>
+            <span class="nt">&lt;interceptor</span> <span 
class="na">name=</span><span class="s">"staticParams"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.interceptor.StaticParametersInterceptor"</span><span
 class="nt">/&gt;</span>
+            <span class="nt">&lt;interceptor</span> <span 
class="na">name=</span><span class="s">"scope"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.interceptor.ScopeInterceptor"</span><span 
class="nt">/&gt;</span>
+            <span class="nt">&lt;interceptor</span> <span 
class="na">name=</span><span class="s">"servletConfig"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.interceptor.ServletConfigInterceptor"</span><span 
class="nt">/&gt;</span>
+            <span class="nt">&lt;interceptor</span> <span 
class="na">name=</span><span class="s">"timer"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.interceptor.TimerInterceptor"</span><span 
class="nt">/&gt;</span>
+            <span class="nt">&lt;interceptor</span> <span 
class="na">name=</span><span class="s">"token"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.interceptor.TokenInterceptor"</span><span 
class="nt">/&gt;</span>
+            <span class="nt">&lt;interceptor</span> <span 
class="na">name=</span><span class="s">"tokenSession"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.interceptor.TokenSessionStoreInterceptor"</span><span
 class="nt">/&gt;</span>
+            <span class="nt">&lt;interceptor</span> <span 
class="na">name=</span><span class="s">"validation"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor"</span><span
 class="nt">/&gt;</span>
+            <span class="nt">&lt;interceptor</span> <span 
class="na">name=</span><span class="s">"workflow"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor"</span><span
 class="nt">/&gt;</span>
+            <span class="nt">&lt;interceptor</span> <span 
class="na">name=</span><span class="s">"store"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.interceptor.MessageStoreInterceptor"</span> <span 
class="nt">/&gt;</span>
+            <span class="nt">&lt;interceptor</span> <span 
class="na">name=</span><span class="s">"checkbox"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.interceptor.CheckboxInterceptor"</span> <span 
class="nt">/&gt;</span>
+            <span class="nt">&lt;interceptor</span> <span 
class="na">name=</span><span class="s">"datetime"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.interceptor.DateTextFieldInterceptor"</span> 
<span class="nt">/&gt;</span>
+            <span class="nt">&lt;interceptor</span> <span 
class="na">name=</span><span class="s">"profiling"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.interceptor.ProfilingActivationInterceptor"</span>
 <span class="nt">/&gt;</span>
+            <span class="nt">&lt;interceptor</span> <span 
class="na">name=</span><span class="s">"roles"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.interceptor.RolesInterceptor"</span> <span 
class="nt">/&gt;</span>
+            <span class="nt">&lt;interceptor</span> <span 
class="na">name=</span><span class="s">"annotationWorkflow"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.interceptor.annotations.AnnotationWorkflowInterceptor"</span>
 <span class="nt">/&gt;</span>
+            <span class="nt">&lt;interceptor</span> <span 
class="na">name=</span><span class="s">"multiselect"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.interceptor.MultiselectInterceptor"</span> <span 
class="nt">/&gt;</span>
+            <span class="nt">&lt;interceptor</span> <span 
class="na">name=</span><span class="s">"noop"</span> <span 
class="na">class=</span><span 
class="s">"org.apache.struts2.interceptor.NoOpInterceptor"</span> <span 
class="nt">/&gt;</span>
+
+            <span class="c">&lt;!-- Empty stack - performs no operations 
--&gt;</span>
+            <span class="nt">&lt;interceptor-stack</span> <span 
class="na">name=</span><span class="s">"emptyStack"</span><span 
class="nt">&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"noop"</span><span 
class="nt">/&gt;</span>
+            <span class="nt">&lt;/interceptor-stack&gt;</span>
+
+            <span class="c">&lt;!-- Basic stack --&gt;</span>
+            <span class="nt">&lt;interceptor-stack</span> <span 
class="na">name=</span><span class="s">"basicStack"</span><span 
class="nt">&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"exception"</span><span 
class="nt">/&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"servletConfig"</span><span 
class="nt">/&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"prepare"</span><span 
class="nt">/&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"checkbox"</span><span 
class="nt">/&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"datetime"</span><span 
class="nt">/&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"multiselect"</span><span 
class="nt">/&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"actionMappingParams"</span><span 
class="nt">/&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"params"</span><span 
class="nt">/&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"conversionError"</span><span 
class="nt">/&gt;</span>
+            <span class="nt">&lt;/interceptor-stack&gt;</span>
+
+            <span class="c">&lt;!-- Sample validation and workflow stack 
--&gt;</span>
+            <span class="nt">&lt;interceptor-stack</span> <span 
class="na">name=</span><span class="s">"validationWorkflowStack"</span><span 
class="nt">&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"basicStack"</span><span 
class="nt">/&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"validation"</span><span 
class="nt">/&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"workflow"</span><span 
class="nt">/&gt;</span>
+            <span class="nt">&lt;/interceptor-stack&gt;</span>
+
+            <span class="c">&lt;!-- Sample file upload stack --&gt;</span>
+            <span class="nt">&lt;interceptor-stack</span> <span 
class="na">name=</span><span class="s">"fileUploadStack"</span><span 
class="nt">&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"fileUpload"</span><span 
class="nt">/&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"basicStack"</span><span 
class="nt">/&gt;</span>
+            <span class="nt">&lt;/interceptor-stack&gt;</span>
+
+            <span class="c">&lt;!-- Sample model-driven stack  --&gt;</span>
+            <span class="nt">&lt;interceptor-stack</span> <span 
class="na">name=</span><span class="s">"modelDrivenStack"</span><span 
class="nt">&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"modelDriven"</span><span 
class="nt">/&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"basicStack"</span><span 
class="nt">/&gt;</span>
+            <span class="nt">&lt;/interceptor-stack&gt;</span>
+
+            <span class="c">&lt;!-- Sample action chaining stack --&gt;</span>
+            <span class="nt">&lt;interceptor-stack</span> <span 
class="na">name=</span><span class="s">"chainStack"</span><span 
class="nt">&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"chain"</span><span 
class="nt">/&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"basicStack"</span><span 
class="nt">/&gt;</span>
+            <span class="nt">&lt;/interceptor-stack&gt;</span>
+
+            <span class="c">&lt;!-- Sample i18n stack --&gt;</span>
+            <span class="nt">&lt;interceptor-stack</span> <span 
class="na">name=</span><span class="s">"i18nStack"</span><span 
class="nt">&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"i18n"</span><span 
class="nt">/&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"basicStack"</span><span 
class="nt">/&gt;</span>
+            <span class="nt">&lt;/interceptor-stack&gt;</span>
+
+            <span class="c">&lt;!-- An example of the paramsPrepareParams 
trick. This stack
+                 is exactly the same as the defaultStack, except that it
+                 includes one extra interceptor before the prepare interceptor:
+                 the params interceptor.
+
+                 This is useful for when you wish to apply parameters directly
+                 to an object that you wish to load externally (such as a DAO
+                 or database or service layer), but can't load that object
+                 until at least the ID parameter has been loaded. By loading
+                 the parameters twice, you can retrieve the object in the
+                 prepare() method, allowing the second params interceptor to
+                 apply the values on the object. --&gt;</span>
+            <span class="nt">&lt;interceptor-stack</span> <span 
class="na">name=</span><span class="s">"paramsPrepareParamsStack"</span><span 
class="nt">&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"exception"</span><span 
class="nt">/&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"alias"</span><span 
class="nt">/&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"i18n"</span><span 
class="nt">/&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"checkbox"</span><span 
class="nt">/&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"datetime"</span><span 
class="nt">/&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"multiselect"</span><span 
class="nt">/&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"params"</span><span 
class="nt">/&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"servletConfig"</span><span 
class="nt">/&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"prepare"</span><span 
class="nt">/&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"chain"</span><span 
class="nt">/&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"modelDriven"</span><span 
class="nt">/&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"fileUpload"</span><span 
class="nt">/&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"staticParams"</span><span 
class="nt">/&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"actionMappingParams"</span><span 
class="nt">/&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"params"</span><span 
class="nt">/&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"conversionError"</span><span 
class="nt">/&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"validation"</span><span 
class="nt">&gt;</span>
+                    <span class="nt">&lt;param</span> <span 
class="na">name=</span><span class="s">"excludeMethods"</span><span 
class="nt">&gt;</span>input,back,cancel,browse<span 
class="nt">&lt;/param&gt;</span>
+                <span class="nt">&lt;/interceptor-ref&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"workflow"</span><span 
class="nt">&gt;</span>
+                    <span class="nt">&lt;param</span> <span 
class="na">name=</span><span class="s">"excludeMethods"</span><span 
class="nt">&gt;</span>input,back,cancel,browse<span 
class="nt">&lt;/param&gt;</span>
+                <span class="nt">&lt;/interceptor-ref&gt;</span>
+            <span class="nt">&lt;/interceptor-stack&gt;</span>
+
+            <span class="c">&lt;!-- A complete stack with all the common 
interceptors in place.
+                 Generally, this stack should be the one you use, though it
+                 may do more than you need. Also, the ordering can be
+                 switched around (ex: if you wish to have your servlet-related
+                 objects applied before prepare() is called, you'd need to move
+                 servletConfig interceptor up.
+
+                 This stack also excludes from the normal validation and 
workflow
+                 the method names input, back, and cancel. These typically are
+                 associated with requests that should not be validated.
+                 --&gt;</span>
+            <span class="nt">&lt;interceptor-stack</span> <span 
class="na">name=</span><span class="s">"defaultStack"</span><span 
class="nt">&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"exception"</span><span 
class="nt">/&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"alias"</span><span 
class="nt">/&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"servletConfig"</span><span 
class="nt">/&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"i18n"</span><span 
class="nt">/&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"prepare"</span><span 
class="nt">/&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"chain"</span><span 
class="nt">/&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"scopedModelDriven"</span><span 
class="nt">/&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"modelDriven"</span><span 
class="nt">/&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"fileUpload"</span><span 
class="nt">/&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"checkbox"</span><span 
class="nt">/&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"datetime"</span><span 
class="nt">/&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"multiselect"</span><span 
class="nt">/&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"staticParams"</span><span 
class="nt">/&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"actionMappingParams"</span><span 
class="nt">/&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"params"</span><span 
class="nt">/&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"conversionError"</span><span 
class="nt">/&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"validation"</span><span 
class="nt">&gt;</span>
+                    <span class="nt">&lt;param</span> <span 
class="na">name=</span><span class="s">"excludeMethods"</span><span 
class="nt">&gt;</span>input,back,cancel,browse<span 
class="nt">&lt;/param&gt;</span>
+                <span class="nt">&lt;/interceptor-ref&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"workflow"</span><span 
class="nt">&gt;</span>
+                    <span class="nt">&lt;param</span> <span 
class="na">name=</span><span class="s">"excludeMethods"</span><span 
class="nt">&gt;</span>input,back,cancel,browse<span 
class="nt">&lt;/param&gt;</span>
+                <span class="nt">&lt;/interceptor-ref&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"debugging"</span><span 
class="nt">/&gt;</span>
+            <span class="nt">&lt;/interceptor-stack&gt;</span>
+
+            <span class="c">&lt;!-- The completeStack is here for backwards 
compatibility for
+                 applications that still refer to the defaultStack by the
+                 old name --&gt;</span>
+            <span class="nt">&lt;interceptor-stack</span> <span 
class="na">name=</span><span class="s">"completeStack"</span><span 
class="nt">&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"defaultStack"</span><span 
class="nt">/&gt;</span>
+            <span class="nt">&lt;/interceptor-stack&gt;</span>
+
+            <span class="c">&lt;!-- Sample execute and wait stack.
+                 Note: execAndWait should always be the *last* interceptor. 
--&gt;</span>
+            <span class="nt">&lt;interceptor-stack</span> <span 
class="na">name=</span><span class="s">"executeAndWaitStack"</span><span 
class="nt">&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"execAndWait"</span><span 
class="nt">&gt;</span>
+                    <span class="nt">&lt;param</span> <span 
class="na">name=</span><span class="s">"excludeMethods"</span><span 
class="nt">&gt;</span>input,back,cancel<span class="nt">&lt;/param&gt;</span>
+                <span class="nt">&lt;/interceptor-ref&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"defaultStack"</span><span 
class="nt">/&gt;</span>
+                <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"execAndWait"</span><span 
class="nt">&gt;</span>
+                    <span class="nt">&lt;param</span> <span 
class="na">name=</span><span class="s">"excludeMethods"</span><span 
class="nt">&gt;</span>input,back,cancel<span class="nt">&lt;/param&gt;</span>
+                <span class="nt">&lt;/interceptor-ref&gt;</span>
+            <span class="nt">&lt;/interceptor-stack&gt;</span>
+
+       <span class="nt">&lt;/interceptors&gt;</span>
+
+        <span class="nt">&lt;default-interceptor-ref</span> <span 
class="na">name=</span><span class="s">"defaultStack"</span><span 
class="nt">/&gt;</span>
+
+        <span class="nt">&lt;default-class-ref</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.ActionSupport"</span> <span 
class="nt">/&gt;</span>
+
+        <span 
class="nt">&lt;global-allowed-methods&gt;</span>execute,input,back,cancel,browse,save,delete,list,index<span
 class="nt">&lt;/global-allowed-methods&gt;</span>
+
+    <span class="nt">&lt;/package&gt;</span>
+
+<span class="nt">&lt;/struts&gt;</span></code></pre></figure>
 
 <p>Since the <code class="highlighter-rouge">struts-default.xml</code> is 
included in the application’s configuration by default, all of the predefined 
 interceptors and stacks are available “out of the box”.</p>

http://git-wip-us.apache.org/repos/asf/struts-site/blob/f694fc8f/content/core-developers/localization.html
----------------------------------------------------------------------
diff --git a/content/core-developers/localization.html 
b/content/core-developers/localization.html
index f4645cd..40bcea9 100644
--- a/content/core-developers/localization.html
+++ b/content/core-developers/localization.html
@@ -127,309 +127,158 @@
     <a class="edit-on-gh" 
href="https://github.com/apache/struts-site/edit/master/source/core-developers/localization.md";
 title="Edit this page on GitHub">Edit on GitHub</a>
     <h1 id="localization">Localization</h1>
 
-<p>####Overview####</p>
+<h2 id="overview">Overview</h2>
 
 <p>The framework supports internationalization (i18n) in the following 
places:</p>
 
 <ol>
-  <li>
-    <p>the <em>UI Tags</em></p>
-  </li>
-  <li>
-    <p>Messages and Errors from the <a 
href="http://struts.apache.org/2.0.6/struts2-core/apidocs/index.html?com/opensymphony/xwork2/ValidationAware.html";>ValidationAware</a>^[http://struts.apache.org/2.0.6/struts2-core/apidocs/index.html?com/opensymphony/xwork2/ValidationAware.html]
 interface (implemented by <a 
href="http://struts.apache.org/2.0.6/struts2-core/apidocs/index.html?com/opensymphony/xwork2/ActionSupport.html";>ActionSupport</a>^[http://struts.apache.org/2.0.6/struts2-core/apidocs/index.html?com/opensymphony/xwork2/ActionSupport.html]
 and <a 
href="http://struts.apache.org/2.0.6/struts2-core/apidocs/index.html?com/opensymphony/xwork2/ValidationAwareSupport.html";>ValidationAwareSupport</a>^[http://struts.apache.org/2.0.6/struts2-core/apidocs/index.html?com/opensymphony/xwork2/ValidationAwareSupport.html])</p>
-  </li>
-  <li>
-    <p>Within action classes that extend <a 
href="http://struts.apache.org/2.0.6/struts2-core/apidocs/index.html?com/opensymphony/xwork2/ActionSupport.html";>ActionSupport</a>^[http://struts.apache.org/2.0.6/struts2-core/apidocs/index.html?com/opensymphony/xwork2/ActionSupport.html]
 through the getText() method</p>
-  </li>
+  <li>the <em>UI Tags</em></li>
+  <li>Messages and Errors from the <a 
href="http://struts.apache.org/struts2-core/apidocs/index.html?com/opensymphony/xwork2/ValidationAware.html";>ValidationAware</a></li>
+  <li>Within action classes that extend <a 
href="http://struts.apache.org/struts2-core/apidocs/index.html?com/opensymphony/xwork2/ActionSupport.html";>ActionSupport</a>
 through the <code class="highlighter-rouge">getText()</code> method</li>
 </ol>
 
-<p>####Resource Bundle Search Order####</p>
+<h2 id="resource-bundle-search-order">Resource Bundle Search Order</h2>
 
 <p>Resource bundles are searched in the following order:</p>
 
 <ol>
-  <li></li>
+  <li><code class="highlighter-rouge">ActionClass</code>.properties</li>
+  <li><code class="highlighter-rouge">Interface</code>.properties (every 
interface and sub-interface)</li>
+  <li><code class="highlighter-rouge">BaseClass</code>.properties (all the way 
to Object.properties)</li>
+  <li>ModelDriven’s model (if implements ModelDriven), for the model object 
repeat from 1</li>
+  <li>package.properties (of the directory where class is located and every 
parent directory all the way to the root directory)</li>
+  <li>search up the i18n message key hierarchy itself</li>
+  <li>global resource properties</li>
 </ol>
 
-<div class="highlighter-rouge"><pre class="highlight"><code>ActionClass
-</code></pre>
-</div>
-<p>.properties</p>
-
-<ol>
-  <li></li>
-</ol>
-
-<div class="highlighter-rouge"><pre class="highlight"><code>Interface
-</code></pre>
-</div>
-<p>.properties (every interface and sub-interface)</p>
-
-<ol>
-  <li></li>
-</ol>
-
-<div class="highlighter-rouge"><pre class="highlight"><code>BaseClass
-</code></pre>
-</div>
-<p>.properties (all the way to Object.properties)</p>
-
-<ol>
-  <li>
-    <p>ModelDriven’s model (if implements ModelDriven), for the model object 
repeat from 1</p>
-  </li>
-  <li>
-    <p>package.properties (of the directory where class is located and every 
parent directory all the way to the root directory)</p>
-  </li>
-  <li>
-    <p>search up the i18n message key hierarchy itself</p>
-  </li>
-  <li>
-    <p>global resource properties</p>
-  </li>
-</ol>
-
-<p>This is how it is implemented in a default implementation of the </p>
+<p>This is how it is implemented in a default implementation of the <code 
class="highlighter-rouge">LocalizedTextProvider</code> interface. You can 
provide your 
+own implementation using <code class="highlighter-rouge">TextProvider</code> 
and <code class="highlighter-rouge">TextProviderFactory</code> interfaces.</p>
 
-<div class="highlighter-rouge"><pre 
class="highlight"><code>LocalizedTextProvider
-</code></pre>
-</div>
-<p> interface. You can provide your own implementation using</p>
+<p>To clarify #5, while traversing the package hierarchy, Struts 2 will look 
for a file <code class="highlighter-rouge">package.properties</code>:</p>
 
-<div class="highlighter-rouge"><pre class="highlight"><code>TextProvider
-</code></pre>
-</div>
-<p> and</p>
-
-<div class="highlighter-rouge"><pre class="highlight"><code>TextProviderFactory
-</code></pre>
-</div>
-<p> interfaces.</p>
-
-<table>
-  <tbody>
-    <tr>
-      <td>To clarify #5, while traversing the package hierarchy, Struts 2 will 
look for a file package.properties:</td>
-    </tr>
-  </tbody>
-</table>
-
-<p>| com/
-     acme/
+<div class="highlighter-rouge"><pre class="highlight"><code>com/
+    acme/
          package.properties
          actions/
                  package.properties
                  FooAction.java
-                 FooAction.properties</p>
-
-<table>
-  <tbody>
-    <tr>
-    </tr>
-  </tbody>
-</table>
-
-<table>
-  <tbody>
-    <tr>
-      <td>If FooAction.properties does not exist, 
com/acme/action/package.properties will be searched for, if not found 
com/acme/package.properties, if not found com/package.properties, etc.</td>
-    </tr>
-  </tbody>
-</table>
-
-<table>
-  <tbody>
-    <tr>
-    </tr>
-  </tbody>
-</table>
-
-<p>#####Default action’s class#####</p>
-
-<p>If you configure action as follow</p>
-
-<div class="highlighter-rouge"><pre class="highlight"><code>&lt;action 
name="index"&gt;
-   &lt;result&gt;/index.jsp&lt;/result&gt;
-&lt;/action&gt;
+                 FooAction.properties
 </code></pre>
 </div>
 
-<p>it will use a default class defined with </p>
+<blockquote>
+  <p>If <code class="highlighter-rouge">FooAction.properties</code> does not 
exist, <code 
class="highlighter-rouge">com/acme/action/package.properties</code> will be 
searched for, if not found 
+<code class="highlighter-rouge">com/acme/package.properties</code>, if not 
found <code class="highlighter-rouge">com/package.properties</code>, etc.</p>
+</blockquote>
 
-<div class="highlighter-rouge"><pre class="highlight"><code>default-class-ref
-</code></pre>
-</div>
-<p> in </p>
+<h2 id="default-actions-class">Default action’s class</h2>
 
-<div class="highlighter-rouge"><pre class="highlight"><code>struts-default.xml
-</code></pre>
-</div>
-<p>which is </p>
+<p>If you configure action as follow</p>
 
-<div class="highlighter-rouge"><pre 
class="highlight"><code>com.opensymphony.xwork2.ActionSupport
+<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="nt">&lt;action</span> <span class="na">name=</span><span 
class="s">"index"</span><span class="nt">&gt;</span>
+   <span class="nt">&lt;result&gt;</span>/index.jsp<span 
class="nt">&lt;/result&gt;</span>
+<span class="nt">&lt;/action&gt;</span>
 </code></pre>
 </div>
-<p>. It means you have two options here to get I18N working in that case:</p>
 
-<ul>
-  <li>define </li>
-</ul>
-
-<div class="highlighter-rouge"><pre 
class="highlight"><code>com/opensymphony/xwork2/ActionSupport.properties
-</code></pre>
-</div>
-<p>and put messages there</p>
+<p>it will use a default class defined with <code 
class="highlighter-rouge">default-class-ref</code> in <code 
class="highlighter-rouge">struts-default.xml</code> which is 
+<code class="highlighter-rouge">com.opensymphony.xwork2.ActionSupport</code>. 
It means you have two options here to get I18N working in that case:</p>
 
 <ul>
-  <li>point </li>
+  <li>define <code 
class="highlighter-rouge">com/opensymphony/xwork2/ActionSupport.properties</code>
 and put messages there</li>
+  <li>point <code class="highlighter-rouge">default-class-ref</code> to your 
base class and then defined appropriated <code 
class="highlighter-rouge">.properties</code> file (corresponding to 
+class’ name or package)</li>
 </ul>
 
-<div class="highlighter-rouge"><pre class="highlight"><code>default-class-ref
-</code></pre>
-</div>
-<p>to your base class and then defined appropriated</p>
+<h2 id="examples">Examples</h2>
 
-<div class="highlighter-rouge"><pre class="highlight"><code>.properties
-</code></pre>
-</div>
-<p> file (corresponding to class’ name or package)</p>
+<p>There are several ways to access the message resources, including <code 
class="highlighter-rouge">getText</code>, the <code 
class="highlighter-rouge">text</code> tag, and the <code 
class="highlighter-rouge">i18n</code> tag.</p>
 
-<p>Examples</p>
+<h3 id="using-gettext-from-a-tag">Using getText from a Tag</h3>
 
-<p>There are several ways to access the message resources, including</p>
+<p>To display i18n text, use a call to <code 
class="highlighter-rouge">getText</code> in the <code 
class="highlighter-rouge">property</code> tag, or any other tag, such as the UI 
tags. (The <code class="highlighter-rouge">getText</code>
+technique is especially useful for labels of UI tags.)</p>
 
-<div class="highlighter-rouge"><pre class="highlight"><code>getText
+<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="nt">&lt;s:property</span> <span class="na">value=</span><span 
class="s">"getText('some.key')"</span> <span class="nt">/&gt;</span>
 </code></pre>
 </div>
-<p>, the</p>
 
-<div class="highlighter-rouge"><pre class="highlight"><code>text
-</code></pre>
-</div>
-<p>tag, and the</p>
+<p>The default implementation of <code 
class="highlighter-rouge">TextProvider</code> which is used in <code 
class="highlighter-rouge">ActionSupport</code> perform evaluation of value read 
from 
+bundle base on the provided key, see [Localizing Output] for an example.</p>
 
-<div class="highlighter-rouge"><pre class="highlight"><code>i18n
-</code></pre>
-</div>
-<p>tag.</p>
+<h3 id="using-the-text-tag">Using the text tag</h3>
 
-<p>#####Using getText from a Tag#####</p>
+<p>The <code class="highlighter-rouge">text</code> tag retrieves a message 
from the default resource bundle.</p>
 
-<p>To display i18n text, use a call to</p>
+<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="nt">&lt;s:text</span> <span class="na">name=</span><span 
class="s">"some.key"</span> <span class="nt">/&gt;</span>
 
-<div class="highlighter-rouge"><pre class="highlight"><code>getText
+<span class="nt">&lt;s:text</span> <span class="na">name=</span><span 
class="s">"some.invalid.key"</span><span class="nt">&gt;</span>
+    The Default Message That Will Be Displayed
+<span class="nt">&lt;/s:text&gt;</span>
 </code></pre>
 </div>
-<p>in the <em>property</em>  tag, or any other tag, such as the UI tags. 
(The</p>
 
-<div class="highlighter-rouge"><pre class="highlight"><code>getText
-</code></pre>
-</div>
-<p>technique is especially useful for labels of UI tags.)</p>
+<h3 id="using-the-i18n-tag">Using the I18n tag</h3>
 
-<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="p">{</span><span 
class="err">snippet:id=i18nExample|javadoc=true|lang=xml|url=org.apache.struts2.components.Property</span><span
 class="p">}</span><span class="w">
-</span></code></pre>
-</div>
+<p>The <code class="highlighter-rouge">i18n</code> tag pushes an arbitrary 
resource bundle on to the value stack. Other tags within the scope of the i18n 
tag 
+can display messages from that resource bundle.</p>
 
-<p>The default implementation of TextProvider which is used in ActionSupport 
perform evaluation of value read from bundle base on the provided key, see 
<em>Localizing Output</em>  for an example.</p>
-
-<table>
-  <tbody>
-    <tr>
-    </tr>
-  </tbody>
-</table>
-
-<p>#####Using the text tag#####</p>
-
-<p>The <em>text</em>  tag retrieves a message from the default resource 
bundle.</p>
-
-<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="p">{</span><span 
class="err">snippet:id=i18nExample|javadoc=true|lang=xml|url=org.apache.struts2.components.Text</span><span
 class="p">}</span><span class="w">
-</span></code></pre>
-</div>
-
-<p>#####Using the I18n tag#####</p>
-
-<p>The <em>i18n</em>  tag pushes an arbitrary resource bundle on to the value 
stack. Other tags within the scope of the i18n tag can display messages from 
that resource bundle.</p>
-
-<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="p">{</span><span 
class="err">snippet:id=i18nExample|javadoc=true|lang=xml|url=org.apache.struts2.components.I18n</span><span
 class="p">}</span><span class="w">
-</span></code></pre>
+<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="nt">&lt;s:i18n</span> <span class="na">name=</span><span 
class="s">"some.package.bundle"</span><span 
class="nt">&gt;&lt;/s:i18n&gt;</span>
+  <span class="nt">&lt;s:text</span> <span class="na">name=</span><span 
class="s">"some.key"</span> <span class="nt">/&gt;</span>
+<span class="nt">&lt;/s:i18n&gt;</span>
+</code></pre>
 </div>
 
-<p>Internationalizing SiteMesh decorators is possible, but there are quirks. 
See <em>SiteMesh Plugin</em>  for more.</p>
+<p>Internationalizing SiteMesh decorators is possible, but there are quirks. 
See <a href="../plugins/sitemesh/">SiteMesh Plugin</a><br />
+for more.</p>
 
-<table>
-  <tbody>
-    <tr>
-    </tr>
-  </tbody>
-</table>
-
-<p>#####Using the Key attribute of UI Tags#####</p>
+<h3 id="using-the-key-attribute-of-ui-tags">Using the Key attribute of UI 
Tags</h3>
 
 <p>The key attribute of most UI tags can be used to retrieve a message from a 
resource bundle:</p>
 
-<div class="highlighter-rouge"><pre class="highlight"><code>&lt;s:textfield 
key="some.key" name="textfieldName"/&gt;
+<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="nt">&lt;s:textfield</span> <span class="na">key=</span><span 
class="s">"some.key"</span> <span class="na">name=</span><span 
class="s">"textfieldName"</span><span class="nt">/&gt;</span>
 </code></pre>
 </div>
 
-<p>####I18n Interceptor####</p>
+<h2 id="i18n-interceptor">I18n Interceptor</h2>
 
-<p>Essentially, the i18n Interceptor pushes a locale into the ActionContext 
map upon every request. The framework components that support localization all 
utilize the ActionContext locale. See <a href="i18n-interceptor.html">I18n 
Interceptor</a> for details.</p>
+<p>Essentially, the i18n Interceptor pushes a locale into the ActionContext 
map upon every request. The framework 
+components that support localization all utilize the ActionContext locale. See 
<a href="i18n-interceptor.html">I18n Interceptor</a> f
+or details.</p>
 
-<p>####Global Resources (struts.custom.i18n.resources) in 
struts.properties####</p>
+<h2 id="global-resources-strutscustomi18nresources-in-strutsproperties">Global 
Resources (struts.custom.i18n.resources) in struts.properties</h2>
 
 <p>A global resource bundle could be specified programmatically, as well as 
the locale.</p>
 
-<p>####Formatting Dates and Numbers####</p>
+<h2 id="formatting-dates-and-numbers">Formatting Dates and Numbers</h2>
 
 <p>See <a href="formatting-dates-and-numbers.html">Formatting Dates and 
Numbers</a> for more details and examples.</p>
 
-<p>####Comparison with Struts 1####</p>
-
-<p>Struts 1 users should be familiar with the application.properties resource 
bundle, where you can put all the messages in the application that are going to 
be translated. Struts 2, though, splits the resource bundles per action or 
model class, and you may end up with duplicated messages in those resource 
bundles. A quick fix for that is to create a file called 
ActionSupport.properties in com/opensymphony/xwork2 and put it on your 
classpath. This will only work well if all your actions subclass XWork2’s 
ActionSupport.</p>
-
-<p>####Using only global bundles####</p>
+<h2 id="comparison-with-struts-1">Comparison with Struts 1</h2>
 
-<p>If you don’t need to use the package-scan-functionality and only base on 
the global bundles (those provided by the framework and via </p>
-
-<div class="highlighter-rouge"><pre 
class="highlight"><code>struts.custom.i18n.resources
-</code></pre>
-</div>
-<p>) you can use existing </p>
+<p>Struts 1 users should be familiar with the application.properties resource 
bundle, where you can put all the messages 
+in the application that are going to be translated. Struts 2, though, splits 
the resource bundles per action or model 
+class, and you may end up with duplicated messages in those resource bundles. 
A quick fix for that is to create a file 
+called ActionSupport.properties in com/opensymphony/xwork2 and put it on your 
classpath. This will only work well if 
+all your actions subclass XWork2’s ActionSupport.</p>
 
-<div class="highlighter-rouge"><pre 
class="highlight"><code>GlobalLocalizedTextProvider
-</code></pre>
-</div>
-<p>implementation. To use this please define the following option in your </p>
+<h2 id="using-only-global-bundles">Using only global bundles</h2>
 
-<div class="highlighter-rouge"><pre class="highlight"><code>struts.xml
-</code></pre>
-</div>
-<p>:</p>
+<p>If you don’t need to use the package-scan-functionality and only base on 
the global bundles (those provided by 
+the framework and via <code 
class="highlighter-rouge">struts.custom.i18n.resources</code>) you can use 
existing <code class="highlighter-rouge">GlobalLocalizedTextProvider</code>
+implementation. To use this please define the following option in your <code 
class="highlighter-rouge">struts.xml</code>:</p>
 
-<div class="highlighter-rouge"><pre class="highlight"><code>&lt;constant 
name="struts.localizedTextProvider" value="global-only" /&gt;
+<div class="highlighter-rouge"><pre class="highlight"><code><span 
class="nt">&lt;constant</span> <span class="na">name=</span><span 
class="s">"struts.localizedTextProvider"</span> <span 
class="na">value=</span><span class="s">"global-only"</span> <span 
class="nt">/&gt;</span>
 </code></pre>
 </div>
 
-<p>####Custom TextProvider and TextProviderFactory####</p>
+<h2 id="custom-textprovider-and-textproviderfactory">Custom TextProvider and 
TextProviderFactory</h2>
 
-<p>If you want use a different logic to search for localized messages, or you 
want to use a database or just want to search default bundles, you must 
implement both those interfaces (or subclass the existing implementations). You 
can check a small <a 
href="https://github\.com/apache/struts\-examples/tree/master/text\-provider";>example
 app</a>^[https://github.com/apache/struts-examples/tree/master/text-provider] 
how to use both. Please remember that the </p>
-
-<div class="highlighter-rouge"><pre class="highlight"><code>TextProvider
-</code></pre>
-</div>
-<p>interface is implemented by the </p>
-
-<div class="highlighter-rouge"><pre class="highlight"><code>ActioSupport
-</code></pre>
-</div>
-<p>class, that’s why an extra layer - </p>
-
-<div class="highlighter-rouge"><pre class="highlight"><code>TextProviderFactory
-</code></pre>
-</div>
-<p>- is needed.</p>
+<p>If you want use a different logic to search for localized messages, or you 
want to use a database or just want to search 
+default bundles, you must implement both those interfaces (or subclass the 
existing implementations). You can check 
+a small <a 
href="https://github.com/apache/struts\-examples/tree/master/text\-provider";>example
 app</a> how to use both. 
+Please remember that the <code class="highlighter-rouge">TextProvider</code> 
interface is implemented by the <code 
class="highlighter-rouge">ActionSupport</code> class, that’s why 
+an extra layer - <code class="highlighter-rouge">TextProviderFactory</code> - 
is needed.</p>
 
   </section>
 </article>

Reply via email to