<!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>Annotations</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.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/core-developers/annotations.md" title="Edit this page on GitHub">Edit on GitHub</a>
    
    <a href="index.html" title="back to Core Developers Guide"><< back to Core Developers Guide</a>
    
    <h1 class="no_toc" id="annotations">Annotations</h1>

<ul id="markdown-toc">
  <li><a href="#action-annotations" id="markdown-toc-action-annotations">Action Annotations</a></li>
  <li><a href="#workflow-annotations" id="markdown-toc-workflow-annotations">Workflow Annotations</a></li>
  <li><a href="#interceptor-annotations" id="markdown-toc-interceptor-annotations">Interceptor Annotations</a></li>
  <li><a href="#validation-annotations" id="markdown-toc-validation-annotations">Validation Annotations</a>    <ul>
      <li><a href="#resources" id="markdown-toc-resources">Resources</a></li>
    </ul>
  </li>
  <li><a href="#type-conversion-annotations" id="markdown-toc-type-conversion-annotations">Type Conversion Annotations</a></li>
  <li><a href="#tiles-annotations" id="markdown-toc-tiles-annotations">Tiles Annotations</a></li>
</ul>

<p>In many places, applications can use Java 5 annotations as an alternative to XML and Java properties configuration. 
This page serves as a reference for all annotations across the framework.</p>

<h2 id="action-annotations">Action Annotations</h2>

<p>Since Struts 2.1, these annotations are provided by the <a href="../plugins/convention/">Convention Plugin</a>. Codebehind and Zero Config 
plugins are deprecated from Struts 2.1 on.</p>

<p>Action annotations are available when the framework scans the classpath for Action classes, rather than specifying 
individual mappings through XML configuration. See the <a href="../plugins/convention/">Convention Plugin</a> page for information 
on how to set up classpath scanning to allow the use of Action annotations.</p>

<table>
  <thead>
    <tr>
      <th>Annotation</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="../plugins/convention/#action-annotation">Actions Annotation</a></td>
      <td>Group of <code class="highlighter-rouge">@Action</code> annotations, maps multiple URLs to the same action</td>
    </tr>
    <tr>
      <td><a href="../plugins/convention/#action-annotation">Action Annotation</a></td>
      <td>Defines the URL of an action</td>
    </tr>
    <tr>
      <td><a href="../plugins/convention/#interceptorref-annotation">InterceptorRefs Annotation</a></td>
      <td>Group of <code class="highlighter-rouge">@InterceptorRef</code> annotations</td>
    </tr>
    <tr>
      <td><a href="../plugins/convention/#interceptorref-annotation">InterceptorRef Annotation</a></td>
      <td>Interceptor, or interceptor stack to be applied to at action</td>
    </tr>
    <tr>
      <td><a href="../plugins/convention/#result-annotation">Results Annotation</a></td>
      <td>Group of <code class="highlighter-rouge">@Result</code> annotations</td>
    </tr>
    <tr>
      <td><a href="../plugins/convention/#result-annotation">Result Annotation</a></td>
      <td>Defines a result for an action</td>
    </tr>
    <tr>
      <td><a href="namespace-annotation.html">Namespace Annotation</a></td>
      <td>Set the path of the action URL (used to overwrite the default)</td>
    </tr>
    <tr>
      <td><a href="../plugins/convention/#resultpath-annotation">ResultPath Annotation</a></td>
      <td>Set where the results are located (used to overwrite the default)</td>
    </tr>
    <tr>
      <td><a href="..//plugins/convention/#parentpackage-annotation">ParentPackage Annotation</a></td>
      <td>Set the parent package of the actions (used to overwrite the default)</td>
    </tr>
    <tr>
      <td><a href="../plugins/convention/#exceptionmapping-annotation">ExceptionMappings</a></td>
      <td>Group of <code class="highlighter-rouge">@ExceptionMapping</code> annotations</td>
    </tr>
    <tr>
      <td><a href="../plugins/convention/#exceptionmapping-annotation">ExceptionMapping</a></td>
      <td>Defines an exception mapping</td>
    </tr>
  </tbody>
</table>

<h2 id="workflow-annotations">Workflow Annotations</h2>

<table>
  <thead>
    <tr>
      <th>Annotation</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="input-config-annotation.html">InputConfig Annotation</a></td>
      <td>Defines what method to execute, or result to be returned if there are validation errors</td>
    </tr>
  </tbody>
</table>

<h2 id="interceptor-annotations">Interceptor Annotations</h2>

<p>To use these annotations, you have to specify the <a href="annotation-workflow-interceptor.html">AnnotationWorkflowInterceptor</a> 
to your interceptor stack.</p>

<table>
  <thead>
    <tr>
      <th>Annotation</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="after-annotation.html">After Annotation</a></td>
      <td>Marks a action method that needs to be executed after the result.</td>
    </tr>
    <tr>
      <td><a href="before-annotation.html">Before Annotation</a></td>
      <td>Marks a action method that needs to be executed before the main action method.</td>
    </tr>
    <tr>
      <td><a href="before-result-annotation.html">BeforeResult Annotation</a></td>
      <td>Marks a action method that needs to be executed before the result.</td>
    </tr>
  </tbody>
</table>

<h2 id="validation-annotations">Validation Annotations</h2>

<p>To use annotation-based validation, annotate the class or interface with <a href="validation-annotation.html">Validation Annotation</a>.</p>

<table>
  <thead>
    <tr>
      <th>Annotation</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="conversion-error-field-validator-annotation.html">ConversionErrorFieldValidator Annotation</a></td>
      <td>Checks if there are any conversion errors for a field.</td>
    </tr>
    <tr>
      <td><a href="date-range-field-validator-annotation.html">DateRangeFieldValidator Annotation</a></td>
      <td>Checks that a date field has a value within a specified range.</td>
    </tr>
    <tr>
      <td><a href="double-range-field-validator-annotation.html">DoubleRangeFieldValidator Annotation</a></td>
      <td>Checks that a double field has a value within a specified range.</td>
    </tr>
    <tr>
      <td><a href="email-validator-annotation.html">EmailValidator Annotation</a></td>
      <td>Checks that a field is a valid e-mail address.</td>
    </tr>
    <tr>
      <td><a href="expression-validator-annotation.html">ExpressionValidator Annotation</a></td>
      <td>Validates an expression.</td>
    </tr>
    <tr>
      <td><a href="field-expression-validator-annotation.html">FieldExpressionValidator Annotation</a></td>
      <td>Uses an OGNL expression to perform its validator.</td>
    </tr>
    <tr>
      <td><a href="int-range-field-validator-annotation.html">IntRangeFieldValidator Annotation</a></td>
      <td>Checks that a numeric field has a value within a specified range.</td>
    </tr>
    <tr>
      <td><a href="regex-field-validator-annotation.html">RegexFieldValidator Annotation</a></td>
      <td>Validates a regular expression for a field.</td>
    </tr>
    <tr>
      <td><a href="required-field-validator-annotation.html">RequiredFieldValidator Annotation</a></td>
      <td>Checks that a field is non-null.</td>
    </tr>
    <tr>
      <td><a href="required-string-validator-annotation.html">RequiredStringValidator Annotation</a></td>
      <td>Checks that a String field is not empty.</td>
    </tr>
    <tr>
      <td><a href="string-length-field-validator-annotation.html">StringLengthFieldValidator Annotation</a></td>
      <td>Checks that a String field is of the right length.</td>
    </tr>
    <tr>
      <td><a href="url-validator-annotation.html">UrlValidator Annotation</a></td>
      <td>Checks that a field is a valid URL.</td>
    </tr>
    <tr>
      <td><a href="validation-annotation.html">Validation Annotation</a></td>
      <td>Marker annotation for validation at Type level.</td>
    </tr>
    <tr>
      <td><a href="validations-annotation.html">Validations Annotation</a></td>
      <td>Used to group validation annotations.</td>
    </tr>
    <tr>
      <td><a href="visitor-field-validator-annotation.html">VisitorFieldValidator Annotation</a></td>
      <td>Invokes the validation for a property’s object type.</td>
    </tr>
    <tr>
      <td><a href="custom-validator-annotation.html">CustomValidator Annotation</a></td>
      <td>Use this annotation for your custom validator types.</td>
    </tr>
  </tbody>
</table>

<h3 id="resources">Resources</h3>

<ul>
  <li><a href="http://arsenalist.com/2007/05/10/struts-2-validation-using-annotations/">Validation using Annotations</a> (arsenalist)</li>
</ul>

<h2 id="type-conversion-annotations">Type Conversion Annotations</h2>

<p>By default, type conversion for Maps and Collections using generics is directly supported.</p>

<p>In short, instead of specifying the types found in collections and maps as documented 
in <a href="type-conversion.html">Type Conversion</a>, <strong>the collection’s generic type is used</strong>. By using annotations, 
an application should be able to avoid using any <code class="highlighter-rouge">ClassName-conversion.properties</code> files.</p>

<p>To use annotation-based type conversion, annotate the class or interface with the <a href="conversion-annotation.html">Conversion Annotation</a>.</p>

<table>
  <thead>
    <tr>
      <th>Annotation</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><a href="conversion-annotation.html">Conversion Annotation</a></td>
      <td>Marker annotation for type conversions at Type level.</td>
    </tr>
    <tr>
      <td><a href="create-if-null-annotation.html">CreateIfNull Annotation</a></td>
      <td>For Collection and Map types: Create the types within the Collection or Map, if null.</td>
    </tr>
    <tr>
      <td><a href="element-annotation.html">Element Annotation</a></td>
      <td>For Generic types: Specify the element type for Collection types and Map values.</td>
    </tr>
    <tr>
      <td><a href="key-annotation.html">Key Annotation</a></td>
      <td>For Generic types: Specify the key type for Map keys.</td>
    </tr>
    <tr>
      <td><a href="key-property-annotation.html">KeyProperty Annotation</a></td>
      <td>For Generic types: Specify the key property name value.</td>
    </tr>
    <tr>
      <td><a href="type-conversion-annotation.html">TypeConversion Annotation</a></td>
      <td>Used for class and application wide conversion rules.</td>
    </tr>
  </tbody>
</table>

<h2 id="tiles-annotations">Tiles Annotations</h2>

<p>The <a href="../plugins/tiles/">Tiles Plugin</a> provides it’s own set of Annotations. They can be used to keep <code class="highlighter-rouge">tiles.xml</code> short. 
Instead tiles definitions can be created by annotating actions.</p>

<table>
  <thead>
    <tr>
      <th>Annotation</th>
      <th>Description</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>TilesDefinition</td>
      <td>Represents a <code class="highlighter-rouge">&lt;definition&gt;</code> element in tiles.xml</td>
    </tr>
    <tr>
      <td>TilesDefinitions</td>
      <td>A list of <code class="highlighter-rouge">TilesDefinition</code> Annotations</td>
    </tr>
    <tr>
      <td>TilesPutAttribute</td>
      <td>Represents a <code class="highlighter-rouge">&lt;put-attribute&gt;</code> element in tiles.xml</td>
    </tr>
    <tr>
      <td>TilesPutListAttribute</td>
      <td>Represents a <code class="highlighter-rouge">&lt;put-list-attribute&gt;</code> element in tiles.xml</td>
    </tr>
    <tr>
      <td>TilesAddAttribute</td>
      <td>Represents a <code class="highlighter-rouge">&lt;add-attribute&gt;</code> element in tiles.xml</td>
    </tr>
    <tr>
      <td>TilesAddListAttribute</td>
      <td>Represents a <code class="highlighter-rouge">&lt;add-list-attribute&gt;</code> element in tiles.xml</td>
    </tr>
  </tbody>
</table>

<p> </p>

  </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>
