You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by lu...@apache.org on 2017/06/01 11:36:04 UTC

svn commit: r1013271 [17/25] - in /websites/production/struts/content: ./ core-developers/ core-developers/attachments/ getting-started/ security/

Added: websites/production/struts/content/core-developers/required-validator.html
==============================================================================
--- websites/production/struts/content/core-developers/required-validator.html (added)
+++ websites/production/struts/content/core-developers/required-validator.html Thu Jun  1 11:35:58 2017
@@ -0,0 +1,200 @@
+<!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>required validator</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="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.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="/downloads.html">Downloads</a></li>
+                <li><a href="/announce.html">Announcements</a></li>
+                <li><a href="http://www.apache.org/licenses/">License</a></li>
+                <li><a href="http://apache.org/foundation/thanks.html">Thanks!</a></li>
+                <li><a href="http://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="/maven/project-info.html">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="/docs/tutorials.html">Tutorials</a></li>
+                <li><a href="/docs/faqs.html">FAQs</a></li>
+                <li><a href="/docs/guides.html">Guides</a></li>
+                <li class="divider"></li>
+                <li><a href="/maven/struts2-core/apidocs/index.html">Struts Core API</a></li>
+                <li><a href="/docs/plugins.html">Plugin APIs</a></li>
+                <li><a href="/docs/tag-reference.html">Tag reference</a></li>
+                <li><a href="http://cwiki.apache.org/S2PLUGINS/home.html">Plugin registry</a></li>
+                <li class="divider"></li>
+                <li><a href="/security/">Security Guide (WIP)</a></li>
+                <li><a href="/core-developers/">Core Developers Guide (WIP)</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 class="divider"></li>
+                <li><a href="/submitting-patches.html">Submitting patches</a></li>
+                <li><a href="/builds.html">Source Code</a></li>
+                <li><a href="/coding-standards.html">Coding standards</a></li>
+                <li class="divider"></li>
+                <li><a href="/releases.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://git-wip-us.apache.org/repos/asf?p=struts.git">Source Repository</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 href="index.html" title="back to Core Developers Guide"><< back to Core Developers Guide</a>
+    <h1 id="required-validator">required validator</h1>
+
+<p>####Description####</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code><span class="p">{</span><span class="err">snippet:id=javadoc|javadoc=true|url=com.opensymphony.xwork2.validator.validators.RequiredFieldValidator</span><span class="p">}</span><span class="w">
+</span></code></pre>
+</div>
+
+<p>####Parameters####</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code><span class="p">{</span><span class="err">snippet:id=parameters|javadoc=true|url=com.opensymphony.xwork2.validator.validators.RequiredFieldValidator</span><span class="p">}</span><span class="w">
+</span></code></pre>
+</div>
+
+<p>####Examples####</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code><span class="p">{</span><span class="err">snippet:id=example|lang=xml|javadoc=true|url=com.opensymphony.xwork2.validator.validators.RequiredFieldValidator</span><span class="p">}</span><span class="w">
+</span></code></pre>
+</div>
+
+  </section>
+</article>
+
+
+<footer class="container">
+  <div class="col-md-12">
+    Copyright &copy; 2000-2016 <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>
+
+
+<script>
+$(function() {
+  return $("h2, h3, h4, h5, h6").each(function(i, el) {
+    var $el, id;
+    $el = $(el);
+    id = $el.attr('id');
+    if (id) {
+      $el.removeAttr('id');
+      return $el.before($("<a />").addClass('anchor').attr('name', id));
+    }
+  });
+});
+</script>
+
+</body>
+</html>

Added: websites/production/struts/content/core-developers/requiredstring-validator.html
==============================================================================
--- websites/production/struts/content/core-developers/requiredstring-validator.html (added)
+++ websites/production/struts/content/core-developers/requiredstring-validator.html Thu Jun  1 11:35:58 2017
@@ -0,0 +1,200 @@
+<!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>requiredstring validator</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="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.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="/downloads.html">Downloads</a></li>
+                <li><a href="/announce.html">Announcements</a></li>
+                <li><a href="http://www.apache.org/licenses/">License</a></li>
+                <li><a href="http://apache.org/foundation/thanks.html">Thanks!</a></li>
+                <li><a href="http://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="/maven/project-info.html">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="/docs/tutorials.html">Tutorials</a></li>
+                <li><a href="/docs/faqs.html">FAQs</a></li>
+                <li><a href="/docs/guides.html">Guides</a></li>
+                <li class="divider"></li>
+                <li><a href="/maven/struts2-core/apidocs/index.html">Struts Core API</a></li>
+                <li><a href="/docs/plugins.html">Plugin APIs</a></li>
+                <li><a href="/docs/tag-reference.html">Tag reference</a></li>
+                <li><a href="http://cwiki.apache.org/S2PLUGINS/home.html">Plugin registry</a></li>
+                <li class="divider"></li>
+                <li><a href="/security/">Security Guide (WIP)</a></li>
+                <li><a href="/core-developers/">Core Developers Guide (WIP)</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 class="divider"></li>
+                <li><a href="/submitting-patches.html">Submitting patches</a></li>
+                <li><a href="/builds.html">Source Code</a></li>
+                <li><a href="/coding-standards.html">Coding standards</a></li>
+                <li class="divider"></li>
+                <li><a href="/releases.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://git-wip-us.apache.org/repos/asf?p=struts.git">Source Repository</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 href="index.html" title="back to Core Developers Guide"><< back to Core Developers Guide</a>
+    <h1 id="requiredstring-validator">requiredstring validator</h1>
+
+<p>####Description####</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code><span class="p">{</span><span class="err">snippet:id=javadoc|javadoc=true|url=com.opensymphony.xwork2.validator.validators.RequiredStringValidator</span><span class="p">}</span><span class="w">
+</span></code></pre>
+</div>
+
+<p>####Parameters####</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code><span class="p">{</span><span class="err">snippet:id=parameters|javadoc=true|url=com.opensymphony.xwork2.validator.validators.RequiredStringValidator</span><span class="p">}</span><span class="w">
+</span></code></pre>
+</div>
+
+<p>####Examples####</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code><span class="p">{</span><span class="err">snippet:id=examples|lang=xml|javadoc=true|url=com.opensymphony.xwork2.validator.validators.RequiredStringValidator</span><span class="p">}</span><span class="w">
+</span></code></pre>
+</div>
+
+  </section>
+</article>
+
+
+<footer class="container">
+  <div class="col-md-12">
+    Copyright &copy; 2000-2016 <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>
+
+
+<script>
+$(function() {
+  return $("h2, h3, h4, h5, h6").each(function(i, el) {
+    var $el, id;
+    $el = $(el);
+    id = $el.attr('id');
+    if (id) {
+      $el.removeAttr('id');
+      return $el.before($("<a />").addClass('anchor').attr('name', id));
+    }
+  });
+});
+</script>
+
+</body>
+</html>

Added: websites/production/struts/content/core-developers/restful-action-mapper.html
==============================================================================
--- websites/production/struts/content/core-developers/restful-action-mapper.html (added)
+++ websites/production/struts/content/core-developers/restful-action-mapper.html Thu Jun  1 11:35:58 2017
@@ -0,0 +1,385 @@
+<!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>RestfulActionMapper</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="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.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="/downloads.html">Downloads</a></li>
+                <li><a href="/announce.html">Announcements</a></li>
+                <li><a href="http://www.apache.org/licenses/">License</a></li>
+                <li><a href="http://apache.org/foundation/thanks.html">Thanks!</a></li>
+                <li><a href="http://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="/maven/project-info.html">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="/docs/tutorials.html">Tutorials</a></li>
+                <li><a href="/docs/faqs.html">FAQs</a></li>
+                <li><a href="/docs/guides.html">Guides</a></li>
+                <li class="divider"></li>
+                <li><a href="/maven/struts2-core/apidocs/index.html">Struts Core API</a></li>
+                <li><a href="/docs/plugins.html">Plugin APIs</a></li>
+                <li><a href="/docs/tag-reference.html">Tag reference</a></li>
+                <li><a href="http://cwiki.apache.org/S2PLUGINS/home.html">Plugin registry</a></li>
+                <li class="divider"></li>
+                <li><a href="/security/">Security Guide (WIP)</a></li>
+                <li><a href="/core-developers/">Core Developers Guide (WIP)</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 class="divider"></li>
+                <li><a href="/submitting-patches.html">Submitting patches</a></li>
+                <li><a href="/builds.html">Source Code</a></li>
+                <li><a href="/coding-standards.html">Coding standards</a></li>
+                <li class="divider"></li>
+                <li><a href="/releases.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://git-wip-us.apache.org/repos/asf?p=struts.git">Source Repository</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 href="index.html" title="back to Core Developers Guide"><< back to Core Developers Guide</a>
+    <h1 id="restfulactionmapper">RestfulActionMapper</h1>
+
+<p>A custom action mapper using the following format:</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>http://HOST/ACTION_NAME/PARAM_NAME1/PARAM_VALUE1/PARAM_NAME2/PARAM_VALUE2
+</code></pre>
+</div>
+
+<p>You can have as many parameters you’d like to use. Alternatively the URL can be shortened to the following:</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>http://HOST/ACTION_NAME/PARAM_VALUE1/PARAM_NAME2/PARAM_VALUE2
+</code></pre>
+</div>
+
+<p>This is the same as:</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>http://HOST/ACTION_NAME/ACTION_NAME + "Id"/PARAM_VALUE1/PARAM_NAME2/PARAM_VALUE2
+</code></pre>
+</div>
+
+<p>Suppose for example we would like to display some articles by id at using the following URL sheme:</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>http://HOST/article/Id
+</code></pre>
+</div>
+
+<p>Your action just needs a setArticleId() method, and requests such as /article/1, /article/2, etc will all map to that URL pattern.</p>
+
+<p>#####Restful2ActionMapper#####</p>
+
+<p>Improved restful action mapper that adds several ReST-style improvements to action mapping, but supports fully-customized URL’s via XML. The two primary REST enhancements are:</p>
+
+<ul>
+  <li>
+    <p>If the method is not specified (via ‘!’ or ‘method:’ prefix), the method is “guessed” at using ReST-style conventions that examine the URL and the HTTP method.</p>
+  </li>
+  <li>
+    <p>Parameters are extracted from the action name, if parameter name/value pairs are specified using PARAM_NAME/PARAM_VALUE syntax.</p>
+  </li>
+</ul>
+
+<p>These two improvements allow a GET request for ‘category/action/movie/Thrillers’ to be mapped to the action name ‘movie’ with an id of ‘Thrillers’ with an extra parameter named ‘category’ with a value of ‘action’.  A single action mapping can then handle all CRUD operations using wildcards, e.g.</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>
+&lt;action name="movie/*" className="app.MovieAction"&gt;
+    &lt;param name="id"&gt;{1}&lt;/param&gt;
+    ...
+&lt;/action&gt;
+
+</code></pre>
+</div>
+
+<p>This mapper supports the following parameters:</p>
+
+<ul>
+  <li><em>struts.mapper.idParameterName</em>  - if set, this value will be the name of the parameter under which the id is stored.  The id will then be removed from the action name.  This allows restful actions to not require wildcards.</li>
+</ul>
+
+<p>The following URL’s will invoke its methods:</p>
+
+<table>
+  <thead>
+    <tr>
+      <th>Request</th>
+      <th>method called</th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <td>GET: /movie/</td>
+      <td>method=”index”</td>
+    </tr>
+    <tr>
+      <td>GET: /movie/Thrillers</td>
+      <td>method=”view”, id=”Thrillers”</td>
+    </tr>
+    <tr>
+      <td>GET: /movie/Thrillers!edit</td>
+      <td>method=”edit”, id=”Thrillers”</td>
+    </tr>
+    <tr>
+      <td>GET: /movie/new</td>
+      <td>method=”editNew”</td>
+    </tr>
+    <tr>
+      <td>POST: /movie/</td>
+      <td>method=”create”</td>
+    </tr>
+    <tr>
+      <td>PUT: /movie/Thrillers</td>
+      <td>method=”update”, id=”Thrillers”</td>
+    </tr>
+    <tr>
+      <td>DELETE: /movie/Thrillers</td>
+      <td>method=”remove”, id=”Thrillers”</td>
+    </tr>
+  </tbody>
+</table>
+
+<p>To simulate the HTTP methods PUT and DELETE, since they aren’t supported by HTML, the HTTP parameter “__http_method” will be used.</p>
+
+<p>The syntax and design for this feature was inspired by the REST support in Ruby on Rails. See <a href="http://ryandaigle\.com/articles/2006/08/01/whats\-new\-in\-edge\-rails\-simply\-restful\-support\-and\-how\-to\-use\-it">Simple RESTful support</a>^[http://ryandaigle.com/articles/2006/08/01/whats-new-in-edge-rails-simply-restful-support-and-how-to-use-it]</p>
+
+<p><strong>Example</strong></p>
+
+<p>To use the Restful2ActionMapper in an existing struts application we have to change the strus.mapper.class constant and let it point to the Restful2ActionMapper</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>
+&lt;constant name="struts.mapper.class" value="org.apache.struts2.dispatcher.mapper.Restful2ActionMapper" /&gt;
+
+</code></pre>
+</div>
+
+<p>The problem with the above approach is that we may break existing actions because the Restful2ActionMapper tries to guess the method name using conventions that aren’t applicable to normal action classes.</p>
+
+<p>To overcome the above problem, we have to use a different action mapper depending on the url we want to process. REST actions will be processed by the Restful2ActionMapper and non-REST actions by the DefaultActionMapper</p>
+
+<p>To achieve that we have to rely on namespaces and the PrefixBasedActionMapper that can choose which action mapper to use for a particular url based on a prefix (the action namespace).</p>
+
+<p>To put everything together, we create a package for our rest actions</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>
+&lt;package name="rest" namespace="/rest" extends="struts-default"&gt;
+    ....interceptor config
+    &lt;action name="movie/*" class="app.MovieAction"&gt;
+        &lt;param name="id"&gt;{1}&lt;/param&gt;
+        ....results
+    &lt;/action&gt;
+    ....
+&lt;/package&gt;
+
+</code></pre>
+</div>
+
+<p>All other actions remain in their existing packages and namespaces we use the PrefixBasedActionMapper telling it to use the Restful2ActionMapper for actions in the /rest namespace and the DefaultActionMapper for all other actions</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>
+&lt;constant name="struts.mapper.class" value="org.apache.struts2.dispatcher.mapper.PrefixBasedActionMapper" /&gt;
+&lt;constant name="struts.mapper.prefixMapping" value="/rest:restful2,:struts" /&gt;
+
+</code></pre>
+</div>
+
+<p>For the Restful2ActionMapper to work we also have to set</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>
+&lt;constant name="struts.enable.SlashesInActionNames" value="true" /&gt;
+&lt;constant name="struts.mapper.alwaysSelectFullNamespace" value="false" /&gt;
+
+</code></pre>
+</div>
+
+<p><strong>Unit testing</strong></p>
+
+<p>Below you will find a simple unit test to test how to test actions when</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>Restful2ActionMapper
+</code></pre>
+</div>
+<p>is used.</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>
+public class MovieActionTest extends StrutsJUnit4TestCase&lt;MovieActionTest&gt;{
+    
+    @Before
+    public void setUp() throws Exception {
+        //assumes Basic authentication
+        super.setUp();
+        String credentials = "username:password";
+        request.addHeader("authorization", "BASIC " + Base64.encodeBase64String(credentials.getBytes()));
+    }
+        
+    @Test
+    public void testIndex() throws Exception {
+        request.setMethod("get"); //Http method should be set
+        
+        ActionProxy proxy = getActionProxy("/rest/movie/");                        
+      
+        proxy.setExecuteResult(false);
+        String result = proxy.execute();
+        
+       //assertions ...        
+    }
+    
+    @Test
+    public void testView() throws Exception {
+        request.setMethod("get"); //Http method should be set
+              
+        ActionProxy proxy = getActionProxy("/rest/movie/1");                        
+        MovieAction movieAction = MovieAction.class.cast(proxy.getAction());
+           
+        proxy.setExecuteResult(false);
+        
+        String result = proxy.execute();
+        //assertions ...
+        assertEquals("1", movieAction.getId());         
+    }
+}
+
+</code></pre>
+</div>
+
+<p>Thanks to Antonios Gkogkakis for the examples!</p>
+
+
+  </section>
+</article>
+
+
+<footer class="container">
+  <div class="col-md-12">
+    Copyright &copy; 2000-2016 <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>
+
+
+<script>
+$(function() {
+  return $("h2, h3, h4, h5, h6").each(function(i, el) {
+    var $el, id;
+    $el = $(el);
+    id = $el.attr('id');
+    if (id) {
+      $el.removeAttr('id');
+      return $el.before($("<a />").addClass('anchor').attr('name', id));
+    }
+  });
+});
+</script>
+
+</body>
+</html>

Added: websites/production/struts/content/core-developers/result-annotation.html
==============================================================================
--- websites/production/struts/content/core-developers/result-annotation.html (added)
+++ websites/production/struts/content/core-developers/result-annotation.html Thu Jun  1 11:35:58 2017
@@ -0,0 +1,404 @@
+<!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>Result Annotation</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="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.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="/downloads.html">Downloads</a></li>
+                <li><a href="/announce.html">Announcements</a></li>
+                <li><a href="http://www.apache.org/licenses/">License</a></li>
+                <li><a href="http://apache.org/foundation/thanks.html">Thanks!</a></li>
+                <li><a href="http://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="/maven/project-info.html">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="/docs/tutorials.html">Tutorials</a></li>
+                <li><a href="/docs/faqs.html">FAQs</a></li>
+                <li><a href="/docs/guides.html">Guides</a></li>
+                <li class="divider"></li>
+                <li><a href="/maven/struts2-core/apidocs/index.html">Struts Core API</a></li>
+                <li><a href="/docs/plugins.html">Plugin APIs</a></li>
+                <li><a href="/docs/tag-reference.html">Tag reference</a></li>
+                <li><a href="http://cwiki.apache.org/S2PLUGINS/home.html">Plugin registry</a></li>
+                <li class="divider"></li>
+                <li><a href="/security/">Security Guide (WIP)</a></li>
+                <li><a href="/core-developers/">Core Developers Guide (WIP)</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 class="divider"></li>
+                <li><a href="/submitting-patches.html">Submitting patches</a></li>
+                <li><a href="/builds.html">Source Code</a></li>
+                <li><a href="/coding-standards.html">Coding standards</a></li>
+                <li class="divider"></li>
+                <li><a href="/releases.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://git-wip-us.apache.org/repos/asf?p=struts.git">Source Repository</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 href="index.html" title="back to Core Developers Guide"><< back to Core Developers Guide</a>
+    <h1 id="result-annotation">Result Annotation</h1>
+
+<p>The</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>@Result
+</code></pre>
+</div>
+<p>annotation allows the definition of</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>Action
+</code></pre>
+</div>
+<p>results in the</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>Action
+</code></pre>
+</div>
+<p>class rather than an XML file.</p>
+
+<table>
+  <tbody>
+    <tr>
+      <td>The @Result annotation lives at the Action_class_  level and not the method level. This matches what is found in an XML-based Action configuration. <strong>Do not be tempted to annotate your Action’s methods; it will not work.</strong></td>
+    </tr>
+  </tbody>
+</table>
+
+<table>
+  <tbody>
+    <tr>
+    </tr>
+  </tbody>
+</table>
+
+<p>In order for</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>@Result
+</code></pre>
+</div>
+<p>and</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>@Results
+</code></pre>
+</div>
+<p>annotations to be configured correctly you must set the</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>actionPackages
+</code></pre>
+</div>
+<p>filter</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>init-param
+</code></pre>
+</div>
+<p>to a comma-separated list of packages containing the annotated</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>Action
+</code></pre>
+</div>
+<p>classes. See <a href="zero-configuration.html">Zero Configuration</a> for further information; there are</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>Action
+</code></pre>
+</div>
+<p>class naming conventions if you don’t implement the</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>Action
+</code></pre>
+</div>
+<p>interface and other tidbits there.</p>
+
+<p>#####@Result Annotation Parameters#####</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code><span class="p">{</span><span class="err">float:right|width=300px</span><span class="p">}</span><span class="w">
+  </span><span class="p">{</span><span class="err">info</span><span class="p">}</span><span class="w">
+    </span><span class="err">See</span><span class="w"> </span><span class="err">org.apache.struts</span><span class="mi">2</span><span class="err">.config.Result</span><span class="w"> </span><span class="err">annotation</span><span class="w"> </span><span class="err">JavaDocs.</span><span class="w">
+  </span><span class="p">{</span><span class="err">info</span><span class="p">}</span><span class="w">
+</span><span class="p">{</span><span class="err">float</span><span class="p">}</span><span class="w">
+</span></code></pre>
+</div>
+
+<ul>
+  <li>name - Result name; default</li>
+</ul>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>Action.SUCCESS
+</code></pre>
+</div>
+
+<ul>
+  <li>
+    <p>value - Value of result (result destination)</p>
+  </li>
+  <li>
+    <p>type - Type of result; default</p>
+  </li>
+</ul>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>NullResult
+</code></pre>
+</div>
+<p>. For example:</p>
+
+<ul>
+  <li></li>
+</ul>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>NullResult.class
+</code></pre>
+</div>
+
+<ul>
+  <li></li>
+</ul>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>FreemarkerResult.class
+</code></pre>
+</div>
+
+<ul>
+  <li></li>
+</ul>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>PlainTextResult.class
+</code></pre>
+</div>
+
+<ul>
+  <li></li>
+</ul>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>VelocityResult.class
+</code></pre>
+</div>
+
+<ul>
+  <li></li>
+</ul>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>ServletDispatcherResult.class
+</code></pre>
+</div>
+
+<ul>
+  <li></li>
+</ul>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>ServletRedirectResult.class
+</code></pre>
+</div>
+
+<ul>
+  <li></li>
+</ul>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>ServletActionRedirectResult.class
+</code></pre>
+</div>
+<p>- equivalent to the</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>redirectAction
+</code></pre>
+</div>
+<p>type in XML config</p>
+
+<ul>
+  <li></li>
+</ul>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>TilesResult.class
+</code></pre>
+</div>
+
+<ul>
+  <li>.. (for more result, please consult the API docs, and look for implementations of the XWork</li>
+</ul>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>Result
+</code></pre>
+</div>
+<p>interface)</p>
+
+<ul>
+  <li>params - An Array of the parameters in the form {key1, value1, key2, value2}</li>
+</ul>
+
+<p>#####@Result – Defining a Single Result#####</p>
+
+<p>Map the “success” result (explicitly named) to a Tile definition named “/home.page”.</p>
+
+<p><strong>Defining a Single Result</strong></p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>
+@Result(name="success", value="/home.page", type=TilesResult.class)
+public class HomeAction extends ActionSupport {
+    // ...
+}
+
+</code></pre>
+</div>
+
+<p>#####@Results – Defining Multiple Results#####</p>
+
+<p>Defines a set of results for an</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>Action
+</code></pre>
+</div>
+<p>.</p>
+
+<p><strong>Defining Multiple Results</strong></p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>
+@Results({
+    @Result(name="success", value="/home.page", type=TilesResult.class),
+    @Result(name="homeError", value="/homeError.page", type=TilesResult.class)
+})
+public class HomeAction extends ActionSupport {
+    // ....
+}
+
+</code></pre>
+</div>
+
+  </section>
+</article>
+
+
+<footer class="container">
+  <div class="col-md-12">
+    Copyright &copy; 2000-2016 <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>
+
+
+<script>
+$(function() {
+  return $("h2, h3, h4, h5, h6").each(function(i, el) {
+    var $el, id;
+    $el = $(el);
+    id = $el.attr('id');
+    if (id) {
+      $el.removeAttr('id');
+      return $el.before($("<a />").addClass('anchor').attr('name', id));
+    }
+  });
+});
+</script>
+
+</body>
+</html>

Added: websites/production/struts/content/core-developers/result-configuration.html
==============================================================================
--- websites/production/struts/content/core-developers/result-configuration.html (added)
+++ websites/production/struts/content/core-developers/result-configuration.html Thu Jun  1 11:35:58 2017
@@ -0,0 +1,435 @@
+<!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>Result Configuration</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="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.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="/downloads.html">Downloads</a></li>
+                <li><a href="/announce.html">Announcements</a></li>
+                <li><a href="http://www.apache.org/licenses/">License</a></li>
+                <li><a href="http://apache.org/foundation/thanks.html">Thanks!</a></li>
+                <li><a href="http://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="/maven/project-info.html">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="/docs/tutorials.html">Tutorials</a></li>
+                <li><a href="/docs/faqs.html">FAQs</a></li>
+                <li><a href="/docs/guides.html">Guides</a></li>
+                <li class="divider"></li>
+                <li><a href="/maven/struts2-core/apidocs/index.html">Struts Core API</a></li>
+                <li><a href="/docs/plugins.html">Plugin APIs</a></li>
+                <li><a href="/docs/tag-reference.html">Tag reference</a></li>
+                <li><a href="http://cwiki.apache.org/S2PLUGINS/home.html">Plugin registry</a></li>
+                <li class="divider"></li>
+                <li><a href="/security/">Security Guide (WIP)</a></li>
+                <li><a href="/core-developers/">Core Developers Guide (WIP)</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 class="divider"></li>
+                <li><a href="/submitting-patches.html">Submitting patches</a></li>
+                <li><a href="/builds.html">Source Code</a></li>
+                <li><a href="/coding-standards.html">Coding standards</a></li>
+                <li class="divider"></li>
+                <li><a href="/releases.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://git-wip-us.apache.org/repos/asf?p=struts.git">Source Repository</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 href="index.html" title="back to Core Developers Guide"><< back to Core Developers Guide</a>
+    <h1 id="result-configuration">Result Configuration</h1>
+
+<p>When an <em>action</em>  class method completes, it returns a String. The value of the String is used to select a result element. An action mapping will often have a set of results representing different possible outcomes. A standard set of result tokens are defined by the</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>ActionSupport
+</code></pre>
+</div>
+<p>base class.</p>
+
+<p><strong>Predefined result names</strong></p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>String SUCCESS = "success";
+String NONE    = "none";
+String ERROR   = "error";
+String INPUT   = "input";
+String LOGIN   = "login";
+
+</code></pre>
+</div>
+
+<p>Of course, applications can define other result tokens to match specific cases.</p>
+
+<p>(information) Returning</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>ActionSupport.NONE
+</code></pre>
+</div>
+<p>(or</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>null
+</code></pre>
+</div>
+<p>) from an <em>action</em>  class method causes the results processing to be skipped. This is useful if the action fully handles the result processing such as writing directly to the HttpServletResponse OutputStream.</p>
+
+<p>#####Result Elements#####</p>
+
+<p>The result element has two jobs. First, it provides a logical name. An</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>Action
+</code></pre>
+</div>
+<p>can pass back a token like “success” or “error” without knowing any other implementation details. Second, the result element provides a result type. Most results simply forward to a server page or template, but other <a href="result-types.html">Result Types</a> can be used to do more interesting things.</p>
+
+<p><strong>Intelligent Defaults</strong></p>
+
+<p>Each package may set a default result type to be used if none is specified in a result element. If one package extends another, the “child” package can set its own default result, or inherit one from the parent.</p>
+
+<p><strong>Setting a default Result Type</strong></p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>&lt;result-types&gt;
+   &lt;result-type name="dispatcher" default="true"
+                class="org.apache.struts2.dispatcher.ServletDispatcherResult" /&gt;
+&lt;/result-types&gt;
+</code></pre>
+</div>
+
+<p>If a</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>type
+</code></pre>
+</div>
+<p>attribute is not specified, the framework will use the default</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>dispatcher
+</code></pre>
+</div>
+<p>type, which forwards to another web resource. If the resource is a JavaServer Page, then the container will render it, using its JSP engine.</p>
+
+<p>Likewise if the</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>name
+</code></pre>
+</div>
+<p>attribute is not specified, the framework will give it the name “success”.</p>
+
+<p>Using these intelligent defaults, the most often used result types also become the simplest.</p>
+
+<p><strong>Result element without defaults</strong></p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>&lt;result name="success" type="dispatcher"&gt;
+    &lt;param name="location"&gt;/ThankYou.jsp&lt;/param&gt;
+&lt;/result&gt;
+
+</code></pre>
+</div>
+
+<p><strong>A Result element using some defaults</strong></p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>&lt;result&gt;
+    &lt;param name="location"&gt;/ThankYou.jsp&lt;/param&gt;
+&lt;/result&gt;
+
+</code></pre>
+</div>
+
+<p>The</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>param
+</code></pre>
+</div>
+<p>tag sets a property on the Result object. The most commonly-set property is</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>location
+</code></pre>
+</div>
+<p>, which usually specifies the path to a web resources. The</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>param
+</code></pre>
+</div>
+<p>attribute is another intelligent default.</p>
+
+<p><strong>Result element using more defaults</strong></p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>&lt;result&gt;/ThankYou.jsp&lt;/result&gt;
+
+</code></pre>
+</div>
+
+<p>Mixing results with intelligent defaults with other results makes it easier to see the “critical path”.</p>
+
+<p><strong>Multiple Results</strong></p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>&lt;action name="Hello"&gt;
+    &lt;result&gt;/hello/Result.jsp&lt;/result&gt;
+    &lt;result name="error"&gt;/hello/Error.jsp&lt;/result&gt;
+    &lt;result name="input"&gt;/hello/Input.jsp&lt;/result&gt;
+&lt;/action&gt;
+
+</code></pre>
+</div>
+
+<p>A special ‘other’ result can be configured by adding a result with name=”*”. This result will only be selected if no result is found with a matching name.</p>
+
+<p><strong>’*’ Other Result</strong></p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>&lt;action name="Hello"&gt;
+    &lt;result&gt;/hello/Result.jsp&lt;/result&gt;
+    &lt;result name="error"&gt;/hello/Error.jsp&lt;/result&gt;
+    &lt;result name="input"&gt;/hello/Input.jsp&lt;/result&gt;
+    &lt;result name="*"&gt;/hello/Other.jsp&lt;/result&gt;
+&lt;/action&gt;
+
+</code></pre>
+</div>
+
+<p>(information) The name=”*” is <strong>not</strong> a wildcard pattern, it is a special name that is only selected if an exact match is not found.</p>
+
+<p>(!)  In most cases if an action returns an unrecognized result name this would be a programming error and should be fixed.</p>
+
+<p><strong>Multiple names</strong></p>
+
+<p>It is possible to define multiple names for the same result:</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>&lt;action name="save"&gt;
+    &lt;result&gt;success.jsp&lt;/result&gt;
+    &lt;result name="error, input"&gt;input-form.jsp&lt;/result&gt;
+&lt;/action&gt;
+</code></pre>
+</div>
+
+<p>Such functionality was added in Struts 2.5</p>
+
+<p>#####Global Results#####</p>
+
+<p>Most often, results are nested with the action element. But some results apply to multiple actions. In a secure application, a client might try to access a page without being authorized, and many actions may need access to a “logon” result.</p>
+
+<p>If actions need to share results, a set of global results can be defined for each package. The framework will first look for a local result nested in the action. If a local match is not found, then the global results are checked.</p>
+
+<p><strong>Defining global results</strong></p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>&lt;global-results&gt;
+    &lt;result name="error"&gt;/Error.jsp&lt;/result&gt;
+    &lt;result name="invalid.token"&gt;/Error.jsp&lt;/result&gt;
+    &lt;result name="login" type="redirectAction"&gt;Logon!input&lt;/result&gt;
+&lt;/global-results&gt;
+
+</code></pre>
+</div>
+
+<p>(light-on) For more about results, see <a href="result-types.html">Result Types</a>.</p>
+
+<p>#####Dynamic Results#####</p>
+
+<p>A result may not be known until execution time. Consider the implementation of a state-machine-based execution flow; the next state might depend on any combination of form input elements, session attributes, user roles, moon phase, etc. In other words, determining the next action, input page, etc. may not be known at configuration time.</p>
+
+<p>Result values may be retrieved from its corresponding Action implementation by using EL expressions that access the Action’s properties, just like the Struts 2 tag libraries. So given the following Action fragment:</p>
+
+<p><strong>FragmentAction implementation</strong></p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>private String nextAction;
+
+public String getNextAction() {
+    return nextAction;
+}
+
+</code></pre>
+</div>
+
+<p>you might define a result like this:</p>
+
+<p><strong>FragmentAction configuration</strong></p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>&lt;action name="fragment" class="FragmentAction"&gt;
+    &lt;result name="next" type="redirectAction"&gt;${nextAction}&lt;/result&gt;
+&lt;/action&gt;
+
+</code></pre>
+</div>
+
+<p>If a</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>FragmentAction
+</code></pre>
+</div>
+<p>method returns “next” the actual <em>value</em>  of that result will be whatever is in</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>FragmentAction
+</code></pre>
+</div>
+<p>’s</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>nextAction
+</code></pre>
+</div>
+<p>property. So</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>nextAction
+</code></pre>
+</div>
+<p>may be computed based on whatever state information necessary then passed at runtime to “next”’s</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>redirectAction
+</code></pre>
+</div>
+<p>.</p>
+
+<p>See <em>Parameters in configuration results</em>  for an expanded discussion.</p>
+
+<p> </p>
+
+<p>#####Returning Result Objects#####</p>
+
+<p>Instead of configuring results and returning the name, it is possible to return a result object:</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>public Result runAction() {
+	ServletDispatcherResult result = new ServletDispatcherResult();
+	result.setLocation("input-form.jsp");
+	return result;
+}
+</code></pre>
+</div>
+
+<p> </p>
+
+  </section>
+</article>
+
+
+<footer class="container">
+  <div class="col-md-12">
+    Copyright &copy; 2000-2016 <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>
+
+
+<script>
+$(function() {
+  return $("h2, h3, h4, h5, h6").each(function(i, el) {
+    var $el, id;
+    $el = $(el);
+    id = $el.attr('id');
+    if (id) {
+      $el.removeAttr('id');
+      return $el.before($("<a />").addClass('anchor').attr('name', id));
+    }
+  });
+});
+</script>
+
+</body>
+</html>

Added: websites/production/struts/content/core-developers/result-types.html
==============================================================================
--- websites/production/struts/content/core-developers/result-types.html (added)
+++ websites/production/struts/content/core-developers/result-types.html Thu Jun  1 11:35:58 2017
@@ -0,0 +1,331 @@
+<!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>Result Types</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="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.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="/downloads.html">Downloads</a></li>
+                <li><a href="/announce.html">Announcements</a></li>
+                <li><a href="http://www.apache.org/licenses/">License</a></li>
+                <li><a href="http://apache.org/foundation/thanks.html">Thanks!</a></li>
+                <li><a href="http://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="/maven/project-info.html">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="/docs/tutorials.html">Tutorials</a></li>
+                <li><a href="/docs/faqs.html">FAQs</a></li>
+                <li><a href="/docs/guides.html">Guides</a></li>
+                <li class="divider"></li>
+                <li><a href="/maven/struts2-core/apidocs/index.html">Struts Core API</a></li>
+                <li><a href="/docs/plugins.html">Plugin APIs</a></li>
+                <li><a href="/docs/tag-reference.html">Tag reference</a></li>
+                <li><a href="http://cwiki.apache.org/S2PLUGINS/home.html">Plugin registry</a></li>
+                <li class="divider"></li>
+                <li><a href="/security/">Security Guide (WIP)</a></li>
+                <li><a href="/core-developers/">Core Developers Guide (WIP)</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 class="divider"></li>
+                <li><a href="/submitting-patches.html">Submitting patches</a></li>
+                <li><a href="/builds.html">Source Code</a></li>
+                <li><a href="/coding-standards.html">Coding standards</a></li>
+                <li class="divider"></li>
+                <li><a href="/releases.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://git-wip-us.apache.org/repos/asf?p=struts.git">Source Repository</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 href="index.html" title="back to Core Developers Guide"><< back to Core Developers Guide</a>
+    <h1 id="result-types">Result Types</h1>
+
+<p>Most use cases can be divided into two phases. First, we need to change or query the application’s state, and then we need to present an updated view of the application. The Action class manages the application’s state, and the Result Type manages the view.</p>
+
+<p>####Predefined Result Types####</p>
+
+<p>The framework provides several implementations of the</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>com.opensymphony.xwork2.Result
+</code></pre>
+</div>
+<p>interface, ready to use in your own applications.</p>
+
+<table>
+  <thead>
+    <tr>
+      <th><a href="chain-result.html">Chain Result</a></th>
+      <th>Used for <a href="action-chaining.html">Action Chaining</a></th>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <td><a href="dispatcher-reult.html">Dispatcher Result</a></td>
+      <td>Used for web resource integration, including <em>JSP</em>  integration</td>
+    </tr>
+    <tr>
+      <td><a href="freemarker-result.html">FreeMarker Result</a></td>
+      <td>Used for <em>FreeMarker</em>  integration</td>
+    </tr>
+    <tr>
+      <td><a href="httpheader-result.html">HttpHeader Result</a></td>
+      <td>Used to control special HTTP behaviors</td>
+    </tr>
+    <tr>
+      <td><a href="redirect-result.html">Redirect Result</a></td>
+      <td>Used to redirect to another URL (web resource)</td>
+    </tr>
+    <tr>
+      <td><a href="redirect-action-result.html">Redirect Action Result</a></td>
+      <td>Used to redirect to another action mapping</td>
+    </tr>
+    <tr>
+      <td><a href="stream-result.html">Stream Result</a></td>
+      <td>Used to stream an InputStream back to the browser (usually for file downloads)</td>
+    </tr>
+    <tr>
+      <td><a href="velocity-result.html">Velocity Result</a></td>
+      <td>Used for <em>Velocity</em>  integration</td>
+    </tr>
+    <tr>
+      <td><a href="xsl-result.html">XSL Result</a></td>
+      <td>Used for XML/XSLT integration</td>
+    </tr>
+    <tr>
+      <td><a href="plaintext-result.html">PlainText Result</a></td>
+      <td>Used to display the raw content of a particular page (i.e jsp, HTML)</td>
+    </tr>
+    <tr>
+      <td><em>Tiles 2 Result</em></td>
+      <td>Used to provide Tiles 2 integration</td>
+    </tr>
+    <tr>
+      <td><em>Tiles 3 Result</em></td>
+      <td>Used to provide Tiles 3 integration</td>
+    </tr>
+    <tr>
+      <td><a href="postback-result.html">Postback Result</a></td>
+      <td>Used to postback request parameters as a form to the specified destination</td>
+    </tr>
+    <tr>
+      <td><em>JSON Result</em></td>
+      <td>Used to serialize actions into JSON</td>
+    </tr>
+  </tbody>
+</table>
+
+<p>#####Optional#####</p>
+
+<p>|<em>JasperReports Plugin</em> |Used for <em>JasperReports Tutorial</em>  integration|Optional, third-party plugin|
+|———————–|———————————————-|—————————–|</p>
+
+<p>Additional Result Types can be created and plugged into an application by implementing the</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>com.opensymphony.xwork2.Result
+</code></pre>
+</div>
+<p>interface. Custom Result Types might include generating an email or JMS message, generating images, and so forth.</p>
+
+<p>####Default Parameters####</p>
+
+<p>To minimize configuration, Results can be configured with a single value, which will be converted into a parameter, and each Result can specify which parameter this value should be set as. For example, here is a result defined in XML that uses a default parameter:</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>&lt;result type="freemarker"&gt;foo.fm&lt;/result&gt;
+
+</code></pre>
+</div>
+
+<p>That is the equivalent to this:</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>&lt;result type="freemarker"&gt;
+  &lt;param name="location"&gt;foo.vm&lt;/param&gt;
+&lt;/result&gt;
+
+</code></pre>
+</div>
+
+<p>Since probably 95% of your actions won’t need results that contain multiple parameters, this little shortcut saves you a significant amount of configuration. It also follows that if you have specified the default parameter, you don’t need to set the same parameter as a specifically-named parameter.</p>
+
+<p>####Registering Result Types####</p>
+
+<p>All Result Types are plugged in via the <a href="result-configuration.html">Result Configuration</a>.</p>
+
+<p>#####Extending#####</p>
+
+<p>You can always extend defined result types and implement whatever logic you need. To simplify process of that, you can define your custom</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>ResultFactory
+</code></pre>
+</div>
+<p>and use it with connection with custom interface which your Result implements. Check <a href="object-factory.html">Define dedicated factory</a> to see how to do it.</p>
+
+<p>Struts 2 provides one such extension for you:</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>ParamNameAwareResult
+</code></pre>
+</div>
+<p>interface when used with</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>StrutsResultBuilder
+</code></pre>
+</div>
+<p>can limit parameters assigned to the result. So you can simple extend existing result with such a functionality as below:</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>public class MyResult extends ServletDispatcherResult implements ParamNameAwareResult {
+
+    public boolean acceptableParamName(String name, String value) {
+        return "accept".equals(name);
+    }
+
+}
+
+</code></pre>
+</div>
+
+<p>and then register it and use instead of default</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>dispatcher
+</code></pre>
+</div>
+<p>result.</p>
+
+  </section>
+</article>
+
+
+<footer class="container">
+  <div class="col-md-12">
+    Copyright &copy; 2000-2016 <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>
+
+
+<script>
+$(function() {
+  return $("h2, h3, h4, h5, h6").each(function(i, el) {
+    var $el, id;
+    $el = $(el);
+    id = $el.attr('id');
+    if (id) {
+      $el.removeAttr('id');
+      return $el.before($("<a />").addClass('anchor').attr('name', id));
+    }
+  });
+});
+</script>
+
+</body>
+</html>