Repository: struts-site Updated Branches: refs/heads/asf-site 36e3e8378 -> 26bb096d0
Updates production by Jenkins Project: http://git-wip-us.apache.org/repos/asf/struts-site/repo Commit: http://git-wip-us.apache.org/repos/asf/struts-site/commit/26bb096d Tree: http://git-wip-us.apache.org/repos/asf/struts-site/tree/26bb096d Diff: http://git-wip-us.apache.org/repos/asf/struts-site/diff/26bb096d Branch: refs/heads/asf-site Commit: 26bb096d00e60ae9e670053aeb506b77a7406773 Parents: 36e3e83 Author: jenkins <bui...@apache.org> Authored: Mon Jul 31 14:11:34 2017 +0000 Committer: jenkins <bui...@apache.org> Committed: Mon Jul 31 14:11:34 2017 +0000 ---------------------------------------------------------------------- content/core-developers/struts-default-xml.html | 452 +++++++++++++++++-- 1 file changed, 413 insertions(+), 39 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/struts-site/blob/26bb096d/content/core-developers/struts-default-xml.html ---------------------------------------------------------------------- diff --git a/content/core-developers/struts-default-xml.html b/content/core-developers/struts-default-xml.html index c11380e..8cc735f 100644 --- a/content/core-developers/struts-default-xml.html +++ b/content/core-developers/struts-default-xml.html @@ -126,45 +126,419 @@ <a href="index.html" title="back to Core Developers Guide"><< back to Core Developers Guide</a> <h1 id="struts-defaultxml">struts-default.xml</h1> -<p>A base configuration file named</p> - -<div class="highlighter-rouge"><pre class="highlight"><code>struts-default.xml -</code></pre> -</div> -<p>is included in the</p> - -<div class="highlighter-rouge"><pre class="highlight"><code>struts2.jar -</code></pre> -</div> -<p>file. This file is automatically included into</p> - -<div class="highlighter-rouge"><pre class="highlight"><code>struts.xml -</code></pre> -</div> -<p>file to provide the standard configuration settings without having to copy them.</p> - -<table> - <tbody> - <tr> - <td>To exclude the struts-default.xml or to provide your own version, see the struts.configuration.files setting in <a href="struts-properties.html">struts.properties</a>.</td> - </tr> - </tbody> -</table> - -<table> - <tbody> - <tr> - </tr> - </tbody> -</table> - -<p>The contents of struts-default.xml are here:</p> - -<div class="highlighter-rouge"><pre class="highlight"><code><span class="p">{</span><span class="err">snippet:id=all|lang=xml|url=struts2/core/src/main/resources/struts-default.xml</span><span class="p">}</span><span class="w"> -</span></code></pre> -</div> - -<p>This file defines all of the default bundled results and interceptors and many interceptor stacks which you can use either as-is or as a basis for your own application-specific interceptor stacks. <strong>Notice the name of the package is âstruts-defaultâ</strong>.</p> +<p>A base configuration file named <code class="highlighter-rouge">struts-default.xml</code> is included in the <code class="highlighter-rouge">struts2-core.jar</code> file. This file is +automatically included into <code class="highlighter-rouge">struts.xml</code> file to provide the standard configuration settings without having +to copy them.</p> + +<blockquote> + <p>To exclude the <code class="highlighter-rouge">struts-default.xml</code> or to provide your own version, see the <code class="highlighter-rouge">struts.configuration.files</code> +setting in <a href="struts-properties.html">struts.properties</a>.</p> +</blockquote> + +<p>The content of <code class="highlighter-rouge">struts-default.xml</code> is here:</p> + +<figure class="highlight"><pre><code class="language-xml" data-lang="xml"><span class="cp"><?xml version="1.0" encoding="UTF-8" ?></span> +<span class="c"><!-- +/* + * $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. + */ +--></span> + +<span class="c"><!-- + 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} +--></span> +<span class="cp"><!DOCTYPE struts PUBLIC + "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" + "http://struts.apache.org/dtds/struts-2.5.dtd"></span> + +<span class="nt"><struts></span> + + <span class="nt"><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">/></span> + + <span class="c"><!-- this must be valid regex, each '.' in package name must be escaped! --></span> + <span class="c"><!-- it's more flexible but slower than simple string comparison --></span> + <span class="c"><!-- constant name="struts.excludedPackageNamePatterns" value="^java\.lang\..*,^ognl.*,^(?!javax\.servlet\..+)(javax\..+)" / --></span> + + <span class="c"><!-- this is simpler version of the above used with string comparison --></span> + <span class="nt"><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">/></span> + + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + + <span class="nt"><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">/></span> + + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + + <span class="nt"><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">/></span> + + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + + <span class="nt"><bean</span> <span class="na">class=</span><span class="s">"org.apache.struts2.views.freemarker.FreemarkerThemeTemplateLoader"</span> <span class="nt">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + + <span class="nt"><bean</span> <span class="na">class=</span><span class="s">"org.apache.struts2.components.template.TemplateEngineManager"</span> <span class="nt">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + + <span class="nt"><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">/></span> + + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + + <span class="nt"><bean</span> <span class="na">class=</span><span class="s">"com.opensymphony.xwork2.conversion.impl.XWorkBasicConverter"</span> <span class="nt">/></span> + + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + + <span class="nt"><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">/></span> + + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + + <span class="nt"><bean</span> <span class="na">class=</span><span class="s">"com.opensymphony.xwork2.ognl.OgnlUtil"</span> <span class="nt">/></span> + + <span class="nt"><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">/></span> + + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + + <span class="nt"><bean</span> <span class="na">class=</span><span class="s">"org.apache.struts2.views.jsp.ui.OgnlTool"</span> <span class="nt">/></span> + + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + + <span class="nt"><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">/></span> + + <span class="nt"><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">/></span> + + <span class="c"><!-- Silly workarounds for OGNL since there is currently no way to flush its internal caches --></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + + <span class="nt"><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">/></span> + + <span class="nt"><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">></span> + <span class="nt"><result-types></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"></result-types></span> + + <span class="nt"><interceptors></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + <span class="nt"><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">/></span> + + <span class="c"><!-- Empty stack - performs no operations --></span> + <span class="nt"><interceptor-stack</span> <span class="na">name=</span><span class="s">"emptyStack"</span><span class="nt">></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"noop"</span><span class="nt">/></span> + <span class="nt"></interceptor-stack></span> + + <span class="c"><!-- Basic stack --></span> + <span class="nt"><interceptor-stack</span> <span class="na">name=</span><span class="s">"basicStack"</span><span class="nt">></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"exception"</span><span class="nt">/></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"servletConfig"</span><span class="nt">/></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"prepare"</span><span class="nt">/></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"checkbox"</span><span class="nt">/></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"datetime"</span><span class="nt">/></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"multiselect"</span><span class="nt">/></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"actionMappingParams"</span><span class="nt">/></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"params"</span><span class="nt">/></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"conversionError"</span><span class="nt">/></span> + <span class="nt"></interceptor-stack></span> + + <span class="c"><!-- Sample validation and workflow stack --></span> + <span class="nt"><interceptor-stack</span> <span class="na">name=</span><span class="s">"validationWorkflowStack"</span><span class="nt">></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"basicStack"</span><span class="nt">/></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"validation"</span><span class="nt">/></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"workflow"</span><span class="nt">/></span> + <span class="nt"></interceptor-stack></span> + + <span class="c"><!-- Sample file upload stack --></span> + <span class="nt"><interceptor-stack</span> <span class="na">name=</span><span class="s">"fileUploadStack"</span><span class="nt">></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"fileUpload"</span><span class="nt">/></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"basicStack"</span><span class="nt">/></span> + <span class="nt"></interceptor-stack></span> + + <span class="c"><!-- Sample model-driven stack --></span> + <span class="nt"><interceptor-stack</span> <span class="na">name=</span><span class="s">"modelDrivenStack"</span><span class="nt">></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"modelDriven"</span><span class="nt">/></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"basicStack"</span><span class="nt">/></span> + <span class="nt"></interceptor-stack></span> + + <span class="c"><!-- Sample action chaining stack --></span> + <span class="nt"><interceptor-stack</span> <span class="na">name=</span><span class="s">"chainStack"</span><span class="nt">></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"chain"</span><span class="nt">/></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"basicStack"</span><span class="nt">/></span> + <span class="nt"></interceptor-stack></span> + + <span class="c"><!-- Sample i18n stack --></span> + <span class="nt"><interceptor-stack</span> <span class="na">name=</span><span class="s">"i18nStack"</span><span class="nt">></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"i18n"</span><span class="nt">/></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"basicStack"</span><span class="nt">/></span> + <span class="nt"></interceptor-stack></span> + + <span class="c"><!-- 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. --></span> + <span class="nt"><interceptor-stack</span> <span class="na">name=</span><span class="s">"paramsPrepareParamsStack"</span><span class="nt">></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"exception"</span><span class="nt">/></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"alias"</span><span class="nt">/></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"i18n"</span><span class="nt">/></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"checkbox"</span><span class="nt">/></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"datetime"</span><span class="nt">/></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"multiselect"</span><span class="nt">/></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"params"</span><span class="nt">/></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"servletConfig"</span><span class="nt">/></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"prepare"</span><span class="nt">/></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"chain"</span><span class="nt">/></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"modelDriven"</span><span class="nt">/></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"fileUpload"</span><span class="nt">/></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"staticParams"</span><span class="nt">/></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"actionMappingParams"</span><span class="nt">/></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"params"</span><span class="nt">/></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"conversionError"</span><span class="nt">/></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"validation"</span><span class="nt">></span> + <span class="nt"><param</span> <span class="na">name=</span><span class="s">"excludeMethods"</span><span class="nt">></span>input,back,cancel,browse<span class="nt"></param></span> + <span class="nt"></interceptor-ref></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"workflow"</span><span class="nt">></span> + <span class="nt"><param</span> <span class="na">name=</span><span class="s">"excludeMethods"</span><span class="nt">></span>input,back,cancel,browse<span class="nt"></param></span> + <span class="nt"></interceptor-ref></span> + <span class="nt"></interceptor-stack></span> + + <span class="c"><!-- 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. + --></span> + <span class="nt"><interceptor-stack</span> <span class="na">name=</span><span class="s">"defaultStack"</span><span class="nt">></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"exception"</span><span class="nt">/></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"alias"</span><span class="nt">/></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"servletConfig"</span><span class="nt">/></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"i18n"</span><span class="nt">/></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"prepare"</span><span class="nt">/></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"chain"</span><span class="nt">/></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"scopedModelDriven"</span><span class="nt">/></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"modelDriven"</span><span class="nt">/></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"fileUpload"</span><span class="nt">/></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"checkbox"</span><span class="nt">/></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"datetime"</span><span class="nt">/></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"multiselect"</span><span class="nt">/></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"staticParams"</span><span class="nt">/></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"actionMappingParams"</span><span class="nt">/></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"params"</span><span class="nt">/></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"conversionError"</span><span class="nt">/></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"validation"</span><span class="nt">></span> + <span class="nt"><param</span> <span class="na">name=</span><span class="s">"excludeMethods"</span><span class="nt">></span>input,back,cancel,browse<span class="nt"></param></span> + <span class="nt"></interceptor-ref></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"workflow"</span><span class="nt">></span> + <span class="nt"><param</span> <span class="na">name=</span><span class="s">"excludeMethods"</span><span class="nt">></span>input,back,cancel,browse<span class="nt"></param></span> + <span class="nt"></interceptor-ref></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"debugging"</span><span class="nt">/></span> + <span class="nt"></interceptor-stack></span> + + <span class="c"><!-- The completeStack is here for backwards compatibility for + applications that still refer to the defaultStack by the + old name --></span> + <span class="nt"><interceptor-stack</span> <span class="na">name=</span><span class="s">"completeStack"</span><span class="nt">></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"defaultStack"</span><span class="nt">/></span> + <span class="nt"></interceptor-stack></span> + + <span class="c"><!-- Sample execute and wait stack. + Note: execAndWait should always be the *last* interceptor. --></span> + <span class="nt"><interceptor-stack</span> <span class="na">name=</span><span class="s">"executeAndWaitStack"</span><span class="nt">></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"execAndWait"</span><span class="nt">></span> + <span class="nt"><param</span> <span class="na">name=</span><span class="s">"excludeMethods"</span><span class="nt">></span>input,back,cancel<span class="nt"></param></span> + <span class="nt"></interceptor-ref></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"defaultStack"</span><span class="nt">/></span> + <span class="nt"><interceptor-ref</span> <span class="na">name=</span><span class="s">"execAndWait"</span><span class="nt">></span> + <span class="nt"><param</span> <span class="na">name=</span><span class="s">"excludeMethods"</span><span class="nt">></span>input,back,cancel<span class="nt"></param></span> + <span class="nt"></interceptor-ref></span> + <span class="nt"></interceptor-stack></span> + + <span class="nt"></interceptors></span> + + <span class="nt"><default-interceptor-ref</span> <span class="na">name=</span><span class="s">"defaultStack"</span><span class="nt">/></span> + + <span class="nt"><default-class-ref</span> <span class="na">class=</span><span class="s">"com.opensymphony.xwork2.ActionSupport"</span> <span class="nt">/></span> + + <span class="nt"><global-allowed-methods></span>execute,input,back,cancel,browse,save,delete,list,index<span class="nt"></global-allowed-methods></span> + + <span class="nt"></package></span> + +<span class="nt"></struts></span></code></pre></figure> + +<p>This file defines all of the default bundled results and interceptors and many interceptor stacks which you can use +either as-is or as a basis for your own application-specific interceptor stacks.</p> + +<p><strong>Notice the name of the package is âstruts-defaultâ</strong></p> </section> </article>