<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8"/>
  <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
  <meta name="Date-Revision-yyyymmdd" content="20140918"/>
  <meta http-equiv="Content-Language" content="en"/>
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

  <title>Plugins</title>

  <link href="//fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,400italic,600italic,700italic" rel="stylesheet" type="text/css">
  <link href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" rel="stylesheet">
  <link href="/css/main.css" rel="stylesheet">
  <link href="/css/custom.css" rel="stylesheet">
  <link href="/highlighter/github-theme.css" rel="stylesheet">

  <script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
  <script type="text/javascript" src="/bootstrap/js/bootstrap.js"></script>
  <script type="text/javascript" src="/js/community.js"></script>
</head>
<body>

<a href="http://github.com/apache/struts" class="github-ribbon">
  <img style="position: absolute; right: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png" alt="Fork me on GitHub">
</a>

<header>
  <nav>
    <div role="navigation" class="navbar navbar-default navbar-fixed-top">
      <div class="container">
        <div class="navbar-header">
          <button type="button" data-toggle="collapse" data-target="#struts-menu" class="navbar-toggle">
            Menu
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a href="/index.html" class="navbar-brand logo"><img src="/img/struts-logo.svg"></a>
        </div>
        <div id="struts-menu" class="navbar-collapse collapse">
          <ul class="nav navbar-nav">
            <li class="dropdown">
              <a data-toggle="dropdown" href="#" class="dropdown-toggle">
                Home<b class="caret"></b>
              </a>
              <ul class="dropdown-menu">
                <li><a href="/index.html">Welcome</a></li>
                <li><a href="/download.cgi">Download</a></li>
                <li><a href="/releases.html">Releases</a></li>
                <li><a href="/announce-2021.html">Announcements</a></li>
                <li><a href="http://www.apache.org/licenses/">License</a></li>
                <li><a href="https://www.apache.org/foundation/thanks.html">Thanks!</a></li>
                <li><a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
              </ul>
            </li>
            <li class="dropdown">
              <a data-toggle="dropdown" href="#" class="dropdown-toggle">
                Support<b class="caret"></b>
              </a>
              <ul class="dropdown-menu">
                <li><a href="/mail.html">User Mailing List</a></li>
                <li><a href="https://issues.apache.org/jira/browse/WW">Issue Tracker</a></li>
                <li><a href="/security.html">Reporting Security Issues</a></li>
                <li class="divider"></li>
                <li><a href="https://cwiki.apache.org/confluence/display/WW/Migration+Guide">Version Notes</a></li>
                <li><a href="https://cwiki.apache.org/confluence/display/WW/Security+Bulletins">Security Bulletins</a></li>
                <li class="divider"></li>
                <li><a href="/maven/project-info.html">Maven Project Info</a></li>
                <li><a href="/maven/struts2-core/dependencies.html">Struts Core Dependencies</a></li>
                <li><a href="/maven/struts2-plugins/modules.html">Plugin Dependencies</a></li>
              </ul>
            </li>
            <li class="dropdown">
              <a data-toggle="dropdown" href="#" class="dropdown-toggle">
                Documentation<b class="caret"></b>
              </a>
              <ul class="dropdown-menu">
                <li><a href="/birdseye.html">Birds Eye</a></li>
                <li><a href="/primer.html">Key Technologies</a></li>
                <li><a href="/kickstart.html">Kickstart FAQ</a></li>
                <li><a href="https://cwiki.apache.org/confluence/display/WW/Home">Wiki</a></li>
                <li class="divider"></li>
                <li><a href="/getting-started/">Getting Started</a></li>
                <li><a href="/security/">Security Guide</a></li>
                <li><a href="/core-developers/">Core Developers Guide</a></li>
                <li><a href="/tag-developers/">Tag Developers Guide</a></li>
                <li><a href="/maven-archetypes/">Maven Archetypes</a></li>
                <li><a href="/plugins/">Plugins</a></li>
                <li><a href="/maven/struts2-core/apidocs/index.html">Struts Core API</a></li>
                <li><a href="/tag-developers/tag-reference.html">Tag reference</a></li>
                <li><a href="https://cwiki.apache.org/confluence/display/WW/FAQs">FAQs</a></li>
                <li><a href="http://cwiki.apache.org/S2PLUGINS/home.html">Plugin registry</a></li>
              </ul>
            </li>
            <li class="dropdown">
              <a data-toggle="dropdown" href="#" class="dropdown-toggle">
                Contributing<b class="caret"></b>
              </a>
              <ul class="dropdown-menu">
                <li><a href="/youatstruts.html">You at Struts</a></li>
                <li><a href="/helping.html">How to Help FAQ</a></li>
                <li><a href="/dev-mail.html">Development Lists</a></li>
                <li><a href="/contributors/">Contributors Guide</a></li>
                <li class="divider"></li>
                <li><a href="/submitting-patches.html">Submitting patches</a></li>
                <li><a href="/builds.html">Source Code and Builds</a></li>
                <li><a href="/coding-standards.html">Coding standards</a></li>
                <li><a href="https://cwiki.apache.org/confluence/display/WW/Contributors+Guide">Contributors Guide</a></li>
                <li class="divider"></li>
                <li><a href="/release-guidelines.html">Release Guidelines</a></li>
                <li><a href="/bylaws.html">PMC Charter</a></li>
                <li><a href="/volunteers.html">Volunteers</a></li>
                <li><a href="https://gitbox.apache.org/repos/asf?p=struts.git">Source Repository</a></li>
                <li><a href="/updating-website.html">Updating the website</a></li>
              </ul>
            </li>
            <li class="apache"><a href="http://www.apache.org/"><img src="/img/apache.png"></a></li>
          </ul>
        </div>
      </div>
    </div>
  </nav>
</header>


<article class="container">
  <section class="col-md-12">
    <a class="edit-on-gh" href="https://github.com/apache/struts-site/edit/master/source/plugins/plugins.md" title="Edit this page on GitHub">Edit on GitHub</a>
    
    <a href="index.html" title="back to Plugins"><< back to Plugins</a>
    
    <h1 class="no_toc" id="plugins">Plugins</h1>

<ul id="markdown-toc">
  <li><a href="#static-resources" id="markdown-toc-static-resources">Static resources</a></li>
  <li><a href="#extension-points" id="markdown-toc-extension-points">Extension Points</a></li>
  <li><a href="#plugin-examples" id="markdown-toc-plugin-examples">Plugin Examples</a>    <ul>
      <li><a href="#sitemesh-plugin" id="markdown-toc-sitemesh-plugin">Sitemesh plugin</a></li>
      <li><a href="#tiles-plugin" id="markdown-toc-tiles-plugin">Tiles plugin</a></li>
    </ul>
  </li>
  <li><a href="#plugin-registry" id="markdown-toc-plugin-registry">Plugin Registry</a></li>
</ul>

<p>Struts 2 plugins contain classes and configuration that extend, replace, or add to existing Struts framework functionality. A plugin can be installed by adding its JAR file to the application’s class path, in addition to the JAR files to fulfill whatever dependencies the plugin itself may have. To configure the plugin, the JAR should contain a <code class="highlighter-rouge">struts-plugin.xml</code> file, which follows the same format as an ordinary <code class="highlighter-rouge">struts.xml</code> file.</p>

<p>Since a plugin can contain the <code class="highlighter-rouge">struts-plugin.xml</code> file, it has the ability to:</p>

<ul>
  <li>
    <p>Define new packages with results, interceptors, and/or actions</p>
  </li>
  <li>
    <p>Override framework constants</p>
  </li>
  <li>
    <p>Introduce new extension point implementation classes</p>
  </li>
</ul>

<p>Many popular but optional features of the framework are distributed as plugins. An application can retain all the plugins provided with the distribution, or just include the ones it uses. Plugins can be used to organize application code or to distribute code to third-parties.</p>

<p>Packages defined in a plugin can have parent packages that are defined in another plugin. Plugins may define configuration elements with classes not contained in the plugin. Any classes not included in the plugin’s JAR must be on the application’s classpath at runtime. As from Struts 2.3.5</p>

<p>The framework loads its default configuration first, then any plugin configuration files found in others JARs on the classpath, and finally the “bootstrap” <code class="highlighter-rouge">struts.xml</code>.</p>

<ol>
  <li>
    <p><code class="highlighter-rouge">struts-default.xml</code> (bundled in the Core JAR)</p>
  </li>
  <li>
    <p><code class="highlighter-rouge">struts-plugin.xml</code> (as many as can be found in other JARs)</p>
  </li>
  <li>
    <p><code class="highlighter-rouge">struts.xml</code> (provided by your application)</p>
  </li>
</ol>

<p>Since the <code class="highlighter-rouge">struts.xml</code> file is always loaded last, it can make use of any resources provided by the plugins bundled with the distribution, or any other plugins available to an application.</p>

<h2 id="static-resources">Static resources</h2>

<p>To include static resources in your plugins add them under “/static” in your jar. And include them in your page using “/struts” as the path, like in the following example:</p>

<pre><code class="language-ftl">&lt;!-- Assuming /static/main.css is inside a plugin jar, to add it to the page: --&gt;

&lt;@s.url value="/struts/main.css" var="css" /&gt;
&lt;link rel="stylesheet" type="text/css" href="%{#css}" /&gt;
</code></pre>

<p>Read also <a href="https://struts.apache.org/maven/struts2-core/apidocs/org/apache/struts2/dispatcher/StaticContentLoader.html">StaticContentLoader JavaDoc</a>.</p>

<h2 id="extension-points">Extension Points</h2>

<p>Extension points allow a plugin to override a key class in the Struts framework with an alternate implementation. For example, a plugin could provide a new class to create Action classes or map requests to Actions.</p>

<p>The following extension points are available in Struts 2:</p>

<table>
  <thead>
    <tr>
      <th>Property</th>
      <th>Description</th>
      <th>Scope</th>
      <th>Type</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>struts.objectFactory</td>
      <td>Creates actions, results, and interceptors</td>
      <td>singleton</td>
      <td>com.opensymphony.xwork2.ObjectFactory</td>
    </tr>
    <tr>
      <td>struts.objectFactory.actionFactory</td>
      <td>Dedicated factory used to create Actions, you can implement/extend existing one instead of defining new ObjectFactory</td>
      <td>singleton</td>
      <td>com.opensymphony.xwork2.factory.ActionFactory</td>
    </tr>
    <tr>
      <td>struts.objectFactory.resultFactory</td>
      <td>Dedicated factory used to create Results, you can implement/extend existing one instead of defining new ObjectFactory</td>
      <td>singleton</td>
      <td>com.opensymphony.xwork2.factory.ResultFactory</td>
    </tr>
    <tr>
      <td>struts.objectFactory.interceptorFactory</td>
      <td>Dedicated factory used to create Interceptors, you can implement/extend existing one instead of defining new ObjectFactory</td>
      <td>singleton</td>
      <td>com.opensymphony.xwork2.factory.InterceptorFactory</td>
    </tr>
    <tr>
      <td>struts.objectFactory.converterFactory</td>
      <td>Dedicated factory used to create TypeConverters, you can implement/extend existing one instead of defining new ObjectFactory</td>
      <td>singleton</td>
      <td>com.opensymphony.xwork2.factory.ConverterFactory</td>
    </tr>
    <tr>
      <td>struts.objectFactory.validatorFactory</td>
      <td>Dedicated factory used to create Validators, you can implement/extend existing one instead of defining new ObjectFactory</td>
      <td>singleton</td>
      <td>com.opensymphony.xwork2.factory.ValidatorFactory</td>
    </tr>
    <tr>
      <td>struts.actionProxyFactory</td>
      <td>Creates the ActionProxy</td>
      <td>singleton</td>
      <td>com.opensymphony.xwork2.ActionProxyFactory</td>
    </tr>
    <tr>
      <td>struts.objectTypeDeterminer</td>
      <td>Determines what the key and element class of a Map or Collection should be</td>
      <td>singleton</td>
      <td>com.opensymphony.xwork2.util.ObjectTypeDeterminer</td>
    </tr>
    <tr>
      <td>struts.mapper.class</td>
      <td>Determines the ActionMapping from a request and a URI from an ActionMapping</td>
      <td>singleton</td>
      <td>org.apache.struts2.dispatcher.mapper.ActionMapper</td>
    </tr>
    <tr>
      <td>struts.multipart.parser</td>
      <td>Parses a multipart request (file upload)</td>
      <td>per request</td>
      <td>org.apache.struts2.dispatcher.multipart.MultiPartRequest</td>
    </tr>
    <tr>
      <td>struts.freemarker.manager.classname</td>
      <td>Loads and processes Freemarker templates</td>
      <td>singleton</td>
      <td>org.apache.struts2.views.freemarker.FreemarkerManager</td>
    </tr>
    <tr>
      <td>struts.velocity.manager.classname</td>
      <td>Loads and processes Velocity templates</td>
      <td>singleton</td>
      <td>org.apache.struts2.views.velocity.VelocityManager</td>
    </tr>
    <tr>
      <td>struts.actionValidatorManager</td>
      <td>Main interface for validation managers (regular and annotation based).  Handles both the loading of configuration and the actual validation (since 2.1)</td>
      <td>singleton</td>
      <td>com.opensymphony.xwork2.validator.ActionValidatorManager</td>
    </tr>
    <tr>
      <td>struts.valueStackFactory</td>
      <td>Creates value stacks (since 2.1)</td>
      <td>singleton</td>
      <td>com.opensymphony.xwork2.util.ValueStackFactory</td>
    </tr>
    <tr>
      <td>struts.reflectionProvider</td>
      <td>Provides reflection services, key place to plug in a custom expression language (since 2.1)</td>
      <td>singleton</td>
      <td>com.opensymphony.xwork2.reflection.ReflectionProvider</td>
    </tr>
    <tr>
      <td>struts.reflectionContextFactory</td>
      <td>Creates reflection context maps used for reflection and expression language operations (since 2.1)</td>
      <td>singleton</td>
      <td>com.opensymphony.xwork2.reflection.ReflectionContextFactory</td>
    </tr>
    <tr>
      <td>N/A</td>
      <td>All beans registered as PackageProvider implementations will be automatically included in configuration building (since 2.1)</td>
      <td>singleton</td>
      <td>com.opensymphony.xwork2.config.PackageProvider</td>
    </tr>
    <tr>
      <td>struts.patternMatcher</td>
      <td>Matches patterns, such as action names, generally used in configuration (since 2.1)</td>
      <td>singleton</td>
      <td>com.opensymphony.xwork2.util.PatternMatcher</td>
    </tr>
    <tr>
      <td>struts.staticContentLoader</td>
      <td>Loads static resources (since 2.1)</td>
      <td>singleton</td>
      <td>org.apache.struts2.views.dispatcher.DefaultStaticContentLoader</td>
    </tr>
    <tr>
      <td>struts.xworkConverter</td>
      <td>Handles conversion logic and allows to load custom converters per class or per action</td>
      <td>singleton</td>
      <td>com.opensymphony.xwork2.conversion.impl.XWorkConverter</td>
    </tr>
    <tr>
      <td>struts.localeProviderFactory</td>
      <td>Allows provide custom LocaleProvider for whole application</td>
      <td>singleton</td>
      <td>com.opensymphony.xwork2.LocaleProviderFactory</td>
    </tr>
    <tr>
      <td>struts.urlRenderer</td>
      <td>Allows provide custom implementation of environment specific URL rendering/creating class</td>
      <td>singleton</td>
      <td>org.apache.struts2.components.UrlRenderer</td>
    </tr>
    <tr>
      <td>struts.unknownHandlerManager</td>
      <td>Implementation of this interface allows handle logic of unknown Actions, Methods or Results</td>
      <td>singleton</td>
      <td>com.opensymphony.xwork2.UnknownHandlerManager</td>
    </tr>
    <tr>
      <td>struts.view.urlHelper</td>
      <td>Helper class used with URLRenderer to provide exact logic for building URLs</td>
      <td>singleton</td>
      <td>org.apache.struts2.views.util.UrlHelper</td>
    </tr>
    <tr>
      <td>struts.fileManagerFactory</td>
      <td>Used to create FileManager instance to access files on the File System as also to monitor if reload is needed, can be implemented / overwritten to meet specific an application server needs</td>
      <td>singleton</td>
      <td>com.opensymphony.xwork2.FileManagerFactory</td>
    </tr>
    <tr>
      <td>struts.converter.collection</td>
      <td>Converter used to convert any object to Collection and back</td>
      <td>singleton</td>
      <td>com.opensymphony.xwork2.conversion.impl.CollectionConverter</td>
    </tr>
    <tr>
      <td>struts.converter.array</td>
      <td>Converter used to convert any object to Array and back</td>
      <td>singleton</td>
      <td>com.opensymphony.xwork2.conversion.impl.ArrayConverter</td>
    </tr>
    <tr>
      <td>struts.converter.date</td>
      <td>Converter used to convert any object to Date and back</td>
      <td>singleton</td>
      <td>com.opensymphony.xwork2.conversion.impl.DateConverter</td>
    </tr>
    <tr>
      <td>struts.converter.number</td>
      <td>Converter used to convert any object to Number and back</td>
      <td>singleton</td>
      <td>com.opensymphony.xwork2.conversion.impl.NumberConverter</td>
    </tr>
    <tr>
      <td>struts.converter.string</td>
      <td>Converter used to convert any object to String and back</td>
      <td>singleton</td>
      <td>com.opensymphony.xwork2.conversion.impl.StringConverter</td>
    </tr>
    <tr>
      <td>struts.conversion.properties.processor</td>
      <td>Process Properties to create converters</td>
      <td>singleton</td>
      <td>com.opensymphony.xwork2.conversion.ConversionPropertiesProcessor</td>
    </tr>
    <tr>
      <td>struts.converter.file.processor</td>
      <td>Process {class}-conversion.properties file create converters</td>
      <td>singleton</td>
      <td>com.opensymphony.xwork2.conversion.ConversionPropertiesProcessor</td>
    </tr>
    <tr>
      <td>struts.converter.annotation.processor</td>
      <td>Process TypeConversion annotation to create converters</td>
      <td>singleton</td>
      <td>com.opensymphony.xwork2.conversion.ConversionAnnotationProcessor</td>
    </tr>
    <tr>
      <td>struts.converter.creator</td>
      <td>Creates user converters</td>
      <td>singleton</td>
      <td>com.opensymphony.xwork2.conversion.TypeConverterCreator</td>
    </tr>
    <tr>
      <td>struts.converter.holder</td>
      <td>Holds user converters’ instances</td>
      <td>singleton</td>
      <td>com.opensymphony.xwork2.conversion.TypeConverterHolder</td>
    </tr>
    <tr>
      <td>struts.expression.parser</td>
      <td>Used to parse expressions like ${foo.bar} or %{bar.foo} but it is up tp the TextParser’s implementation what kind of opening char to use (#, $, %, etc)</td>
      <td>singleton</td>
      <td>com.opensymphony.xwork2.util.TextParser</td>
    </tr>
    <tr>
      <td>struts.excludedPatterns.checker</td>
      <td>Used across different interceptors to check if given string matches one of the excluded patterns</td>
      <td>request</td>
      <td>com.opensymphony.xwork2.ExcludedPatternsChecker</td>
    </tr>
    <tr>
      <td>struts.acceptedPatterns.checker</td>
      <td>Used across different interceptors to check if given string matches one of the accepted patterns</td>
      <td>request</td>
      <td>com.opensymphony.xwork2.AcceptedPatternsChecker</td>
    </tr>
    <tr>
      <td>struts.contentTypeMatcher</td>
      <td>Matches content type of uploaded files (since 2.3.22)</td>
      <td>singleton</td>
      <td>org.apache.struts2.util.ContentTypeMatcher</td>
    </tr>
    <tr>
      <td>struts.localizedTextProvider</td>
      <td>Provides access to resource bundles used to localise messages (since 2.5.11)</td>
      <td>singleton</td>
      <td>com.opensymphony.xwork2.LocalizedTextProvider</td>
    </tr>
  </tbody>
</table>

<h2 id="plugin-examples">Plugin Examples</h2>

<p>Let’s look at two similar but different plugins bundled with the core distribution.</p>

<h3 id="sitemesh-plugin">Sitemesh plugin</h3>

<p><a href="http://opensymphony.com/sitemesh/">SiteMesh</a> is a popular alternative to Tiles. SiteMesh provides a common look-and-feel to an application’s pages by automatically wrapping a plain page with common elements like headers and menubars.</p>

<p>The <code class="highlighter-rouge">sitemesh-plugin.jar</code> contains several classes, a standard JAR manifest, and a plugin configuration file.</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code> + META-INF/
   + manifest.mf
 + org
   + apache
     + struts2
       + sitemesh
         + FreeMarkerPageFilter.class
         + TemplatePageFilter.class
         + VelocityPageFilter.class
 + struts-plugin.xml
</code></pre></div></div>

<p>While the SiteMesh Plugin doesn’t provide any new results, interceptors, or actions, or even extend any Struts integration points, it does need to know what settings have been enabled in the Struts framework. Therefore, its <code class="highlighter-rouge">struts-plugin.xml</code> looks like this:</p>

<div class="language-xml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><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="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;bean</span> <span class="na">class=</span><span class="s">"org.apache.struts2.sitemesh.FreemarkerPageFilter"</span> <span class="na">static=</span><span class="s">"true"</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.sitemesh.VelocityPageFilter"</span> <span class="na">static=</span><span class="s">"true"</span> <span class="na">optional=</span><span class="s">"true"</span><span class="nt">/&gt;</span>
<span class="nt">&lt;/struts&gt;</span>

</code></pre></div></div>

<p>The two bean elements, with the “static” flag enabled, tell Struts to inject the current settings and framework objects into static property setters on startup. This allows, for example, the FreeMarkerPageFilter class to get an instance of the Struts FreemarkerManager and the current encoding setting.</p>

<h3 id="tiles-plugin">Tiles plugin</h3>

<p><a href="http://struts.apache.org/struts-sandbox/tiles/index.html">Tiles</a> is a popular alternative to SiteMesh. Tiles provides a common look-and-feel to an application’s pages by breaking the page down into common fragments or “tiles”.</p>

<p>The <code class="highlighter-rouge">tiles-plugin.jar</code> contains several classes, a standard JAR manifest, and a configuration file.</p>

<div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code> + META-INF/
   + manifest.mf
 + org
   + apache
     + struts2
       + tiles
         + StrutsTilesListener.class
         + StrutsTileUtilImpl.class
       + views
         + tiles
           + TilesResult.class
   + struts-plugin.xml
</code></pre></div></div>

<p>Since the Tiles Plugin does need to register configuration elements, a result class, it provides a <code class="highlighter-rouge">struts-plugin.xml</code> file.</p>

<h2 id="plugin-registry">Plugin Registry</h2>

<blockquote>
  <p>For a list of bundled plugins, see the <a href="plugin-developers.html">Plugin Reference Documentation</a>. For more about bundled and third-party plugins, visit the <a href="http://cwiki.apache.org/S2PLUGINS/home.html">Apache Struts Plugin Registry</a>.</p>
</blockquote>

  </section>
</article>


<footer class="container">
  <div class="col-md-12">
    Copyright &copy; 2000-2018 <a href="http://www.apache.org/">The Apache Software Foundation </a>.
    All Rights Reserved.
  </div>
  <div class="col-md-12">
    Apache Struts, Struts, Apache, the Apache feather logo, and the Apache Struts project logos are
    trademarks of The Apache Software Foundation.
  </div>
  <div class="col-md-12">Logo and website design donated by <a href="https://softwaremill.com/">SoftwareMill</a>.</div>
</footer>

<script>!function (d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (!d.getElementById(id)) {
    js = d.createElement(s);
    js.id = id;
    js.src = "//platform.twitter.com/widgets.js";
    fjs.parentNode.insertBefore(js, fjs);
  }
}(document, "script", "twitter-wjs");</script>
<script src="https://apis.google.com/js/platform.js" async="async" defer="defer"></script>

<div id="fb-root"></div>

<script>(function (d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s);
  js.id = id;
  js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>


</body>
</html>
