This is an automated email from the ASF dual-hosted git repository.

git-site-role pushed a commit to branch asf-staging
in repository https://gitbox.apache.org/repos/asf/struts-site.git

commit f86663fd386bfe81d0f9407f8ea9dc721a9b269f
Author: jenkins <bui...@apache.org>
AuthorDate: Sat Nov 5 14:06:40 2022 +0000

    Updates stage by Jenkins
---
 content/core-developers/default-properties.html |   3 +
 content/core-developers/interceptors.html       |   5 +
 content/core-developers/struts-default-xml.html |   5 +
 content/plugins/async/index.html                | 290 ++++++++++++++++++++++++
 content/plugins/bean-validation/index.html      | 101 +++++----
 content/plugins/cdi/index.html                  |  25 +-
 content/plugins/codebehind/index.html           |  13 +-
 content/plugins/config-browser/index.html       |  32 ++-
 content/plugins/convention/index.html           |   2 +-
 content/plugins/dwr/index.html                  |  23 +-
 content/plugins/embedded-jsp/index.html         |  17 +-
 content/plugins/index.html                      |   5 +
 content/plugins/jasperreports/index.html        | 127 +++++------
 content/plugins/java-8-support/index.html       |  18 +-
 content/plugins/javatemplates/index.html        |  48 ++--
 content/plugins/jfreechart/index.html           |  20 +-
 content/plugins/jsf/index.html                  |  18 +-
 content/plugins/json/index.html                 |   2 +-
 content/plugins/junit/index.html                |   2 +-
 content/plugins/osgi/index.html                 |  22 +-
 content/plugins/oval/index.html                 |  17 +-
 content/plugins/plexus/index.html               |  14 +-
 content/plugins/portlet-tiles/index.html        |  10 +-
 content/plugins/portlet/index.html              |  21 +-
 content/plugins/rest/index.html                 |   2 +-
 content/plugins/sitegraph/index.html            | 132 +++++------
 content/plugins/sitemesh/index.html             |  60 +++--
 content/plugins/spring/index.html               | 111 +++++----
 content/plugins/struts-1/index.html             |  14 +-
 content/plugins/testng/index.html               |  17 +-
 content/plugins/tiles-3/index.html              |  17 +-
 content/plugins/tiles/index.html                |   2 +-
 content/tag-developers/css-xhtml-theme.html     |   2 +-
 content/tag-developers/simple-theme.html        |   2 +-
 content/tag-developers/xhtml-theme.html         |  10 +-
 35 files changed, 855 insertions(+), 354 deletions(-)

diff --git a/content/core-developers/default-properties.html 
b/content/core-developers/default-properties.html
index d8e2758be..741a47f39 100644
--- a/content/core-developers/default-properties.html
+++ b/content/core-developers/default-properties.html
@@ -424,6 +424,9 @@ struts.ognl.expressionMaxLength=256
 ### These formatters are using a slightly different patterns, please check 
JavaDocs of both and more details is in WW-5016
 struts.date.formatter=dateTimeFormatter
 
+struts.url.encoder=strutsUrlEncoder
+struts.url.decoder=strutsUrlDecoder
+
 ### END SNIPPET: complete_file</code></pre></figure>
 
 
diff --git a/content/core-developers/interceptors.html 
b/content/core-developers/interceptors.html
index 0e6587bcd..263b0a7ef 100644
--- a/content/core-developers/interceptors.html
+++ b/content/core-developers/interceptors.html
@@ -541,6 +541,11 @@ than reiterate the same list of Interceptors, we can 
bundle these Interceptors t
     <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"com.opensymphony.xwork2.ognl.BeanInfoCacheFactory"</span> <span 
class="na">name=</span><span class="s">"struts"</span>
           <span class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.ognl.DefaultOgnlBeanInfoCacheFactory"</span> 
<span class="na">scope=</span><span class="s">"singleton"</span><span 
class="nt">/&gt;</span>
 
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"org.apache.struts2.url.UrlEncoder"</span> <span 
class="na">name=</span><span class="s">"strutsUrlEncoder"</span>
+          <span class="na">class=</span><span 
class="s">"org.apache.struts2.url.StrutsUrlEncoder"</span> <span 
class="na">scope=</span><span class="s">"singleton"</span><span 
class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"org.apache.struts2.url.UrlDecoder"</span> <span 
class="na">name=</span><span class="s">"strutsUrlDecoder"</span>
+          <span class="na">class=</span><span 
class="s">"org.apache.struts2.url.StrutsUrlDecoder"</span> <span 
class="na">scope=</span><span class="s">"singleton"</span><span 
class="nt">/&gt;</span>
+
     <span class="nt">&lt;package</span> <span class="na">name=</span><span 
class="s">"struts-default"</span> <span class="na">abstract=</span><span 
class="s">"true"</span><span class="nt">&gt;</span>
         <span class="nt">&lt;result-types&gt;</span>
             <span class="nt">&lt;result-type</span> <span 
class="na">name=</span><span class="s">"chain"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.ActionChainResult"</span><span 
class="nt">/&gt;</span>
diff --git a/content/core-developers/struts-default-xml.html 
b/content/core-developers/struts-default-xml.html
index acf692a9b..6b68117a6 100644
--- a/content/core-developers/struts-default-xml.html
+++ b/content/core-developers/struts-default-xml.html
@@ -457,6 +457,11 @@ setting in <a 
href="default-properties">default.properties</a>.</p>
     <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"com.opensymphony.xwork2.ognl.BeanInfoCacheFactory"</span> <span 
class="na">name=</span><span class="s">"struts"</span>
           <span class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.ognl.DefaultOgnlBeanInfoCacheFactory"</span> 
<span class="na">scope=</span><span class="s">"singleton"</span><span 
class="nt">/&gt;</span>
 
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"org.apache.struts2.url.UrlEncoder"</span> <span 
class="na">name=</span><span class="s">"strutsUrlEncoder"</span>
+          <span class="na">class=</span><span 
class="s">"org.apache.struts2.url.StrutsUrlEncoder"</span> <span 
class="na">scope=</span><span class="s">"singleton"</span><span 
class="nt">/&gt;</span>
+    <span class="nt">&lt;bean</span> <span class="na">type=</span><span 
class="s">"org.apache.struts2.url.UrlDecoder"</span> <span 
class="na">name=</span><span class="s">"strutsUrlDecoder"</span>
+          <span class="na">class=</span><span 
class="s">"org.apache.struts2.url.StrutsUrlDecoder"</span> <span 
class="na">scope=</span><span class="s">"singleton"</span><span 
class="nt">/&gt;</span>
+
     <span class="nt">&lt;package</span> <span class="na">name=</span><span 
class="s">"struts-default"</span> <span class="na">abstract=</span><span 
class="s">"true"</span><span class="nt">&gt;</span>
         <span class="nt">&lt;result-types&gt;</span>
             <span class="nt">&lt;result-type</span> <span 
class="na">name=</span><span class="s">"chain"</span> <span 
class="na">class=</span><span 
class="s">"com.opensymphony.xwork2.ActionChainResult"</span><span 
class="nt">/&gt;</span>
diff --git a/content/plugins/async/index.html b/content/plugins/async/index.html
new file mode 100644
index 000000000..afeac70d4
--- /dev/null
+++ b/content/plugins/async/index.html
@@ -0,0 +1,290 @@
+<!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>Async Plugin</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-2022.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>
+                <li><a 
href="https://privacy.apache.org/policies/privacy-policy-public.html";>Privacy 
Policy</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 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="/contributors/">Contributors Guide</a></li>
+                <li class="divider"></li>
+                <li><a href="/release-guidelines.html">Release 
Guidelines</a></li>
+                <li><a href="/bylaws.html">PMC Charter</a></li>
+                <li><a href="/volunteers.html">Volunteers</a></li>
+                <li><a 
href="https://gitbox.apache.org/repos/asf?p=struts.git";>Source 
Repository</a></li>
+                <li><a href="/updating-website.html">Updating the 
website</a></li>
+              </ul>
+            </li>
+            <li class="apache"><a href="http://www.apache.org/";><img 
src="/img/apache.png"></a></li>
+          </ul>
+        </div>
+      </div>
+    </div>
+  </nav>
+</header>
+
+
+<article class="container">
+  <section class="col-md-12">
+    <a class="edit-on-gh" 
href="https://github.com/apache/struts-site/edit/master/source/plugins/async/index.md";
 title="Edit this page on GitHub">Edit on GitHub</a>
+    
+    <a href="index.html" title="back to Plugins"><< back to Plugins</a>
+    
+    <h1 class="no_toc" id="async-plugin">Async Plugin</h1>
+
+<ul id="markdown-toc">
+  <li><a href="#description" id="markdown-toc-description">Description</a></li>
+  <li><a href="#simple-usage" id="markdown-toc-simple-usage">Simple 
usage</a></li>
+  <li><a href="#customize-timeout" 
id="markdown-toc-customize-timeout">Customize timeout</a></li>
+  <li><a href="#serializing-multiple-async-tasks" 
id="markdown-toc-serializing-multiple-async-tasks">Serializing multiple async 
tasks</a></li>
+</ul>
+
+<h2 id="description">Description</h2>
+
+<p>The Async plugin allows to implement actions as using
+an <a 
href="https://docs.oracle.com/javaee/7/tutorial/servlets012.htm";>Asynchronous 
Processing</a>
+available as from Servlet API 3. It’s a thin layer over the Servlet async 
layer.</p>
+
+<h2 id="simple-usage">Simple usage</h2>
+
+<p>The example code below shows how to implement and use async actions. Please 
check an async action example
+in our <a 
href="https://github.com/apache/struts/tree/master/apps/showcase/src/main/java/org/apache/struts2/showcase/async";>Showcase
 app</a>.</p>
+
+<p><strong>Action</strong></p>
+
+<div class="language-java highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="kd">public</span> <span 
class="kd">class</span> <span class="nc">AsyncAction</span> <span 
class="o">{</span>
+
+    <span class="kd">public</span> <span class="nc">Callable</span><span 
class="o">&lt;</span><span class="nc">String</span><span class="o">&gt;</span> 
<span class="nf">execute</span><span class="o">()</span> <span 
class="kd">throws</span> <span class="nc">InterruptedException</span> <span 
class="o">{</span>
+        <span class="k">return</span> <span class="k">new</span> <span 
class="nc">Callable</span><span class="o">&lt;</span><span 
class="nc">String</span><span class="o">&gt;()</span> <span class="o">{</span>
+            <span class="nd">@Override</span>
+            <span class="kd">public</span> <span class="nc">String</span> 
<span class="nf">call</span><span class="o">()</span> <span 
class="kd">throws</span> <span class="nc">Exception</span> <span 
class="o">{</span>
+                <span class="n">waitForEvent</span><span class="o">();</span>
+                <span class="k">return</span> <span 
class="s">"success"</span><span class="o">;</span>
+            <span class="o">}</span>
+        <span class="o">};</span>
+    <span class="o">}</span>
+
+    <span class="kd">private</span> <span class="kt">void</span> <span 
class="nf">waitForEvent</span><span class="o">()</span> <span 
class="kd">throws</span> <span class="nc">InterruptedException</span> <span 
class="o">{</span>
+        <span class="nc">Thread</span><span class="o">.</span><span 
class="na">sleep</span><span class="o">(</span><span 
class="mi">40000</span><span class="o">);</span>
+    <span class="o">}</span>
+<span class="o">}</span>
+</code></pre></div></div>
+
+<p><strong>struts.xml</strong></p>
+
+<div class="language-xml highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="nt">&lt;action</span> <span 
class="na">name=</span><span class="s">"async"</span> <span 
class="na">class=</span><span 
class="s">"com.company.struts.AsyncAction"</span><span class="nt">&gt;</span>
+    <span class="nt">&lt;result</span> <span class="na">name=</span><span 
class="s">"success"</span> <span class="na">type=</span><span 
class="s">"json"</span><span class="nt">/&gt;</span>
+<span class="nt">&lt;/action&gt;</span>
+</code></pre></div></div>
+
+<p><strong>web.xml</strong></p>
+
+<p>You must define the Struts Servlet to allow support Async actions.</p>
+
+<div class="language-xml highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="nt">&lt;servlet&gt;</span>
+    <span class="nt">&lt;servlet-name&gt;</span>strutsServlet<span 
class="nt">&lt;/servlet-name&gt;</span>
+    <span 
class="nt">&lt;servlet-class&gt;</span>org.apache.struts2.dispatcher.servlet.StrutsServlet<span
 class="nt">&lt;/servlet-class&gt;</span>
+    <span class="nt">&lt;load-on-startup&gt;</span>1<span 
class="nt">&lt;/load-on-startup&gt;</span>
+    <span class="nt">&lt;async-supported&gt;</span>true<span 
class="nt">&lt;/async-supported&gt;</span>
+<span class="nt">&lt;/servlet&gt;</span>
+
+<span class="nt">&lt;servlet-mapping&gt;</span>
+<span class="nt">&lt;servlet-name&gt;</span>strutsServlet<span 
class="nt">&lt;/servlet-name&gt;</span>
+<span class="nt">&lt;url-pattern&gt;</span>/<span 
class="nt">&lt;/url-pattern&gt;</span>
+<span class="nt">&lt;/servlet-mapping&gt;</span>
+</code></pre></div></div>
+
+<h2 id="customize-timeout">Customize timeout</h2>
+
+<p><strong>Action</strong></p>
+
+<div class="language-java highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="kd">public</span> <span 
class="kd">class</span> <span class="nc">AsyncAction</span> <span 
class="o">{</span>
+
+    <span class="kd">public</span> <span class="nc">Callable</span><span 
class="o">&lt;</span><span class="nc">String</span><span class="o">&gt;</span> 
<span class="nf">execute</span><span class="o">()</span> <span 
class="kd">throws</span> <span class="nc">InterruptedException</span> <span 
class="o">{</span>
+        <span class="k">return</span> <span class="k">new</span> <span 
class="nf">AsyncAction</span><span class="o">(</span><span 
class="mi">60000</span><span class="cm">/*timeout*/</span><span 
class="o">,</span> <span class="k">new</span> <span 
class="nc">Callable</span><span class="o">&lt;</span><span 
class="nc">String</span><span class="o">&gt;()</span> <span class="o">{</span>
+            <span class="nd">@Override</span>
+            <span class="kd">public</span> <span class="nc">String</span> 
<span class="nf">call</span><span class="o">()</span> <span 
class="kd">throws</span> <span class="nc">Exception</span> <span 
class="o">{</span>
+                <span class="n">waitForEvent</span><span class="o">();</span>
+                <span class="k">return</span> <span 
class="s">"success"</span><span class="o">;</span>
+            <span class="o">}</span>
+        <span class="o">});</span>
+    <span class="o">}</span>
+
+    <span class="kd">private</span> <span class="kt">void</span> <span 
class="nf">waitForEvent</span><span class="o">()</span> <span 
class="kd">throws</span> <span class="nc">InterruptedException</span> <span 
class="o">{</span>
+        <span class="nc">Thread</span><span class="o">.</span><span 
class="na">sleep</span><span class="o">(</span><span 
class="mi">40000</span><span class="o">);</span>
+    <span class="o">}</span>
+<span class="o">}</span>
+</code></pre></div></div>
+
+<h2 id="serializing-multiple-async-tasks">Serializing multiple async tasks</h2>
+
+<p><strong>Action</strong></p>
+
+<div class="language-java highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="kd">public</span> <span 
class="kd">class</span> <span class="nc">AsyncAction</span> <span 
class="o">{</span>
+
+    <span class="kd">public</span> <span class="nc">Callable</span><span 
class="o">&lt;</span><span class="nc">String</span><span class="o">&gt;</span> 
<span class="nf">execute</span><span class="o">()</span> <span 
class="kd">throws</span> <span class="nc">InterruptedException</span> <span 
class="o">{</span>
+        <span class="k">return</span> <span class="k">new</span> <span 
class="nc">Callable</span><span class="o">&lt;</span><span 
class="nc">String</span><span class="o">&gt;()</span> <span class="o">{</span>
+            <span class="nd">@Override</span>
+            <span class="kd">public</span> <span class="nc">String</span> 
<span class="nf">call</span><span class="o">()</span> <span 
class="kd">throws</span> <span class="nc">Exception</span> <span 
class="o">{</span>
+                <span class="n">waitForEvent1</span><span class="o">();</span>
+                <span class="k">return</span> <span class="k">new</span> <span 
class="nc">Callable</span><span class="o">&lt;</span><span 
class="nc">String</span><span class="o">&gt;()</span> <span class="o">{</span>
+
+                    <span class="nd">@Override</span>
+                    <span class="kd">public</span> <span 
class="nc">String</span> <span class="nf">call</span><span class="o">()</span> 
<span class="kd">throws</span> <span class="nc">Exception</span> <span 
class="o">{</span>
+                        <span class="n">waitForEvent2</span><span 
class="o">();</span>
+                        <span class="k">return</span> <span 
class="s">"success"</span><span class="o">;</span>
+                    <span class="o">}</span>
+                <span class="o">};</span>
+            <span class="o">}</span>
+        <span class="o">};</span>
+    <span class="o">}</span>
+
+    <span class="kd">private</span> <span class="kt">void</span> <span 
class="nf">waitForEvent1</span><span class="o">()</span> <span 
class="kd">throws</span> <span class="nc">InterruptedException</span> <span 
class="o">{</span>
+        <span class="nc">Thread</span><span class="o">.</span><span 
class="na">sleep</span><span class="o">(</span><span 
class="mi">40000</span><span class="o">);</span>
+    <span class="o">}</span>
+
+    <span class="kd">private</span> <span class="kt">void</span> <span 
class="nf">waitForEvent2</span><span class="o">()</span> <span 
class="kd">throws</span> <span class="nc">InterruptedException</span> <span 
class="o">{</span>
+        <span class="nc">Thread</span><span class="o">.</span><span 
class="na">sleep</span><span class="o">(</span><span 
class="mi">40000</span><span class="o">);</span>
+    <span class="o">}</span>
+<span class="o">}</span>
+</code></pre></div></div>
+
+  </section>
+</article>
+
+
+<footer class="container">
+  <div class="col-md-12">
+    Copyright &copy; 2000-2022 <a href="https://www.apache.org/";>The Apache 
Software Foundation</a>.
+    Apache Struts, Struts, Apache, the Apache feather logo, and the Apache 
Struts project logos are
+    trademarks of The Apache Software Foundation. All Rights Reserved.
+  </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>
diff --git a/content/plugins/bean-validation/index.html 
b/content/plugins/bean-validation/index.html
index a65c6b008..28e1749ff 100644
--- a/content/plugins/bean-validation/index.html
+++ b/content/plugins/bean-validation/index.html
@@ -129,32 +129,34 @@
   <section class="col-md-12">
     <a class="edit-on-gh" 
href="https://github.com/apache/struts-site/edit/master/source/plugins/bean-validation/index.md";
 title="Edit this page on GitHub">Edit on GitHub</a>
     
-    <a href="../" title="back to Plugins"><< back to Plugins</a>
+    <a href="index.html" title="back to Plugins"><< back to Plugins</a>
     
-    <h1 id="bean-validation-plugin">Bean Validation Plugin</h1>
+    <h1 class="no_toc" id="bean-validation-plugin">Bean Validation Plugin</h1>
+
+<ul id="markdown-toc">
+  <li><a href="#bean-validation" id="markdown-toc-bean-validation">Bean 
Validation</a></li>
+  <li><a href="#setup" id="markdown-toc-setup">Setup</a></li>
+  <li><a href="#configuration" 
id="markdown-toc-configuration">Configuration</a></li>
+  <li><a href="#bean-validation-example" 
id="markdown-toc-bean-validation-example">Bean Validation Example</a></li>
+</ul>
 
 <h2 id="bean-validation">Bean Validation</h2>
 
-<p>The Bean Validation plugin implements a bridge to use Bean Validation in 
struts actions. Bean Validation has been specified in JSR 303 and is part of 
the JavaEE platform. Full-fledged application servers already bring validation 
providers which can be leveraged by this plugin. The plugin integrates with 
other struts features like:</p>
+<p>The Bean Validation plugin implements a bridge to use Bean Validation in 
struts actions. Bean Validation has been
+specified in JSR 303 and is part of the JavaEE platform. Full-fledged 
application servers already bring validation
+providers which can be leveraged by this plugin. The plugin integrates with 
other struts features like:</p>
 
 <ul>
-  <li>
-    <p>i18n</p>
-  </li>
-  <li>
-    <p>model driven</p>
-  </li>
-  <li>
-    <p>AJAX Validation</p>
-  </li>
-  <li>
-    <p>workflow</p>
-  </li>
+  <li>i18n</li>
+  <li>model driven</li>
+  <li>AJAX Validation</li>
+  <li>workflow</li>
 </ul>
 
 <h2 id="setup">Setup</h2>
 
-<p>In order to use the Bean Validation plugin, you first need to add the JAR 
file to the <code class="language-plaintext 
highlighter-rouge">WEB-INF/lib</code> directory of your application or include 
the dependency in your project’s Maven POM file.</p>
+<p>In order to use the Bean Validation plugin, you first need to add the JAR 
file to the <code class="language-plaintext 
highlighter-rouge">WEB-INF/lib</code> directory of your
+application or include the dependency in your project’s Maven POM file.</p>
 
 <p><strong>pom.xml</strong></p>
 
@@ -165,11 +167,13 @@
 <span class="nt">&lt;/dependency&gt;</span>
 </code></pre></div></div>
 
-<p>Where X.X.X is the current version of Struts 2. Please remember that the 
Bean Validation Plugin is available from version 2.5.</p>
+<p>Where X.X.X is the current version of Struts 2. Please remember that the 
Bean Validation Plugin is available from
+version 2.5.</p>
 
 <h2 id="configuration">Configuration</h2>
 
-<p>This sample shows the configuration constants the plugin provides. It also 
shows how to enable bean-validation by extending your own application package 
from <code class="language-plaintext 
highlighter-rouge">struts-bean-validation</code> which comes along with the 
plugin.</p>
+<p>This sample shows the configuration constants the plugin provides. It also 
shows how to enable bean-validation
+by extending your own application package from <code class="language-plaintext 
highlighter-rouge">struts-bean-validation</code> which comes along with the 
plugin.</p>
 
 <p><strong>struts.xml</strong></p>
 
@@ -178,41 +182,44 @@
     <span class="nt">&lt;constant</span> <span class="na">name=</span><span 
class="s">"struts.beanValidation.ignoreXMLConfiguration"</span> <span 
class="na">value=</span><span class="s">"false"</span><span 
class="nt">/&gt;</span>
     <span class="nt">&lt;constant</span> <span class="na">name=</span><span 
class="s">"struts.beanValidation.convertMessageToUtf"</span> <span 
class="na">value=</span><span class="s">"false"</span><span 
class="nt">/&gt;</span>
     <span class="nt">&lt;constant</span> <span class="na">name=</span><span 
class="s">"struts.beanValidation.convertMessageFromEncoding"</span> <span 
class="na">value=</span><span class="s">"ISO-8859-1"</span><span 
class="nt">/&gt;</span>
- 
+
     <span class="nt">&lt;package</span> <span class="na">name=</span><span 
class="s">"my-bean-validation"</span> <span class="na">extends=</span><span 
class="s">"struts-bean-validation"</span><span class="nt">&gt;</span>
     <span class="nt">&lt;/package&gt;</span>
 <span class="nt">&lt;/struts&gt;</span>
 </code></pre></div></div>
 
-<p>Here is another example that shows how you can combine bean-validation with 
other plugins by configuring your own Interceptor-Stack (note: this is just a 
very short example. In a real app you should take more care about your stack). 
You can combine bean validation with classic struts validation (or disable 
either) by putting the according interceptors in your stack (or by removing 
them from your stack).</p>
+<p>Here is another example that shows how you can combine bean-validation with 
other plugins by configuring your own
+Interceptor-Stack (note: this is just a very short example. In a real app you 
should take more care about your stack).
+You can combine bean validation with classic struts validation (or disable 
either) by putting the according interceptors
+in your stack (or by removing them from your stack).</p>
 
 <p><strong>struts.xml</strong></p>
 
-<div class="language-xml highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code>       <span class="nt">&lt;package</span> <span 
class="na">name=</span><span class="s">"my-app-package"</span> <span 
class="na">extends=</span><span class="s">"struts-default"</span><span 
class="nt">&gt;</span>
-               <span class="nt">&lt;interceptors&gt;</span>
-                       <span class="nt">&lt;interceptor&gt;</span>
-                                name="beanValidation"
-                                
class="org.apache.struts.beanvalidation.validation.interceptor.BeanValidationInterceptor"&gt;
-                       <span class="nt">&lt;/interceptor&gt;</span>
-                       <span class="nt">&lt;interceptor-stack</span> <span 
class="na">name=</span><span class="s">"appDefaultStack"</span><span 
class="nt">&gt;</span>
-                               <span class="nt">&lt;interceptor-ref</span> 
<span class="na">name=</span><span class="s">"beanValidation"</span><span 
class="nt">/&gt;</span>
-                               <span class="nt">&lt;interceptor-ref</span> 
<span class="na">name=</span><span class="s">"defaultStack"</span><span 
class="nt">/&gt;</span>
-                       <span class="nt">&lt;/interceptor-stack&gt;</span>
-               <span class="nt">&lt;/interceptors&gt;</span>
-       <span class="nt">&lt;/package&gt;</span>
+<div class="language-xml highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="nt">&lt;package</span> <span 
class="na">name=</span><span class="s">"my-app-package"</span> <span 
class="na">extends=</span><span class="s">"struts-default"</span><span 
class="nt">&gt;</span>
+    <span class="nt">&lt;interceptors&gt;</span>
+        <span class="nt">&lt;interceptor&gt;</span>
+            name="beanValidation"
+            
class="org.apache.struts.beanvalidation.validation.interceptor.BeanValidationInterceptor"&gt;
+        <span class="nt">&lt;/interceptor&gt;</span>
+        <span class="nt">&lt;interceptor-stack</span> <span 
class="na">name=</span><span class="s">"appDefaultStack"</span><span 
class="nt">&gt;</span>
+            <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"beanValidation"</span><span 
class="nt">/&gt;</span>
+            <span class="nt">&lt;interceptor-ref</span> <span 
class="na">name=</span><span class="s">"defaultStack"</span><span 
class="nt">/&gt;</span>
+        <span class="nt">&lt;/interceptor-stack&gt;</span>
+    <span class="nt">&lt;/interceptors&gt;</span>
+<span class="nt">&lt;/package&gt;</span>
 </code></pre></div></div>
 
-<p> </p>
-
 <h2 id="bean-validation-example">Bean Validation Example</h2>
 
-<p>Here is an example Action that makes use of bean validation. Note that some 
of the validation annotations are taken from <code class="language-plaintext 
highlighter-rouge">javax</code> package (which is defined in the JSR) while 
others are taken from the validaton provider (in this case: <code 
class="language-plaintext highlighter-rouge">hibernate</code>). You can 
specifiy own text keys in the <code class="language-plaintext 
highlighter-rouge">message</code> attribute of the annotatio [...]
+<p>Here is an example Action that makes use of bean validation. Note that some 
of the validation annotations are taken
+from <code class="language-plaintext highlighter-rouge">javax</code> package 
(which is defined in the JSR) while others are taken from the validaton 
provider (in this
+case: <code class="language-plaintext highlighter-rouge">hibernate</code>). 
You can specifiy own text keys in the <code class="language-plaintext 
highlighter-rouge">message</code> attribute of the annotations. If you do that 
the
+whole struts i18n mechanism kicks in to resolve those text keys.</p>
 
 <p><strong>com.example.actions.BeanValidationAction</strong></p>
 
 <div class="language-java highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="kn">package</span> <span 
class="nn">com.example.actions</span><span class="o">;</span>
 
-
 <span class="kn">import</span> <span 
class="nn">com.opensymphony.xwork2.ActionSupport</span><span class="o">;</span>
 <span class="kn">import</span> <span 
class="nn">org.apache.struts.beanvalidation.constraints.FieldMatch</span><span 
class="o">;</span>
 <span class="kn">import</span> <span 
class="nn">org.apache.struts2.convention.annotation.Action</span><span 
class="o">;</span>
@@ -224,6 +231,7 @@
 <span class="kn">import</span> <span 
class="nn">org.hibernate.validator.constraints.NotBlank</span><span 
class="o">;</span>
 <span class="kn">import</span> <span 
class="nn">org.hibernate.validator.constraints.ScriptAssert</span><span 
class="o">;</span>
 <span class="kn">import</span> <span 
class="nn">org.hibernate.validator.constraints.URL</span><span 
class="o">;</span>
+
 <span class="kn">import</span> <span 
class="nn">javax.validation.constraints.*</span><span class="o">;</span>
 <span class="kn">import</span> <span class="nn">java.util.Date</span><span 
class="o">;</span>
 
@@ -243,7 +251,7 @@
     <span class="nd">@NotBlank</span>
     <span class="kd">private</span> <span class="nc">String</span> <span 
class="n">requiredStringValidatorField</span> <span class="o">=</span> <span 
class="kc">null</span><span class="o">;</span>
 
-    <span class="nd">@NotNull</span><span class="o">(</span><span 
class="n">message</span><span class="o">=</span><span 
class="s">"your.text.key.here"</span><span class="o">)</span>
+    <span class="nd">@NotNull</span><span class="o">(</span><span 
class="n">message</span> <span class="o">=</span> <span 
class="s">"your.text.key.here"</span><span class="o">)</span>
     <span class="nd">@Min</span><span class="o">(</span><span 
class="mi">1</span><span class="o">)</span>
     <span class="nd">@Max</span><span class="o">(</span><span 
class="mi">10</span><span class="o">)</span>
     <span class="kd">private</span> <span class="nc">Integer</span> <span 
class="n">integerValidatorField</span> <span class="o">=</span> <span 
class="kc">null</span><span class="o">;</span>
@@ -272,59 +280,76 @@
     <span class="kd">private</span> <span class="nc">String</span> <span 
class="n">fieldExpressionValidatorField</span> <span class="o">=</span> <span 
class="kc">null</span><span class="o">;</span>
 
 
- <span class="kd">public</span> <span class="nc">Date</span> <span 
class="nf">getDateValidatorField</span><span class="o">()</span> <span 
class="o">{</span>
+    <span class="kd">public</span> <span class="nc">Date</span> <span 
class="nf">getDateValidatorField</span><span class="o">()</span> <span 
class="o">{</span>
 
         <span class="k">return</span> <span 
class="n">dateValidatorField</span><span class="o">;</span>
     <span class="o">}</span>
+
     <span class="kd">public</span> <span class="kt">void</span> <span 
class="nf">setDateValidatorField</span><span class="o">(</span><span 
class="nc">Date</span> <span class="n">dateValidatorField</span><span 
class="o">)</span> <span class="o">{</span>
         <span class="k">this</span><span class="o">.</span><span 
class="na">dateValidatorField</span> <span class="o">=</span> <span 
class="n">dateValidatorField</span><span class="o">;</span>
     <span class="o">}</span>
+
     <span class="kd">public</span> <span class="nc">String</span> <span 
class="nf">getEmailValidatorField</span><span class="o">()</span> <span 
class="o">{</span>
         <span class="k">return</span> <span 
class="n">emailValidatorField</span><span class="o">;</span>
     <span class="o">}</span>
+
     <span class="kd">public</span> <span class="kt">void</span> <span 
class="nf">setEmailValidatorField</span><span class="o">(</span><span 
class="nc">String</span> <span class="n">emailValidatorField</span><span 
class="o">)</span> <span class="o">{</span>
         <span class="k">this</span><span class="o">.</span><span 
class="na">emailValidatorField</span> <span class="o">=</span> <span 
class="n">emailValidatorField</span><span class="o">;</span>
     <span class="o">}</span>
+
     <span class="kd">public</span> <span class="nc">Integer</span> <span 
class="nf">getIntegerValidatorField</span><span class="o">()</span> <span 
class="o">{</span>
         <span class="k">return</span> <span 
class="n">integerValidatorField</span><span class="o">;</span>
     <span class="o">}</span>
+
     <span class="kd">public</span> <span class="kt">void</span> <span 
class="nf">setIntegerValidatorField</span><span class="o">(</span><span 
class="nc">Integer</span> <span class="n">integerValidatorField</span><span 
class="o">)</span> <span class="o">{</span>
         <span class="k">this</span><span class="o">.</span><span 
class="na">integerValidatorField</span> <span class="o">=</span> <span 
class="n">integerValidatorField</span><span class="o">;</span>
     <span class="o">}</span>
+
     <span class="kd">public</span> <span class="nc">String</span> <span 
class="nf">getRegexValidatorField</span><span class="o">()</span> <span 
class="o">{</span>
         <span class="k">return</span> <span 
class="n">regexValidatorField</span><span class="o">;</span>
     <span class="o">}</span>
+
     <span class="kd">public</span> <span class="kt">void</span> <span 
class="nf">setRegexValidatorField</span><span class="o">(</span><span 
class="nc">String</span> <span class="n">regexValidatorField</span><span 
class="o">)</span> <span class="o">{</span>
         <span class="k">this</span><span class="o">.</span><span 
class="na">regexValidatorField</span> <span class="o">=</span> <span 
class="n">regexValidatorField</span><span class="o">;</span>
     <span class="o">}</span>
+
     <span class="kd">public</span> <span class="nc">String</span> <span 
class="nf">getRequiredStringValidatorField</span><span class="o">()</span> 
<span class="o">{</span>
         <span class="k">return</span> <span 
class="n">requiredStringValidatorField</span><span class="o">;</span>
     <span class="o">}</span>
+
     <span class="kd">public</span> <span class="kt">void</span> <span 
class="nf">setRequiredStringValidatorField</span><span class="o">(</span><span 
class="nc">String</span> <span 
class="n">requiredStringValidatorField</span><span class="o">)</span> <span 
class="o">{</span>
         <span class="k">this</span><span class="o">.</span><span 
class="na">requiredStringValidatorField</span> <span class="o">=</span> <span 
class="n">requiredStringValidatorField</span><span class="o">;</span>
     <span class="o">}</span>
+
     <span class="kd">public</span> <span class="nc">String</span> <span 
class="nf">getRequiredValidatorField</span><span class="o">()</span> <span 
class="o">{</span>
         <span class="k">return</span> <span 
class="n">requiredValidatorField</span><span class="o">;</span>
     <span class="o">}</span>
+
     <span class="kd">public</span> <span class="kt">void</span> <span 
class="nf">setRequiredValidatorField</span><span class="o">(</span><span 
class="nc">String</span> <span class="n">requiredValidatorField</span><span 
class="o">)</span> <span class="o">{</span>
         <span class="k">this</span><span class="o">.</span><span 
class="na">requiredValidatorField</span> <span class="o">=</span> <span 
class="n">requiredValidatorField</span><span class="o">;</span>
     <span class="o">}</span>
+
     <span class="kd">public</span> <span class="nc">String</span> <span 
class="nf">getStringLengthValidatorField</span><span class="o">()</span> <span 
class="o">{</span>
         <span class="k">return</span> <span 
class="n">stringLengthValidatorField</span><span class="o">;</span>
     <span class="o">}</span>
+
     <span class="kd">public</span> <span class="kt">void</span> <span 
class="nf">setStringLengthValidatorField</span><span class="o">(</span><span 
class="nc">String</span> <span class="n">stringLengthValidatorField</span><span 
class="o">)</span> <span class="o">{</span>
         <span class="k">this</span><span class="o">.</span><span 
class="na">stringLengthValidatorField</span> <span class="o">=</span> <span 
class="n">stringLengthValidatorField</span><span class="o">;</span>
     <span class="o">}</span>
+
     <span class="kd">public</span> <span class="nc">String</span> <span 
class="nf">getFieldExpressionValidatorField</span><span class="o">()</span> 
<span class="o">{</span>
         <span class="k">return</span> <span 
class="n">fieldExpressionValidatorField</span><span class="o">;</span>
     <span class="o">}</span>
+
     <span class="kd">public</span> <span class="kt">void</span> <span 
class="nf">setFieldExpressionValidatorField</span><span class="o">(</span>
             <span class="nc">String</span> <span 
class="n">fieldExpressionValidatorField</span><span class="o">)</span> <span 
class="o">{</span>
         <span class="k">this</span><span class="o">.</span><span 
class="na">fieldExpressionValidatorField</span> <span class="o">=</span> <span 
class="n">fieldExpressionValidatorField</span><span class="o">;</span>
     <span class="o">}</span>
+
     <span class="kd">public</span> <span class="nc">String</span> <span 
class="nf">getUrlValidatorField</span><span class="o">()</span> <span 
class="o">{</span>
         <span class="k">return</span> <span 
class="n">urlValidatorField</span><span class="o">;</span>
     <span class="o">}</span>
+
     <span class="kd">public</span> <span class="kt">void</span> <span 
class="nf">setUrlValidatorField</span><span class="o">(</span><span 
class="nc">String</span> <span class="n">urlValidatorField</span><span 
class="o">)</span> <span class="o">{</span>
         <span class="k">this</span><span class="o">.</span><span 
class="na">urlValidatorField</span> <span class="o">=</span> <span 
class="n">urlValidatorField</span><span class="o">;</span>
     <span class="o">}</span>
diff --git a/content/plugins/cdi/index.html b/content/plugins/cdi/index.html
index dc7000289..93d243466 100644
--- a/content/plugins/cdi/index.html
+++ b/content/plugins/cdi/index.html
@@ -129,7 +129,7 @@
   <section class="col-md-12">
     <a class="edit-on-gh" 
href="https://github.com/apache/struts-site/edit/master/source/plugins/cdi/index.md";
 title="Edit this page on GitHub">Edit on GitHub</a>
     
-    <a href="../" title="back to Plugins"><< back to Plugins</a>
+    <a href="index.html" title="back to Plugins"><< back to Plugins</a>
     
     <h1 class="no_toc" id="cdi-plugin">CDI Plugin</h1>
 
@@ -364,8 +364,7 @@ to undefined - so check your imports!</p>
 <p>Now that you are aware of that, here is the rest of the inevitable 
NumberGuess CDI example in Struts 2 flavour. 
 Add a JSP view similar to this:</p>
 
-<div class="language-jsp highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code>
-<span class="nt">&lt;%@ page </span><span class="na">contentType=</span><span 
class="s">"text/html; charset=UTF-8"</span> <span class="nt">%&gt;</span>
+<div class="language-jsp highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="nt">&lt;%@ page </span><span 
class="na">contentType=</span><span class="s">"text/html; charset=UTF-8"</span> 
<span class="nt">%&gt;</span>
 <span class="nt">&lt;%@ taglib </span><span class="na">prefix=</span><span 
class="s">"s"</span><span class="na"> uri=</span><span 
class="s">"/struts-tags"</span> <span class="nt">%&gt;</span>
 <span class="nt">&lt;html&gt;</span>
 <span class="nt">&lt;head&gt;</span>
@@ -392,8 +391,7 @@ Add a JSP view similar to this:</p>
 
 <p>along - if not using the fabulous and recommended Struts 2 <a 
href="../convention">Convention Plugin</a> - with a struts.xml like this</p>
 
-<div class="language-xml highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code>
-<span class="cp">&lt;?xml version="1.0" encoding="UTF-8"?&gt;</span>
+<div class="language-xml highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="cp">&lt;?xml version="1.0" 
encoding="UTF-8"?&gt;</span>
 <span class="cp">&lt;!DOCTYPE struts PUBLIC
           "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"    
   
           "http://struts.apache.org/dtds/struts-2.3.dtd"&gt;</span>
@@ -414,13 +412,11 @@ Add a JSP view similar to this:</p>
     <span class="nt">&lt;/package&gt;</span>
 
 <span class="nt">&lt;/struts&gt;</span>
-
 </code></pre></div></div>
 
 <p>Now you can add the business logic we want to be managed and injected by 
CDI. Start with two qualifier annotations:</p>
 
-<div class="language-java highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code>
-<span class="kn">package</span> <span 
class="nn">org.apache.struts2.example.cdi</span><span class="o">;</span>
+<div class="language-java highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="kn">package</span> <span 
class="nn">org.apache.struts2.example.cdi</span><span class="o">;</span>
 
 <span class="kn">import</span> <span 
class="nn">javax.inject.Qualifier</span><span class="o">;</span>
 <span class="kn">import</span> <span 
class="nn">java.lang.annotation.Documented</span><span class="o">;</span>
@@ -434,11 +430,9 @@ Add a JSP view similar to this:</p>
 <span class="nd">@Documented</span>
 <span class="nd">@Qualifier</span>
 <span class="kd">public</span> <span class="nd">@interface</span> <span 
class="nc">Random</span> <span class="o">{}</span>
-
 </code></pre></div></div>
 
-<div class="language-java highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code>
-<span class="kn">package</span> <span 
class="nn">org.apache.struts2.example.cdi</span><span class="o">;</span>
+<div class="language-java highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="kn">package</span> <span 
class="nn">org.apache.struts2.example.cdi</span><span class="o">;</span>
 
 <span class="kn">import</span> <span 
class="nn">javax.inject.Qualifier</span><span class="o">;</span>
 <span class="kn">import</span> <span 
class="nn">java.lang.annotation.Documented</span><span class="o">;</span>
@@ -452,13 +446,11 @@ Add a JSP view similar to this:</p>
 <span class="nd">@Documented</span>
 <span class="nd">@Qualifier</span>
 <span class="kd">public</span> <span class="nd">@interface</span> <span 
class="nc">MaxNumber</span> <span class="o">{}</span>
-
 </code></pre></div></div>
 
 <p>Now on to the actual business beans, the Game and the Generator bean:</p>
 
-<div class="language-java highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code>
-<span class="kn">package</span> <span 
class="nn">org.apache.struts2.example.cdi</span><span class="o">;</span>
+<div class="language-java highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="kn">package</span> <span 
class="nn">org.apache.struts2.example.cdi</span><span class="o">;</span>
 
 <span class="kn">import</span> <span 
class="nn">javax.annotation.PostConstruct</span><span class="o">;</span>
 <span class="kn">import</span> <span 
class="nn">javax.enterprise.context.SessionScoped</span><span class="o">;</span>
@@ -540,7 +532,6 @@ Add a JSP view similar to this:</p>
     <span class="o">}</span>
 
 <span class="o">}</span>
-
 </code></pre></div></div>
 
 <div class="language-java highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code>
@@ -569,10 +560,8 @@ Add a JSP view similar to this:</p>
       <span class="k">return</span> <span class="n">maxNumber</span><span 
class="o">;</span>
    <span class="o">}</span>
 
-<span class="o">}</span> 
-
+<span class="o">}</span>
 </code></pre></div></div>
-
 <p>If you understand that code at a glance, you are either already an CDI 
expert or profit from the readable, natural
 language oriented way the CDI stack works. If neither of this is the case, now 
it’s time to check the CDI and Weld 
 documentation. Remember, this is a trivial example - there is much more to 
know about CDI.</p>
diff --git a/content/plugins/codebehind/index.html 
b/content/plugins/codebehind/index.html
index d145e42e1..df7dcb0f8 100644
--- a/content/plugins/codebehind/index.html
+++ b/content/plugins/codebehind/index.html
@@ -131,7 +131,18 @@
     
     <a href="../" title="back to Plugins"><< back to Plugins</a>
     
-    <h1 id="codebehind-plugin">Codebehind Plugin</h1>
+    <h1 class="no_toc" id="codebehind-plugin">Codebehind Plugin</h1>
+
+<ul id="markdown-toc">
+  <li><a href="#features" id="markdown-toc-features">Features</a></li>
+  <li><a href="#usage" id="markdown-toc-usage">Usage</a>    <ul>
+      <li><a href="#default-mappings" 
id="markdown-toc-default-mappings">Default Mappings</a></li>
+      <li><a href="#default-results" id="markdown-toc-default-results">Default 
Results</a></li>
+      <li><a href="#settings" id="markdown-toc-settings">Settings</a></li>
+      <li><a href="#installation" 
id="markdown-toc-installation">Installation</a></li>
+    </ul>
+  </li>
+</ul>
 
 <blockquote>
   <p>Deprecated Plugin</p>
diff --git a/content/plugins/config-browser/index.html 
b/content/plugins/config-browser/index.html
index 3d52113e9..0e2b37cbe 100644
--- a/content/plugins/config-browser/index.html
+++ b/content/plugins/config-browser/index.html
@@ -129,9 +129,20 @@
   <section class="col-md-12">
     <a class="edit-on-gh" 
href="https://github.com/apache/struts-site/edit/master/source/plugins/config-browser/index.md";
 title="Edit this page on GitHub">Edit on GitHub</a>
     
-    <a href="../" title="back to Plugins"><< back to Plugins</a>
+    <a href="index.html" title="back to Plugins"><< back to Plugins</a>
     
-    <h1 id="config-browser-plugin">Config Browser Plugin</h1>
+    <h1 class="no_toc" id="config-browser-plugin">Config Browser Plugin</h1>
+
+<ul id="markdown-toc">
+  <li><a href="#description" id="markdown-toc-description">Description</a></li>
+  <li><a href="#features" id="markdown-toc-features">Features</a></li>
+  <li><a href="#usage" id="markdown-toc-usage">Usage</a></li>
+  <li><a href="#example" id="markdown-toc-example">Example</a></li>
+  <li><a href="#settings" id="markdown-toc-settings">Settings</a></li>
+  <li><a href="#installation" 
id="markdown-toc-installation">Installation</a></li>
+</ul>
+
+<h2 id="description">Description</h2>
 
 <p>The Config Browser Plugin is a simple tool to help view an application’s 
configuration at runtime.</p>
 
@@ -140,31 +151,28 @@
 <h2 id="features">Features</h2>
 
 <ul>
-  <li>
-    <p>Browsable view of loaded configuration</p>
-  </li>
-  <li>
-    <p>Shows all accessible action URLs</p>
-  </li>
+  <li>Browsable view of loaded configuration</li>
+  <li>Shows all accessible action URLs</li>
 </ul>
 
 <h2 id="usage">Usage</h2>
 
-<p>To use the plugin, simply copy the jar into your application.  Once 
installed, you can access the tool by opening to the action named 
<em>index</em>  in the <em>config-browser</em>  namespace.</p>
+<p>To use the plugin, simply copy the jar into your application.  Once 
installed, you can access the tool by opening 
+to the action named <em>index</em>  in the <em>config-browser</em>  
namespace.</p>
 
 <blockquote>
   <p>In most cases (if you are using the default <em>ActionMapper</em> ), the 
URL is something like http://localhost:8080/starter/config-browser/index.action 
or http://localhost:8080/starter/config-browser/index.</p>
 </blockquote>
 
-<h3 id="example">Example</h3>
+<h2 id="example">Example</h2>
 
 <p><img src="../attachments/att30966155_config-browser-example.png" 
alt="config-browser-example.png" /></p>
 
-<h3 id="settings">Settings</h3>
+<h2 id="settings">Settings</h2>
 
 <p>This plugin provides no customizable settings.</p>
 
-<h3 id="installation">Installation</h3>
+<h2 id="installation">Installation</h2>
 
 <p>This plugin can be installed by copying the plugin jar into your 
application’s <code class="language-plaintext 
highlighter-rouge">/WEB-INF/lib</code> directory.  No other files need to be 
copied or created.</p>
 
diff --git a/content/plugins/convention/index.html 
b/content/plugins/convention/index.html
index 2580bf0a2..5a16d8e86 100644
--- a/content/plugins/convention/index.html
+++ b/content/plugins/convention/index.html
@@ -129,7 +129,7 @@
   <section class="col-md-12">
     <a class="edit-on-gh" 
href="https://github.com/apache/struts-site/edit/master/source/plugins/convention/index.md";
 title="Edit this page on GitHub">Edit on GitHub</a>
     
-    <a href="../" title="back to Plugins"><< back to Plugins</a>
+    <a href="index.html" title="back to Plugins"><< back to Plugins</a>
     
     <h1 class="no_toc" id="convention-plugin">Convention Plugin</h1>
 
diff --git a/content/plugins/dwr/index.html b/content/plugins/dwr/index.html
index 4c0fbc8c3..b4eddbd12 100644
--- a/content/plugins/dwr/index.html
+++ b/content/plugins/dwr/index.html
@@ -129,15 +129,23 @@
   <section class="col-md-12">
     <a class="edit-on-gh" 
href="https://github.com/apache/struts-site/edit/master/source/plugins/dwr/index.md";
 title="Edit this page on GitHub">Edit on GitHub</a>
     
-    <a href="../" title="back to Plugins"><< back to Plugins</a>
+    <a href="index.html" title="back to Plugins"><< back to Plugins</a>
     
-    <h1 id="dwr-plugin">DWR Plugin</h1>
-
-<p>The DWR plugin provides integration with the Ajax framework <a 
href="http://getahead.org/dwr";>Direct Web Remoting</a></p>
+    <h1 class="no_toc" id="dwr-plugin">DWR Plugin</h1>
+
+<ul id="markdown-toc">
+  <li><a href="#description" id="markdown-toc-description">Description</a></li>
+  <li><a href="#features" id="markdown-toc-features">Features</a></li>
+  <li><a href="#usage" id="markdown-toc-usage">Usage</a></li>
+  <li><a href="#settings" id="markdown-toc-settings">Settings</a></li>
+  <li><a href="#installation" 
id="markdown-toc-installation">Installation</a></li>
+</ul>
 
-<p>This plugin works by allowing DWR to execute a Struts 2 action and return 
any validation errors.</p>
+<h2 id="description">Description</h2>
 
-<p>This plugin is only available with Struts 2.1.1 or later.</p>
+<p>The DWR plugin provides integration with the Ajax framework <a 
href="http://getahead.org/dwr";>Direct Web Remoting</a>
+This plugin works by allowing DWR to execute a Struts 2 action and return any 
validation errors.
+This plugin is only available with Struts 2.1.1 or later.</p>
 
 <h2 id="features">Features</h2>
 
@@ -149,8 +157,7 @@
 
 <p>To expose Struts 2 validations via DWR, add this to your DWR 
configuration:</p>
 
-<div class="language-xml highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code>
- <span class="nt">&lt;dwr&gt;</span>
+<div class="language-xml highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code> <span class="nt">&lt;dwr&gt;</span>
     <span class="nt">&lt;allow&gt;</span>
       <span class="nt">&lt;create</span> <span class="na">creator=</span><span 
class="s">"new"</span> <span class="na">javascript=</span><span 
class="s">"validator"</span> <span class="na">class=</span><span 
class="s">"org.apache.struts2.validators.DWRValidator"</span><span 
class="nt">/&gt;</span>
       <span class="nt">&lt;convert</span> <span 
class="na">converter=</span><span class="s">"bean"</span> <span 
class="na">match=</span><span 
class="s">"com.opensymphony.xwork2.ValidationAwareSupport"</span><span 
class="nt">/&gt;</span>
diff --git a/content/plugins/embedded-jsp/index.html 
b/content/plugins/embedded-jsp/index.html
index 356f6dd24..4fc2b7a4d 100644
--- a/content/plugins/embedded-jsp/index.html
+++ b/content/plugins/embedded-jsp/index.html
@@ -129,9 +129,22 @@
   <section class="col-md-12">
     <a class="edit-on-gh" 
href="https://github.com/apache/struts-site/edit/master/source/plugins/embedded-jsp/index.md";
 title="Edit this page on GitHub">Edit on GitHub</a>
     
-    <a href="../" title="back to Plugins"><< back to Plugins</a>
+    <a href="index.html" title="back to Plugins"><< back to Plugins</a>
     
-    <h1 id="embedded-jsp-plugin">Embedded JSP Plugin</h1>
+    <h1 class="no_toc" id="embedded-jsp-plugin">Embedded JSP Plugin</h1>
+
+<ul id="markdown-toc">
+  <li><a href="#introduction" id="markdown-toc-introduction">Introduction</a>  
  <ul>
+      <li><a href="#waitwhat" id="markdown-toc-waitwhat">Wait…what?</a></li>
+      <li><a href="#about-includes" id="markdown-toc-about-includes">About 
includes</a></li>
+    </ul>
+  </li>
+  <li><a href="#requirements" id="markdown-toc-requirements">Requirements</a>  
  <ul>
+      <li><a href="#tomcat" id="markdown-toc-tomcat">Tomcat</a></li>
+      <li><a href="#jetty" id="markdown-toc-jetty">Jetty</a></li>
+    </ul>
+  </li>
+</ul>
 
 <p>The Embedded JSP plugin allows you to use JSPs from the classpath (from jar 
files).</p>
 
diff --git a/content/plugins/index.html b/content/plugins/index.html
index 1c5b6723d..3d4a0fc46 100644
--- a/content/plugins/index.html
+++ b/content/plugins/index.html
@@ -151,6 +151,11 @@ to share with others. Several plugins are bundled with the 
framework, and others
     </tr>
   </thead>
   <tbody>
+    <tr>
+      <td><a href="async">Async Plugin</a></td>
+      <td>6.0.0+</td>
+      <td> </td>
+    </tr>
     <tr>
       <td><a href="bean-validation">Bean Validation Plugin</a></td>
       <td>2.5+</td>
diff --git a/content/plugins/jasperreports/index.html 
b/content/plugins/jasperreports/index.html
index 86d0dd449..03f63dfff 100644
--- a/content/plugins/jasperreports/index.html
+++ b/content/plugins/jasperreports/index.html
@@ -129,94 +129,78 @@
   <section class="col-md-12">
     <a class="edit-on-gh" 
href="https://github.com/apache/struts-site/edit/master/source/plugins/jasperreports/index.md";
 title="Edit this page on GitHub">Edit on GitHub</a>
     
-    <a href="../" title="back to Plugins"><< back to Plugins</a>
+    <a href="index.html" title="back to Plugins"><< back to Plugins</a>
     
-    <h1 id="jasperreports-plugin">JasperReports Plugin</h1>
+    <h1 class="no_toc" id="jasperreports-plugin">JasperReports Plugin</h1>
+
+<ul id="markdown-toc">
+  <li><a href="#description" id="markdown-toc-description">Description</a></li>
+  <li><a href="#features" id="markdown-toc-features">Features</a></li>
+  <li><a href="#usage" id="markdown-toc-usage">Usage</a>    <ul>
+      <li><a href="#examples" id="markdown-toc-examples">Examples</a></li>
+      <li><a href="#settings" id="markdown-toc-settings">Settings</a></li>
+      <li><a href="#installation" 
id="markdown-toc-installation">Installation</a></li>
+    </ul>
+  </li>
+</ul>
 
-<p><a 
href="http://jasperforge.org/sf/projects/jasperreports";>JasperReports</a> is a 
powerful open source Java (LGPL) reporting tool that has the ability to deliver 
rich content onto the screen, to the printer or into PDF, HTML, XLS, CSV and 
XML files.</p>
+<h2 id="description">Description</h2>
+<p><a 
href="http://jasperforge.org/sf/projects/jasperreports";>JasperReports</a> is a 
powerful open source Java (LGPL) reporting
+tool that has the ability to deliver rich content onto the screen, to the 
printer or into PDF, HTML, XLS, CSV and XML files.</p>
 
 <p>The JasperReports plugin enables Actions to create high-quality reports as 
results.</p>
 
 <h2 id="features">Features</h2>
 
 <ul>
-  <li>Allows Actions to be rendered through JasperReports</li>
+  <li>Allows actions to be rendered through JasperReports</li>
 </ul>
 
 <h2 id="usage">Usage</h2>
 
-<p>To use this plugin, have your packages that contain the target actions 
extend the provided <code class="language-plaintext 
highlighter-rouge">jasperreports-default</code> package, which contains the 
<code class="language-plaintext highlighter-rouge">jasper</code> result type.  
Then, simply use the result type in the desired actions.  The result takes the 
following parameters:</p>
-
-<p> <p>
- Generates a JasperReports report using the specified format or PDF if no
- format is specified.
- </p>
-</p>
-
-<p>
- <ul>
-
- <li><b>location (default)</b> - the location where the compiled jasper report
- definition is (foo.jasper), relative from current URL.</li>
- <li><b>dataSource (required)</b> - the EL expression used to retrieve the
- datasource from the value stack (usually a List).</li>
- <li><b>parse</b> - true by default. If set to false, the location param will
- not be parsed for EL expressions.</li>
- <li><b>format</b> - the format in which the report should be generated. Valid
- values can be found in {@link JasperReportConstants}. If no format is
- specified, PDF will be used.</li>
- <li><b>contentDisposition</b> - disposition (defaults to "inline", values are
- typically <i>filename="document.pdf"</i>).</li>
- <li><b>documentName</b> - name of the document (will generate the http header
- <code>Content-disposition = X; filename=X.[format]</code>).</li>
- <li><b>delimiter</b> - the delimiter used when generating CSV reports. By
- default, the character used is ",".</li>
- <li><b>imageServletUrl</b> - name of the url that, when prefixed with the
- context page, can return report images.</li>
- <li>
- <b>reportParameters</b> - (2.1.2+) OGNL expression used to retrieve a map of
- report parameters from the value stack. The parameters may be accessed
- in the report via the usual JR mechanism and might include data not
- part of the dataSource, such as the user name of the report creator, etc.
- </li>
- <li>
- <b>exportParameters</b> - (2.1.2+) OGNL expression used to retrieve a map of
- JR exporter parameters from the value stack. The export parameters are
- used to customize the JR export. For example, a PDF export might enable
- encryption and set the user password to a string known to the report creator.
- </li>
- <li>
- <b>connection</b> - (2.1.7+) JDBC Connection which can be passed to the
- report instead of dataSource
- </li>
- <li><b>wrapField</b> - (2.3.18+) defines if fields should warp with 
ValueStackDataSource
- see https://issues.apache.org/jira/browse/WW-3698 for more details
- </li>
- </ul>
- <p>
- This result follows the same rules from {@link StrutsResultSupport}.
- Specifically, all parameters will be parsed if the "parse" parameter
- is not set to false.
- </p>
-</p>
+<p>To use this plugin, have your packages that contain the target actions 
extend the provided <code class="language-plaintext 
highlighter-rouge">jasperreports-default</code> 
+package, which contains the <code class="language-plaintext 
highlighter-rouge">jasper</code> result type.  Then, simply use the result type 
in the desired actions.<br />
+The result takes the following parameters:</p>
 
-<h3 id="examples">Examples</h3>
+<ul>
+  <li>location (default) - the location where the compiled jasper report 
definition is (foo.jasper), relative from current URL</li>
+  <li>dataSource (required) - the EL expression used to retrieve the 
datasource from the value stack (usually a List)</li>
+  <li>parse - <code class="language-plaintext highlighter-rouge">true</code> 
by default, if set to false, the location param will not be parsed for EL 
expressions</li>
+  <li>format - the format in which the report should be generated. Valid  
values can be found in <code class="language-plaintext 
highlighter-rouge">JasperReportConstants</code>. 
+If no format is specified, PDF will be used</li>
+  <li>contentDisposition - disposition (defaults to “inline”, values are 
typically <code class="language-plaintext 
highlighter-rouge">filename="document.pdf"</code>)</li>
+  <li>documentName - name of the document (will generate the http header <code 
class="language-plaintext highlighter-rouge">Content-disposition = X; 
filename=X.[format]</code>)</li>
+  <li>delimiter - the delimiter used when generating CSV reports. By default, 
the character used is “,”</li>
+  <li>imageServletUrl - name of the url that, when prefixed with the context 
page, can return report images</li>
+  <li>reportParameters - (since 2.1.2+) OGNL expression used to retrieve a map 
of report parameters from the value stack. 
+The parameters may be accessed in the report via the usual JR mechanism and 
might include data not part of the 
+dataSource, such as the user name of the report creator, etc.</li>
+  <li>exportParameters - (since 2.1.2+) OGNL expression used to retrieve a map 
of JR exporter parameters from the value stack.
+The export parameters are used to customize the JR export. For example, a PDF 
export might enable encryption 
+and set the user password to a string known to the report creator.</li>
+  <li>connection - (since 2.1.7+) JDBC Connection which can be passed to the 
report instead of dataSource</li>
+  <li>wrapField - (since 2.3.18+) defines if fields should warp with 
ValueStackDataSource see
+<a href="https://issues.apache.org/jira/browse/WW-3698";>WW-3698</a> for more 
details</li>
+</ul>
 
-<div class="language-xml highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code> <span class="nt">&lt;result</span> <span 
class="na">name=</span><span class="s">"success"</span> <span 
class="na">type=</span><span class="s">"jasper"</span><span 
class="nt">&gt;</span>
-   <span class="nt">&lt;param</span> <span class="na">name=</span><span 
class="s">"location"</span><span class="nt">&gt;</span>foo.jasper<span 
class="nt">&lt;/param&gt;</span>
-   <span class="nt">&lt;param</span> <span class="na">name=</span><span 
class="s">"dataSource"</span><span class="nt">&gt;</span>mySource<span 
class="nt">&lt;/param&gt;</span>
-   <span class="nt">&lt;param</span> <span class="na">name=</span><span 
class="s">"format"</span><span class="nt">&gt;</span>CSV<span 
class="nt">&lt;/param&gt;</span>
- <span class="nt">&lt;/result&gt;</span>
+<p>This result follows the same rules from {@link StrutsResultSupport}. 
Specifically, all parameters will be parsed 
+if the “parse” parameter is not set to false.</p>
 
+<h3 id="examples">Examples</h3>
+
+<div class="language-xml highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="nt">&lt;result</span> <span 
class="na">name=</span><span class="s">"success"</span> <span 
class="na">type=</span><span class="s">"jasper"</span><span 
class="nt">&gt;</span>
+    <span class="nt">&lt;param</span> <span class="na">name=</span><span 
class="s">"location"</span><span class="nt">&gt;</span>foo.jasper<span 
class="nt">&lt;/param&gt;</span>
+    <span class="nt">&lt;param</span> <span class="na">name=</span><span 
class="s">"dataSource"</span><span class="nt">&gt;</span>mySource<span 
class="nt">&lt;/param&gt;</span>
+    <span class="nt">&lt;param</span> <span class="na">name=</span><span 
class="s">"format"</span><span class="nt">&gt;</span>CSV<span 
class="nt">&lt;/param&gt;</span>
+<span class="nt">&lt;/result&gt;</span>
 </code></pre></div></div>
 
 <p>or for pdf:</p>
 
-<div class="language-xml highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code> <span class="nt">&lt;result</span> <span 
class="na">name=</span><span class="s">"success"</span> <span 
class="na">type=</span><span class="s">"jasper"</span><span 
class="nt">&gt;</span>
-   <span class="nt">&lt;param</span> <span class="na">name=</span><span 
class="s">"location"</span><span class="nt">&gt;</span>foo.jasper<span 
class="nt">&lt;/param&gt;</span>
-   <span class="nt">&lt;param</span> <span class="na">name=</span><span 
class="s">"dataSource"</span><span class="nt">&gt;</span>mySource<span 
class="nt">&lt;/param&gt;</span>
- <span class="nt">&lt;/result&gt;</span>
-
+<div class="language-xml highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="nt">&lt;result</span> <span 
class="na">name=</span><span class="s">"success"</span> <span 
class="na">type=</span><span class="s">"jasper"</span><span 
class="nt">&gt;</span>
+    <span class="nt">&lt;param</span> <span class="na">name=</span><span 
class="s">"location"</span><span class="nt">&gt;</span>foo.jasper<span 
class="nt">&lt;/param&gt;</span>
+    <span class="nt">&lt;param</span> <span class="na">name=</span><span 
class="s">"dataSource"</span><span class="nt">&gt;</span>mySource<span 
class="nt">&lt;/param&gt;</span>
+<span class="nt">&lt;/result&gt;</span>
 </code></pre></div></div>
 
 <h3 id="settings">Settings</h3>
@@ -225,9 +209,8 @@
 
 <h3 id="installation">Installation</h3>
 
-<p>This plugin can be installed by copying the plugin jar into your 
application’s <code class="language-plaintext 
highlighter-rouge">/WEB-INF/lib</code> directory.  No other files need to be 
copied or created.</p>
-
-<hr />
+<p>This plugin can be installed by copying the plugin jar into your 
application’s <code class="language-plaintext 
highlighter-rouge">/WEB-INF/lib</code> directory.<br />
+No other files need to be copied or created.</p>
 
 <blockquote>
   <p>See also <a 
href="http://www.vitarara.org/cms/node/131http://www.vitarara.org/cms/node/131";>Compiling
 JasperReports JRXML Files with Maven</a> (Mark Menard)</p>
diff --git a/content/plugins/java-8-support/index.html 
b/content/plugins/java-8-support/index.html
index 6c53dc3c8..7f535e848 100644
--- a/content/plugins/java-8-support/index.html
+++ b/content/plugins/java-8-support/index.html
@@ -129,17 +129,21 @@
   <section class="col-md-12">
     <a class="edit-on-gh" 
href="https://github.com/apache/struts-site/edit/master/source/plugins/java-8-support/index.md";
 title="Edit this page on GitHub">Edit on GitHub</a>
     
-    <a href="../" title="back to Plugins"><< back to Plugins</a>
+    <a href="index.html" title="back to Plugins"><< back to Plugins</a>
     
-    <h1 id="java-8-support-plugin">Java 8 Support Plugin</h1>
+    <h1 class="no_toc" id="java-8-support-plugin">Java 8 Support Plugin</h1>
 
-<p>This plugin was dropped in Struts 2.5.5 as Struts Core is using ASM5 now 
which supports Java8.</p>
+<ul id="markdown-toc">
+  <li><a href="#usage" id="markdown-toc-usage">Usage</a></li>
+  <li><a href="#supported-java-8-features" 
id="markdown-toc-supported-java-8-features">Supported Java 8 features</a></li>
+</ul>
 
-<p>Adds support for Java 8 - to allow use the latest features of the language 
with Struts actions.</p>
+<p>This plugin was dropped in Struts 2.5.5 as Struts Core is using ASM5 now 
which supports Java8.
+Adds support for Java 8 - to allow use the latest features of the language 
with Struts actions.</p>
 
 <h2 id="usage">Usage</h2>
 
-<p>You must define it as a dependency in <code class="language-plaintext 
highlighter-rouge">pom.xml</code> and exclude the old version of ASM used with 
<code class="language-plaintext highlighter-rouge">xwork-core</code>, see a 
code snippet below:</p>
+<p>You must define it as a dependency in <code class="language-plaintext 
highlighter-rouge">pom.xml</code> and exclude the old version of ASM used with 
<code class="language-plaintext highlighter-rouge">xwork-core</code>, see a 
code snippet below:</p>
 
 <div class="language-xml highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="nt">&lt;dependency&gt;</span>
     <span class="nt">&lt;groupId&gt;</span>org.apache.struts.xwork<span 
class="nt">&lt;/groupId&gt;</span>
@@ -157,12 +161,12 @@
 <span class="nt">&lt;/dependency&gt;</span>
 </code></pre></div></div>
 
-<p>If you don’t use Maven to manage the dependencies, please be sure to 
replace <code class="language-plaintext highlighter-rouge">asm.jar</code> and 
<code class="language-plaintext highlighter-rouge">asm-commons.jar</code> with 
appropriated ASM 5 versions.</p>
+<p>If you don’t use Maven to manage the dependencies, please be sure to 
replace <code class="language-plaintext highlighter-rouge">asm.jar</code> and 
<code class="language-plaintext highlighter-rouge">asm-commons.jar</code> with 
appropriated ASM 5 versions.</p>
 
 <h2 id="supported-java-8-features">Supported Java 8 features</h2>
 
 <ul>
-  <li>Lambda Expressions in actions when using them with the Convention 
plugin</li>
+  <li>Lambda Expressions in actions when using them with the Convention 
plugin</li>
 </ul>
 
   </section>
diff --git a/content/plugins/javatemplates/index.html 
b/content/plugins/javatemplates/index.html
index e49fb5a28..52cff8f6c 100644
--- a/content/plugins/javatemplates/index.html
+++ b/content/plugins/javatemplates/index.html
@@ -129,9 +129,15 @@
   <section class="col-md-12">
     <a class="edit-on-gh" 
href="https://github.com/apache/struts-site/edit/master/source/plugins/javatemplates/index.md";
 title="Edit this page on GitHub">Edit on GitHub</a>
     
-    <a href="../" title="back to Plugins"><< back to Plugins</a>
+    <a href="index.html" title="back to Plugins"><< back to Plugins</a>
     
-    <h1 id="javatemplates-plugin">Javatemplates Plugin</h1>
+    <h1 class="no_toc" id="javatemplates-plugin">Javatemplates Plugin</h1>
+
+<ul id="markdown-toc">
+  <li><a href="#installation" 
id="markdown-toc-installation">Installation</a></li>
+  <li><a href="#supported-tags" id="markdown-toc-supported-tags">Supported 
tags</a></li>
+  <li><a href="#performance-benchmark" 
id="markdown-toc-performance-benchmark">Performance benchmark</a></li>
+</ul>
 
 <p>This plugin provides a faster Java implementation of tags in the “simple” 
theme.</p>
 
@@ -153,25 +159,25 @@
 <h2 id="supported-tags">Supported tags</h2>
 
 <ul>
-  <li><em>a</em></li>
-  <li><em>actionerror</em></li>
-  <li><em>actionmessage</em></li>
-  <li><em>checkbox</em></li>
-  <li><em>datetextfield</em></li>
-  <li><em>div</em></li>
-  <li><em>fielderror</em></li>
-  <li><em>file</em></li>
-  <li><em>form</em></li>
-  <li><em>head</em></li>
-  <li><em>hidden</em></li>
-  <li><em>label</em></li>
-  <li><em>password</em></li>
-  <li><em>select</em></li>
-  <li><em>reset</em></li>
-  <li><em>submit</em></li>
-  <li><em>textfield</em></li>
-  <li><em>textarea</em></li>
-  <li><em>token</em></li>
+  <li><code class="language-plaintext highlighter-rouge">a</code></li>
+  <li><code class="language-plaintext 
highlighter-rouge">actionerror</code></li>
+  <li><code class="language-plaintext 
highlighter-rouge">actionmessage</code></li>
+  <li><code class="language-plaintext highlighter-rouge">checkbox</code></li>
+  <li><code class="language-plaintext 
highlighter-rouge">datetextfield</code></li>
+  <li><code class="language-plaintext highlighter-rouge">div</code></li>
+  <li><code class="language-plaintext highlighter-rouge">fielderror</code></li>
+  <li><code class="language-plaintext highlighter-rouge">file</code></li>
+  <li><code class="language-plaintext highlighter-rouge">form</code></li>
+  <li><code class="language-plaintext highlighter-rouge">head</code></li>
+  <li><code class="language-plaintext highlighter-rouge">hidden</code></li>
+  <li><code class="language-plaintext highlighter-rouge">label</code></li>
+  <li><code class="language-plaintext highlighter-rouge">password</code></li>
+  <li><code class="language-plaintext highlighter-rouge">select</code></li>
+  <li><code class="language-plaintext highlighter-rouge">reset</code></li>
+  <li><code class="language-plaintext highlighter-rouge">submit</code></li>
+  <li><code class="language-plaintext highlighter-rouge">textfield</code></li>
+  <li><code class="language-plaintext highlighter-rouge">textarea</code></li>
+  <li><code class="language-plaintext highlighter-rouge">token</code></li>
 </ul>
 
 <h2 id="performance-benchmark">Performance benchmark</h2>
diff --git a/content/plugins/jfreechart/index.html 
b/content/plugins/jfreechart/index.html
index 6f924bc10..09b707ebf 100644
--- a/content/plugins/jfreechart/index.html
+++ b/content/plugins/jfreechart/index.html
@@ -129,9 +129,25 @@
   <section class="col-md-12">
     <a class="edit-on-gh" 
href="https://github.com/apache/struts-site/edit/master/source/plugins/jfreechart/index.md";
 title="Edit this page on GitHub">Edit on GitHub</a>
     
-    <a href="../" title="back to Plugins"><< back to Plugins</a>
+    <a href="index.html" title="back to Plugins"><< back to Plugins</a>
     
-    <h1 id="jfreechart-plugin">JFreeChart Plugin</h1>
+    <h1 class="no_toc" id="jfreechart-plugin">JFreeChart Plugin</h1>
+
+<ul id="markdown-toc">
+  <li><a href="#description" id="markdown-toc-description">Description</a></li>
+  <li><a href="#features" id="markdown-toc-features">Features</a>    <ul>
+      <li><a href="#future-work" id="markdown-toc-future-work">Future 
Work</a></li>
+    </ul>
+  </li>
+  <li><a href="#usage" id="markdown-toc-usage">Usage</a>    <ul>
+      <li><a href="#example" id="markdown-toc-example">Example</a></li>
+      <li><a href="#settings" id="markdown-toc-settings">Settings</a></li>
+      <li><a href="#installation" 
id="markdown-toc-installation">Installation</a></li>
+    </ul>
+  </li>
+</ul>
+
+<h2 id="description">Description</h2>
 
 <p><a href="http://www.jfree.org/jfreechart/";>JFreeChart</a> is a free 100% 
Java (LGPL) chart library that makes it easy for 
 developers to display professional quality charts in their applications.</p>
diff --git a/content/plugins/jsf/index.html b/content/plugins/jsf/index.html
index 0062095e0..ab4dc60c4 100644
--- a/content/plugins/jsf/index.html
+++ b/content/plugins/jsf/index.html
@@ -129,9 +129,23 @@
   <section class="col-md-12">
     <a class="edit-on-gh" 
href="https://github.com/apache/struts-site/edit/master/source/plugins/jsf/index.md";
 title="Edit this page on GitHub">Edit on GitHub</a>
     
-    <a href="../" title="back to Plugins"><< back to Plugins</a>
+    <a href="index.html" title="back to Plugins"><< back to Plugins</a>
     
-    <h1 id="jsf-plugin">JSF Plugin</h1>
+    <h1 class="no_toc" id="jsf-plugin">JSF Plugin</h1>
+
+<ul id="markdown-toc">
+  <li><a href="#description" id="markdown-toc-description">Description</a></li>
+  <li><a href="#features" id="markdown-toc-features">Features</a></li>
+  <li><a href="#usage" id="markdown-toc-usage">Usage</a>    <ul>
+      <li><a href="#example" id="markdown-toc-example">Example</a></li>
+      <li><a href="#settings" id="markdown-toc-settings">Settings</a></li>
+      <li><a href="#installation" 
id="markdown-toc-installation">Installation</a></li>
+    </ul>
+  </li>
+  <li><a href="#resources" id="markdown-toc-resources">Resources</a></li>
+</ul>
+
+<h2 id="description">Description</h2>
 
 <p><a href="http://java.sun.com/j2ee/javaserverfaces";>JavaServer Faces</a> 
technology simplifies building user interfaces for JavaServer applications. 
Developers of various skill levels can quickly build web applications by: 
assembling reusable UI components in a page; connecting these components to an 
application data source; and wiring client-generated events to server-side 
event handlers.</p>
 
diff --git a/content/plugins/json/index.html b/content/plugins/json/index.html
index 34f2eb8d7..8b7fa3274 100644
--- a/content/plugins/json/index.html
+++ b/content/plugins/json/index.html
@@ -129,7 +129,7 @@
   <section class="col-md-12">
     <a class="edit-on-gh" 
href="https://github.com/apache/struts-site/edit/master/source/plugins/json/index.md";
 title="Edit this page on GitHub">Edit on GitHub</a>
     
-    <a href="../" title="back to Plugins"><< back to Plugins</a>
+    <a href="index.html" title="back to Plugins"><< back to Plugins</a>
     
     <h1 class="no_toc" id="json-plugin">JSON Plugin</h1>
 
diff --git a/content/plugins/junit/index.html b/content/plugins/junit/index.html
index 092d2f541..678526ba3 100644
--- a/content/plugins/junit/index.html
+++ b/content/plugins/junit/index.html
@@ -129,7 +129,7 @@
   <section class="col-md-12">
     <a class="edit-on-gh" 
href="https://github.com/apache/struts-site/edit/master/source/plugins/junit/index.md";
 title="Edit this page on GitHub">Edit on GitHub</a>
     
-    <a href="../" title="back to Plugins"><< back to Plugins</a>
+    <a href="index.html" title="back to Plugins"><< back to Plugins</a>
     
     <h1 class="no_toc" id="junit-plugin">JUnit plugin</h1>
 
diff --git a/content/plugins/osgi/index.html b/content/plugins/osgi/index.html
index 96a910dba..ae664306c 100644
--- a/content/plugins/osgi/index.html
+++ b/content/plugins/osgi/index.html
@@ -129,9 +129,27 @@
   <section class="col-md-12">
     <a class="edit-on-gh" 
href="https://github.com/apache/struts-site/edit/master/source/plugins/osgi/index.md";
 title="Edit this page on GitHub">Edit on GitHub</a>
     
-    <a href="../" title="back to Plugins"><< back to Plugins</a>
+    <a href="index.html" title="back to Plugins"><< back to Plugins</a>
     
-    <h1 id="osgi-plugin">OSGi Plugin</h1>
+    <h1 class="no_toc" id="osgi-plugin">OSGi Plugin</h1>
+
+<ul id="markdown-toc">
+  <li><a href="#overview" id="markdown-toc-overview">Overview</a></li>
+  <li><a href="#features" id="markdown-toc-features">Features</a></li>
+  <li><a href="#missing-features" id="markdown-toc-missing-features">Missing 
Features</a></li>
+  <li><a href="#about-run-levels" id="markdown-toc-about-run-levels">About Run 
levels</a></li>
+  <li><a href="#simple-usage" id="markdown-toc-simple-usage">Simple 
Usage</a></li>
+  <li><a href="#using-spring" id="markdown-toc-using-spring">Using 
Spring</a></li>
+  <li><a href="#using-velocity" id="markdown-toc-using-velocity">Using 
Velocity</a></li>
+  <li><a href="#using-the-convention-plugin" 
id="markdown-toc-using-the-convention-plugin">Using The Convention 
Plugin</a></li>
+  <li><a href="#the-osgi-interceptor" 
id="markdown-toc-the-osgi-interceptor">The OSGi interceptor</a></li>
+  <li><a href="#admin-bundle" id="markdown-toc-admin-bundle">Admin 
bundle</a></li>
+  <li><a href="#about-stoppingstarting-bundles" 
id="markdown-toc-about-stoppingstarting-bundles">About stopping/starting 
bundles</a></li>
+  <li><a href="#settings" id="markdown-toc-settings">Settings</a></li>
+  <li><a href="#building-bundles-with-maven" 
id="markdown-toc-building-bundles-with-maven">Building bundles with 
Maven</a></li>
+  <li><a href="#struts-osgi--spring-osgi-diagram" 
id="markdown-toc-struts-osgi--spring-osgi-diagram">Struts OSGi + Spring OSGi 
diagram</a></li>
+  <li><a href="#resources" id="markdown-toc-resources">Resources</a></li>
+</ul>
 
 <blockquote>
   <p>This plugin got marked as deprecated since Struts 2.6!</p>
diff --git a/content/plugins/oval/index.html b/content/plugins/oval/index.html
index 6a76460bc..c101b7c5d 100644
--- a/content/plugins/oval/index.html
+++ b/content/plugins/oval/index.html
@@ -129,9 +129,22 @@
   <section class="col-md-12">
     <a class="edit-on-gh" 
href="https://github.com/apache/struts-site/edit/master/source/plugins/oval/index.md";
 title="Edit this page on GitHub">Edit on GitHub</a>
     
-    <a href="../" title="back to Plugins"><< back to Plugins</a>
+    <a href="index.html" title="back to Plugins"><< back to Plugins</a>
     
-    <h1 id="oval-plugin">OVal Plugin</h1>
+    <h1 class="no_toc" id="oval-plugin">OVal Plugin</h1>
+
+<ul id="markdown-toc">
+  <li><a href="#overview" id="markdown-toc-overview">Overview</a></li>
+  <li><a href="#interceptors" 
id="markdown-toc-interceptors">Interceptors</a></li>
+  <li><a href="#annotations" id="markdown-toc-annotations">Annotations</a></li>
+  <li><a href="#xml-configuration" id="markdown-toc-xml-configuration">XML 
Configuration</a></li>
+  <li><a href="#profiles" id="markdown-toc-profiles">Profiles</a></li>
+  <li><a href="#internationalization-of-messages" 
id="markdown-toc-internationalization-of-messages">Internationalization of 
messages</a></li>
+  <li><a href="#the-oval-validation-interceptor" 
id="markdown-toc-the-oval-validation-interceptor">The OVal Validation 
Interceptor</a></li>
+  <li><a href="#installation" 
id="markdown-toc-installation">Installation</a></li>
+  <li><a href="#configuration-reference" 
id="markdown-toc-configuration-reference">Configuration reference</a></li>
+  <li><a href="#resources" id="markdown-toc-resources">Resources</a></li>
+</ul>
 
 <blockquote>
   <p>This plugin got marked as deprecated since Struts 2.6!</p>
diff --git a/content/plugins/plexus/index.html 
b/content/plugins/plexus/index.html
index 777f6e876..77ce7ea28 100644
--- a/content/plugins/plexus/index.html
+++ b/content/plugins/plexus/index.html
@@ -129,9 +129,19 @@
   <section class="col-md-12">
     <a class="edit-on-gh" 
href="https://github.com/apache/struts-site/edit/master/source/plugins/plexus/index.md";
 title="Edit this page on GitHub">Edit on GitHub</a>
     
-    <a href="../" title="back to Plugins"><< back to Plugins</a>
+    <a href="index.html" title="back to Plugins"><< back to Plugins</a>
     
-    <h1 id="plexus-plugin">Plexus Plugin</h1>
+    <h1 class="no_toc" id="plexus-plugin">Plexus Plugin</h1>
+
+<ul id="markdown-toc">
+  <li><a href="#features" id="markdown-toc-features">Features</a></li>
+  <li><a href="#usage" id="markdown-toc-usage">Usage</a>    <ul>
+      <li><a href="#example" id="markdown-toc-example">Example</a></li>
+      <li><a href="#settings" id="markdown-toc-settings">Settings</a></li>
+      <li><a href="#installation" 
id="markdown-toc-installation">Installation</a></li>
+    </ul>
+  </li>
+</ul>
 
 <blockquote>
   <p>This plugin got marked as deprecated since Struts 2.6!</p>
diff --git a/content/plugins/portlet-tiles/index.html 
b/content/plugins/portlet-tiles/index.html
index 43d7af4e1..b6a1d1a60 100644
--- a/content/plugins/portlet-tiles/index.html
+++ b/content/plugins/portlet-tiles/index.html
@@ -129,9 +129,15 @@
   <section class="col-md-12">
     <a class="edit-on-gh" 
href="https://github.com/apache/struts-site/edit/master/source/plugins/portlet-tiles/index.md";
 title="Edit this page on GitHub">Edit on GitHub</a>
     
-    <a href="../" title="back to Plugins"><< back to Plugins</a>
+    <a href="index.html" title="back to Plugins"><< back to Plugins</a>
     
-    <h1 id="portlet-tiles-plugin">Portlet Tiles Plugin</h1>
+    <h1 class="no_toc" id="portlet-tiles-plugin">Portlet Tiles Plugin</h1>
+
+<ul id="markdown-toc">
+  <li><a href="#features" id="markdown-toc-features">Features</a></li>
+  <li><a href="#usage" id="markdown-toc-usage">Usage</a></li>
+  <li><a href="#installation" 
id="markdown-toc-installation">Installation</a></li>
+</ul>
 
 <blockquote>
   <p>This plugin got marked as deprecated since Struts 2.6!</p>
diff --git a/content/plugins/portlet/index.html 
b/content/plugins/portlet/index.html
index 142d0cdf8..5bbc85a81 100644
--- a/content/plugins/portlet/index.html
+++ b/content/plugins/portlet/index.html
@@ -129,9 +129,26 @@
   <section class="col-md-12">
     <a class="edit-on-gh" 
href="https://github.com/apache/struts-site/edit/master/source/plugins/portlet/index.md";
 title="Edit this page on GitHub">Edit on GitHub</a>
     
-    <a href="../" title="back to Plugins"><< back to Plugins</a>
+    <a href="index.html" title="back to Plugins"><< back to Plugins</a>
     
-    <h1 id="portlet-plugin">Portlet Plugin</h1>
+    <h1 class="no_toc" id="portlet-plugin">Portlet Plugin</h1>
+
+<ul id="markdown-toc">
+  <li><a href="#documentation" 
id="markdown-toc-documentation">Documentation</a>    <ul>
+      <li><a href="#portlet-class" 
id="markdown-toc-portlet-class">portlet-class</a></li>
+      <li><a href="#portlet-init-parameters" 
id="markdown-toc-portlet-init-parameters">Portlet Init Parameters</a></li>
+      <li><a href="#webxml" id="markdown-toc-webxml">web.xml</a></li>
+      <li><a href="#portlet-phases" id="markdown-toc-portlet-phases">Portlet 
Phases</a></li>
+      <li><a href="#portlet-result-dispatching" 
id="markdown-toc-portlet-result-dispatching">Portlet Result Dispatching</a>     
   <ul>
+          <li><a href="#redirectaction" 
id="markdown-toc-redirectaction">redirectAction</a></li>
+        </ul>
+      </li>
+      <li><a href="#surl-and-sform-tags" 
id="markdown-toc-surl-and-sform-tags">s:url and s:form tags</a></li>
+      <li><a href="#security" id="markdown-toc-security">Security</a></li>
+      <li><a href="#other-resources" id="markdown-toc-other-resources">Other 
resources</a></li>
+    </ul>
+  </li>
+</ul>
 
 <blockquote>
   <p>This plugin got marked as deprecated since Struts 2.6!</p>
diff --git a/content/plugins/rest/index.html b/content/plugins/rest/index.html
index f4eaaada0..2db5f2739 100644
--- a/content/plugins/rest/index.html
+++ b/content/plugins/rest/index.html
@@ -129,7 +129,7 @@
   <section class="col-md-12">
     <a class="edit-on-gh" 
href="https://github.com/apache/struts-site/edit/master/source/plugins/rest/index.md";
 title="Edit this page on GitHub">Edit on GitHub</a>
     
-    <a href="../" title="back to Plugins"><< back to Plugins</a>
+    <a href="index.html" title="back to Plugins"><< back to Plugins</a>
     
     <h1 class="no_toc" id="rest-plugin">REST Plugin</h1>
 
diff --git a/content/plugins/sitegraph/index.html 
b/content/plugins/sitegraph/index.html
index 7c778bdef..a91d5b3de 100644
--- a/content/plugins/sitegraph/index.html
+++ b/content/plugins/sitegraph/index.html
@@ -129,19 +129,32 @@
   <section class="col-md-12">
     <a class="edit-on-gh" 
href="https://github.com/apache/struts-site/edit/master/source/plugins/sitegraph/index.md";
 title="Edit this page on GitHub">Edit on GitHub</a>
     
-    <a href="../" title="back to Plugins"><< back to Plugins</a>
+    <a href="index.html" title="back to Plugins"><< back to Plugins</a>
     
-    <h1 id="sitegraph-plugin">SiteGraph Plugin</h1>
+    <h1 class="no_toc" id="sitegraph-plugin">SiteGraph Plugin</h1>
+
+<ul id="markdown-toc">
+  <li><a href="#description" id="markdown-toc-description">Description</a></li>
+  <li><a href="#understanding-the-output" 
id="markdown-toc-understanding-the-output">Understanding the Output</a></li>
+  <li><a href="#requirements" 
id="markdown-toc-requirements">Requirements</a></li>
+  <li><a href="#features" id="markdown-toc-features">Features</a>    <ul>
+      <li><a href="#usage" id="markdown-toc-usage">Usage</a></li>
+      <li><a href="#automatic-execution" 
id="markdown-toc-automatic-execution">Automatic Execution</a></li>
+    </ul>
+  </li>
+  <li><a href="#settings" id="markdown-toc-settings">Settings</a></li>
+  <li><a href="#installation" 
id="markdown-toc-installation">Installation</a></li>
+</ul>
 
 <blockquote>
   <p>This plugin got marked as deprecated since Struts 2.5.11!</p>
 </blockquote>
 
-<p>The SiteGraph plugin generates graphical diagrams representing the flow of 
your web application.</p>
+<h2 id="description">Description</h2>
 
-<p>SiteGraph works by parsing your configuration files, Action classes, and 
view files (JSP, Velocity, and FreeMarker), and displaying a visual map.</p>
-
-<p>Additional information can be found in the JavaDocs:</p>
+<p>The SiteGraph plugin generates graphical diagrams representing the flow of 
your web application.
+SiteGraph works by parsing your configuration files, Action classes, and view 
files (JSP, Velocity, and FreeMarker), 
+and displaying a visual map. Additional information can be found in the 
JavaDocs:</p>
 
 <div class="language-text highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code> * &lt;p&gt;
  * SiteGraph is a tool that renders out GraphViz-generated images depicting 
your
@@ -149,76 +162,49 @@
  * and that the "dot" executable be in your command path. You can find GraphViz
  * at http://www.graphviz.org.
  * &lt;/p&gt;
-
 </code></pre></div></div>
 
-<p><strong>Understanding the Output</strong></p>
+<h2 id="understanding-the-output">Understanding the Output</h2>
 
 <p>There are several key things to notice when looking at the output from 
SiteGraph:</p>
 
 <ul>
-  <li>
-    <p>Boxes: those shaded red indicate an action; those shaded green indicate 
a view file (JSP, etc).</p>
-  </li>
-  <li>
-    <p>Links: arrows colored green imply that no new HTTP request is being 
made; black arrows indicate a new HTTP request.</p>
-  </li>
-  <li>
-    <p>Link labels: labels may sometimes contain additional useful 
information. For example, a label of <strong>href</strong> means that the link 
behavior is that of a hyper-text reference. The complete label behaviors are 
provided:</p>
-
+  <li>Boxes: those shaded red indicate an action; those shaded green indicate 
a view file (JSP, etc).</li>
+  <li>Links: arrows colored green imply that no new HTTP request is being 
made; black arrows indicate a new HTTP request.</li>
+  <li>Link labels: labels may sometimes contain additional useful information. 
For example, a label of <strong>href</strong> means that
+the link behavior is that of a hyper-text reference. The complete label 
behaviors are provided:
     <ul>
-      <li>
-        <p><strong>href</strong> - a view file references an action by name 
(typically ending with the extension “.action”)</p>
-      </li>
-      <li>
-        <p><strong>action</strong> - a view file makes a call to the 
<em>action</em>  tag</p>
-      </li>
-      <li>
-        <p><strong>form</strong> - a view file is linked to an action using 
the <em>form</em>  tag</p>
-      </li>
-      <li>
-        <p><strong>redirect</strong> - an action is redirecting to another 
view or action</p>
-      </li>
-      <li>
-        <p><strong>! notation</strong> - a link to an action overrides the 
method to invoke</p>
-      </li>
+      <li><strong>href</strong> - a view file references an action by name 
(typically ending with the extension “.action”)</li>
+      <li><strong>action</strong> - a view file makes a call to the 
<em>action</em>  tag</li>
+      <li><strong>form</strong> - a view file is linked to an action using the 
<em>form</em>  tag</li>
+      <li><strong>redirect</strong> - an action is redirecting to another view 
or action</li>
+      <li><strong>! notation</strong> - a link to an action overrides the 
method to invoke</li>
     </ul>
   </li>
 </ul>
 
-<p><strong>Requirements</strong></p>
+<h2 id="requirements">Requirements</h2>
 
 <p>SiteGraph requires that your view files be structured in a very specific 
way. Because it has to read these files, only certain styles are supported. The 
requirements are:</p>
 
 <ul>
-  <li>
-    <p>The JSP tags must use the “s” namespace.</p>
-
+  <li>The JSP tags must use the “s” namespace.
     <ul>
-      <li>
-        <p>In JSP: &lt;s:xxx/&gt;</p>
-      </li>
-      <li>
-        <p>In FreeMarker: &lt;@s.xxx/&gt;</p>
-      </li>
-      <li>
-        <p>In Velocity: N/A</p>
-      </li>
+      <li>In JSP: <code class="language-plaintext 
highlighter-rouge">&lt;s:xxx/&gt;</code></li>
+      <li>In FreeMarker: <code class="language-plaintext 
highlighter-rouge">&lt;@s.xxx/&gt;</code></li>
+      <li>In Velocity: N/A</li>
     </ul>
   </li>
-  <li>
-    <p>Use of the <em>form</em>  tag and <em>action</em>  tag must be linking 
directly to the action name (and optional namespace). This means that 
&lt;s:form action=”foo”/&gt; is OK, but &lt;s:form action=”foo.action”/&gt; is 
not.
- Here is also a short overview of what it does and why a developer would want 
to use it.</p>
-  </li>
+  <li>Use of the <em>form</em>  tag and <em>action</em>  tag must be linking 
directly to the action name (and optional namespace). 
+This means that <code class="language-plaintext highlighter-rouge">&lt;s:form 
action="foo"/&gt;</code> is OK, but <code class="language-plaintext 
highlighter-rouge">&lt;s:form action="foo.action"/&gt;</code> is not.
+Here is also a short overview of what it does and why a developer would want 
to use it.</li>
 </ul>
 
-<p><strong>Features</strong></p>
+<h2 id="features">Features</h2>
 
-<ul>
-  <li>Generates a graphical view of your web application</li>
-</ul>
+<p>Generates a graphical view of your web application</p>
 
-<h2 id="usage">Usage</h2>
+<h3 id="usage">Usage</h3>
 
 <p>You can use SiteGraph with the following command:</p>
 
@@ -227,7 +213,6 @@
      -views VIEWS_DIRS
      -output OUTPUT
      [-ns NAMESPACE]
-
 </code></pre></div></div>
 
 <p>Where:</p>
@@ -237,16 +222,22 @@
        VIEWS_DIRS =&gt; comma seperated list of dirs containing JSPs, VMs, etc
        OUPUT      =&gt; the directory where the output should go
        NAMESPACE  =&gt; the namespace path restriction (/, /foo, etc)
-
 </code></pre></div></div>
 
-<p>You must either supply the correct classpath when invoking the SiteGraph 
tool or place the Sitegraph plugin in the same directory as the dependent jars. 
Specifically, the XWork jar, Struts jar, and their dependencies must be 
included in the classpath. Futhermore, <strong>you must also include your 
Action class files referenced in</strong> struts.xml. Without the proper class 
path entries, SiteGraph will not function properly.</p>
+<p>You must either supply the correct classpath when invoking the SiteGraph 
tool or place the Sitegraph plugin in the same 
+directory as the dependent jars. Specifically, the XWork jar, Struts jar, and 
their dependencies must be included 
+in the classpath. Futhermore, <strong>you must also include your Action class 
files referenced in</strong> struts.xml. 
+Without the proper class path entries, SiteGraph will not function 
properly.</p>
 
-<p>Once you have run SiteGraph, check the directory specified in the “output” 
argument (OUTPUT). In there you will find two files: <strong>out.dot</strong> 
and <strong>out.gif</strong>. You may immediately open up 
<strong>out.gif</strong> and view the web application flow. However, you may 
also wish to either run the <strong>out.dot</strong> file through a different 
GraphVis layout engine (neato, twopi, etc), so the original dot file is 
provided as well. You may also wish to edit the dot [...]
+<p>Once you have run SiteGraph, check the directory specified in the “output” 
argument (OUTPUT). In there you will find 
+two files: <strong>out.dot</strong> and <strong>out.gif</strong>. You may 
immediately open up <strong>out.gif</strong> and view the web application flow. 
+However, you may also wish to either run the <strong>out.dot</strong> file 
through a different GraphVis layout engine (neato, twopi, etc), 
+so the original dot file is provided as well. You may also wish to edit the 
dot file before rendering the final flow diagram.</p>
 
-<p><strong>Automatic Execution</strong></p>
+<h3 id="automatic-execution">Automatic Execution</h3>
 
-<p>Some advanced users may wish to execute SiteGraph from within their 
application - this could be required if you are developing an application that 
supports plugin capabilities. This can easily be done. See the JavaDocs for 
more info:</p>
+<p>Some advanced users may wish to execute SiteGraph from within their 
application - this could be required if you are 
+developing an application that supports plugin capabilities. This can easily 
be done. See the JavaDocs for more info:</p>
 
 <div class="language-text highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code> * &lt;p&gt;
  * If you wish to use SiteGraph through its API rather than through the 
command line,
@@ -254,28 +245,27 @@
  * optionally specify a {@link Writer} to output the dot content to, and then 
call
  * {@link #prepare()}.
  * &lt;/p&gt;
-
 </code></pre></div></div>
 
 <p>The command line version of SiteGraph does exactly this (except for 
overriding the Writer):</p>
 
-<div class="language-java highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code>        <span class="nc">SiteGraph</span> <span 
class="n">siteGraph</span> <span class="o">=</span> <span class="k">new</span> 
<span class="nc">SiteGraph</span><span class="o">(</span><span 
class="n">configDir</span><span class="o">,</span> <span 
class="n">views</span><span class="o">,</span> <span 
class="n">output</span><span class="o">,</span> <span 
class="n">namespace</span><span class="o" [...]
-        <span class="n">siteGraph</span><span class="o">.</span><span 
class="na">prepare</span><span class="o">();</span>
-        <span class="n">siteGraph</span><span class="o">.</span><span 
class="na">render</span><span class="o">();</span>
-
+<div class="language-java highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code>    <span class="nc">SiteGraph</span> <span 
class="n">siteGraph</span> <span class="o">=</span> <span class="k">new</span> 
<span class="nc">SiteGraph</span><span class="o">(</span><span 
class="n">configDir</span><span class="o">,</span> <span 
class="n">views</span><span class="o">,</span> <span 
class="n">output</span><span class="o">,</span> <span 
class="n">namespace</span><span class="o">);</span>
+    <span class="n">siteGraph</span><span class="o">.</span><span 
class="na">prepare</span><span class="o">();</span>
+    <span class="n">siteGraph</span><span class="o">.</span><span 
class="na">render</span><span class="o">();</span>
 </code></pre></div></div>
 
-<p><strong>Example</strong></p>
-
-<p><strong>Settings</strong></p>
+<h2 id="settings">Settings</h2>
 
 <p>This plugin doesn’t allow for any global settings.</p>
 
-<p><strong>Installation</strong></p>
+<h2 id="installation">Installation</h2>
 
-<p>The SiteGraph plugin jar is distributed with Struts, so if you’re up and 
running, you don’t need to do download any additional Java packages. However, 
SiteGraph does require the “dot” package by <a 
href="http://www.graphviz.org";>GraphViz</a>.</p>
+<p>The SiteGraph plugin jar is distributed with Struts, so if you’re up and 
running, you don’t need to do download
+any additional Java packages. However, SiteGraph does require the “dot” 
package by <a href="http://www.graphviz.org";>GraphViz</a>.</p>
 
-<p>You’ll need to download the latest version of GraphViz and make sure that 
the dot executable (dot.exe in Windows) is in your command path. In Windows the 
GraphViz installer typically automatically adds <code class="language-plaintext 
highlighter-rouge">dot.exe</code> to your path. However, you may need to do 
this by hand depending on your system configuration.</p>
+<p>You’ll need to download the latest version of GraphViz and make sure that 
the dot executable (dot.exe in Windows) 
+is in your command path. In Windows the GraphViz installer typically 
automatically adds <code class="language-plaintext 
highlighter-rouge">dot.exe</code> to your path. 
+However, you may need to do this by hand depending on your system 
configuration.</p>
 
   </section>
 </article>
diff --git a/content/plugins/sitemesh/index.html 
b/content/plugins/sitemesh/index.html
index e1c2a4a9c..ffdabb6fe 100644
--- a/content/plugins/sitemesh/index.html
+++ b/content/plugins/sitemesh/index.html
@@ -129,9 +129,24 @@
   <section class="col-md-12">
     <a class="edit-on-gh" 
href="https://github.com/apache/struts-site/edit/master/source/plugins/sitemesh/index.md";
 title="Edit this page on GitHub">Edit on GitHub</a>
     
-    <a href="../" title="back to Plugins"><< back to Plugins</a>
+    <a href="index.html" title="back to Plugins"><< back to Plugins</a>
     
-    <h1 id="sitemesh-plugin">SiteMesh Plugin</h1>
+    <h1 class="no_toc" id="sitemesh-plugin">SiteMesh Plugin</h1>
+
+<ul id="markdown-toc">
+  <li><a href="#about-sitemesh" id="markdown-toc-about-sitemesh">About 
SiteMesh</a></li>
+  <li><a href="#features" id="markdown-toc-features">Features</a></li>
+  <li><a href="#usage" id="markdown-toc-usage">Usage</a></li>
+  <li><a href="#freemarker--and-velocity-decorators" 
id="markdown-toc-freemarker--and-velocity-decorators">FreeMarker  and Velocity 
Decorators</a>    <ul>
+      <li><a href="#freemarker" 
id="markdown-toc-freemarker">FreeMarker</a></li>
+      <li><a href="#velocity" id="markdown-toc-velocity">Velocity</a></li>
+      <li><a 
href="#full-integration-with-sitemesh-2--freemarker-242--velocity-13--including-struts-2-tags-valuestack-and-freemarkermanager-statics"
 
id="markdown-toc-full-integration-with-sitemesh-2--freemarker-242--velocity-13--including-struts-2-tags-valuestack-and-freemarkermanager-statics">Full
 integration with SiteMesh 2 + Freemarker 2.4.2 + Velocity 1.3 , including 
Struts 2 Tags, ValueStack, and FreemarkerManager statics.</a></li>
+    </ul>
+  </li>
+  <li><a href="#example" id="markdown-toc-example">Example</a></li>
+  <li><a href="#settings" id="markdown-toc-settings">Settings</a></li>
+  <li><a href="#installation" 
id="markdown-toc-installation">Installation</a></li>
+</ul>
 
 <blockquote>
   <p>This plugin got marked as deprecated since Struts 2.6!</p>
@@ -146,25 +161,23 @@ framework to aid in creating large sites consisting of 
many pages for which a co
 
 <p>The Sitemesh plugin allows Sitemesh templates to access framework 
resources.</p>
 
-<p>The framework stores all its value stack information as request attributes, 
meaning that if you wish to display data that is on the stack (or even the 
ActionContext), you can do so by using the normal tag libraries that come with 
the framework. That’s it!</p>
+<p>The framework stores all its value stack information as request attributes, 
meaning that if you wish to display data 
+that is on the stack (or even the ActionContext), you can do so by using the 
normal tag libraries that come 
+with the framework. That’s it!</p>
 
 <h2 id="features">Features</h2>
 
 <ul>
-  <li>
-    <p>Can use Struts tags in Sitemesh decorator templates</p>
-  </li>
-  <li>
-    <p>Sitemesh decorators can be written in FreeMarker as well as Velocity 
and JSP</p>
-  </li>
+  <li>Can use Struts tags in Sitemesh decorator templates</li>
+  <li>Sitemesh decorators can be written in FreeMarker as well as Velocity and 
JSP</li>
 </ul>
 
 <h2 id="usage">Usage</h2>
 
-<p>From 2.2+ the new <code class="language-plaintext 
highlighter-rouge">com.opensymphony.sitemesh.webapp.SiteMeshFilter</code> 
filter and Struts <code class="language-plaintext 
highlighter-rouge">org.apache.struts2.dispatcher.ng.listener.StrutsListener</code>
 context listener must be added to <code class="language-plaintext 
highlighter-rouge">web.xml</code>, like:</p>
+<p>From 2.2+ the new <code class="language-plaintext 
highlighter-rouge">com.opensymphony.sitemesh.webapp.SiteMeshFilter</code> 
filter 
+and Struts <code class="language-plaintext 
highlighter-rouge">org.apache.struts2.dispatcher.ng.listener.StrutsListener</code>
 context listener must be added to <code class="language-plaintext 
highlighter-rouge">web.xml</code>, like:</p>
 
-<div class="language-xml highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code>
-<span class="nt">&lt;filter&gt;</span>
+<div class="language-xml highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="nt">&lt;filter&gt;</span>
     <span class="nt">&lt;filter-name&gt;</span>sitemesh<span 
class="nt">&lt;/filter-name&gt;</span>
     <span 
class="nt">&lt;filter-class&gt;</span>com.opensymphony.sitemesh.webapp.SiteMeshFilter<span
 class="nt">&lt;/filter-class&gt;</span>
 <span class="nt">&lt;/filter&gt;</span> 
@@ -177,11 +190,13 @@ framework to aid in creating large sites consisting of 
many pages for which a co
 
 <h2 id="freemarker--and-velocity-decorators">FreeMarker  and Velocity 
Decorators</h2>
 
-<p>The plugin provides an extension of the SiteMesh <em>Velocity</em>  and 
<em>FreeMarker</em>  servlets. These servlets provide the standard variables 
and <em>Struts Tags</em>  that you used to create views in your favourite 
template language.</p>
+<p>The plugin provides an extension of the SiteMesh <em>Velocity</em>  and 
<em>FreeMarker</em>  servlets. These servlets provide 
+the standard variables and <em>Struts Tags</em>  that you used to create views 
in your favourite template language.</p>
 
 <h3 id="freemarker">FreeMarker</h3>
 
-<p>From 2.2+ the recommended way to use Freemarker with Sitemesh is through 
the <code class="language-plaintext 
highlighter-rouge">org.apache.struts2.sitemesh.FreemarkerDecoratorServlet</code>
 servlet, which can be configured like this in <code class="language-plaintext 
highlighter-rouge">web.xml</code>:</p>
+<p>From 2.2+ the recommended way to use Freemarker with Sitemesh is through 
the <code class="language-plaintext 
highlighter-rouge">org.apache.struts2.sitemesh.FreemarkerDecoratorServlet</code>
 
+servlet, which can be configured like this in <code class="language-plaintext 
highlighter-rouge">web.xml</code>:</p>
 
 <div class="language-xml highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code>
 <span class="nt">&lt;servlet&gt;</span>
@@ -207,7 +222,8 @@ framework to aid in creating large sites consisting of many 
pages for which a co
   <p>NOTE: Please include the <a href="../velocity/">Struts Velocity 
plugin</a> in your pom.xml before using this functionality</p>
 </blockquote>
 
-<p>From 2.2+ the recommended way to use Velocity with Sitemesh is through the 
<code class="language-plaintext 
highlighter-rouge">org.apache.struts2.sitemesh.VelocityDecoratorServlet</code> 
servlet, which can be configured like this in <code class="language-plaintext 
highlighter-rouge">web.xml</code>:</p>
+<p>From 2.2+ the recommended way to use Velocity with Sitemesh is through the 
<code class="language-plaintext 
highlighter-rouge">org.apache.struts2.sitemesh.VelocityDecoratorServlet</code> 
+servlet, which can be configured like this in <code class="language-plaintext 
highlighter-rouge">web.xml</code>:</p>
 
 <div class="language-xml highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code>
 <span class="nt">&lt;servlet&gt;</span>
@@ -296,8 +312,7 @@ framework to aid in creating large sites consisting of many 
pages for which a co
 
 <p>Here is an example of how to configure the filter chains in <code 
class="language-plaintext highlighter-rouge">web.xml</code>:</p>
 
-<div class="language-xml highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code>
-<span class="nt">&lt;filter&gt;</span>
+<div class="language-xml highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="nt">&lt;filter&gt;</span>
     <span class="nt">&lt;filter-name&gt;</span>struts-prepare<span 
class="nt">&lt;/filter-name&gt;</span>
     <span 
class="nt">&lt;filter-class&gt;</span>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter<span
 class="nt">&lt;/filter-class&gt;</span>
 <span class="nt">&lt;/filter&gt;</span>
@@ -366,8 +381,7 @@ framework to aid in creating large sites consisting of many 
pages for which a co
 
 <p>Struts 2.1 web.xml filter chain example:</p>
 
-<div class="language-xml highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code>
-<span class="nt">&lt;filter&gt;</span>
+<div class="language-xml highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="nt">&lt;filter&gt;</span>
     <span class="nt">&lt;filter-name&gt;</span>struts-prepare<span 
class="nt">&lt;/filter-name&gt;</span>
     <span 
class="nt">&lt;filter-class&gt;</span>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter<span
 class="nt">&lt;/filter-class&gt;</span>
 <span class="nt">&lt;/filter&gt;</span>
@@ -399,12 +413,10 @@ framework to aid in creating large sites consisting of 
many pages for which a co
 
 </code></pre></div></div>
 
-<p>You do not need the struts2-sitmesh-plugin if you are using JSP for your 
decorators.</p>
+<p>You do not need the struts2-sitmesh-plugin if you are using JSP for your 
decorators.
+Here are the only changes needed to web.xml</p>
 
-<p>Here are the only only changes needed to web.xml</p>
-
-<div class="language-xml highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code>
-<span class="nt">&lt;filter&gt;</span>
+<div class="language-xml highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="nt">&lt;filter&gt;</span>
     <span class="nt">&lt;filter-name&gt;</span>struts2-prepare<span 
class="nt">&lt;/filter-name&gt;</span>
     <span 
class="nt">&lt;filter-class&gt;</span>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter<span
 class="nt">&lt;/filter-class&gt;</span>
 <span class="nt">&lt;/filter&gt;</span>
diff --git a/content/plugins/spring/index.html 
b/content/plugins/spring/index.html
index f9fccad96..34af98b8e 100644
--- a/content/plugins/spring/index.html
+++ b/content/plugins/spring/index.html
@@ -129,46 +129,56 @@
   <section class="col-md-12">
     <a class="edit-on-gh" 
href="https://github.com/apache/struts-site/edit/master/source/plugins/spring/index.md";
 title="Edit this page on GitHub">Edit on GitHub</a>
     
-    <a href="../" title="back to Plugins"><< back to Plugins</a>
+    <a href="index.html" title="back to Plugins"><< back to Plugins</a>
     
     <h1 class="no_toc" id="spring-plugin">Spring Plugin</h1>
 
 <ul id="markdown-toc">
   <li><a href="#description" id="markdown-toc-description">Description</a></li>
+  <li><a href="#features" id="markdown-toc-features">Features</a></li>
   <li><a href="#usage" id="markdown-toc-usage">Usage</a></li>
+  <li><a href="#autowiring" id="markdown-toc-autowiring">Autowiring</a></li>
+  <li><a href="#initializing-actions-from-spring" 
id="markdown-toc-initializing-actions-from-spring">Initializing Actions from 
Spring</a></li>
+  <li><a href="#class-reloading" id="markdown-toc-class-reloading">Class 
Reloading</a></li>
+  <li><a href="#settings" id="markdown-toc-settings">Settings</a></li>
+  <li><a href="#installation" 
id="markdown-toc-installation">Installation</a></li>
 </ul>
 
 <h2 id="description">Description</h2>
 
-<p><a href="http://www.springframework.org";>Spring</a> is a lightweight 
container, providing centralized, automated configuration and wiring of your 
application objects, using a technique called “Dependency Injection”.</p>
+<p><a href="http://www.springframework.org";>Spring</a> is a lightweight 
container, providing centralized, automated configuration 
+and wiring of your application objects, using a technique called “Dependency 
Injection”.</p>
 
-<p>The Spring Plugin works by overriding the Struts <a 
href="/core-developers/object-factory">ObjectFactory</a> to enhance the 
creation of core framework objects. When an object is to be created, it uses 
the <code class="language-plaintext highlighter-rouge">class</code> attribute 
in the Struts configuration to correspond to the <code 
class="language-plaintext highlighter-rouge">id</code> attribute in the Spring 
configuration. If not found, the class will try to be created as usual, then 
[...]
+<p>The Spring Plugin works by overriding the Struts <a 
href="/core-developers/object-factory">ObjectFactory</a> to enhance 
+the creation of core framework objects. When an object is to be created, it 
uses the <code class="language-plaintext highlighter-rouge">class</code> 
attribute in 
+the Struts configuration to correspond to the <code class="language-plaintext 
highlighter-rouge">id</code> attribute in the Spring configuration. If not 
found, the class will 
+try to be created as usual, then be autowired by Spring. In the case of 
Actions, Spring 2’s 
+<a 
href="http://www.springframework.org/docs/reference/beans.html#beans-factory-scopes";>bean
 scope feature</a> can be used to scope 
+an Action instance to the session, application, or a custom scope, providing 
advanced customization above 
+the default per-request scoping.</p>
 
 <blockquote>
-  <p>Remember:</p>
-
-  <p><strong>registering Actions with Spring is not required</strong>. The 
Spring alternative is there if you need it, but the framework will 
automatically create Actions objects from the action mappings. But, if you want 
to use Spring to inject your Actions, the option is there.</p>
+  <p>Remember:
+<strong>registering Actions with Spring is not required</strong>. The Spring 
alternative is there if you need it, but the framework 
+will automatically create Actions objects from the action mappings. But, if 
you want to use Spring to inject your Actions, 
+the option is there.</p>
 </blockquote>
 
-<p><strong>Features</strong></p>
+<h2 id="features">Features</h2>
 
 <ul>
-  <li>
-    <p>Allow Actions, Interceptors, and Results to be created by Spring</p>
-  </li>
-  <li>
-    <p>Struts-created objects can be autowired by Spring after creation</p>
-  </li>
-  <li>
-    <p>Provides two interceptors that autowire actions, if not using the 
Spring ObjectFactory</p>
-  </li>
+  <li>Allow Actions, Interceptors, and Results to be created by Spring</li>
+  <li>Struts-created objects can be autowired by Spring after creation</li>
+  <li>Provides two interceptors that autowire actions, if not using the Spring 
ObjectFactory</li>
 </ul>
 
 <h2 id="usage">Usage</h2>
 
 <p>To enable Spring integration, simply include 
struts2-spring-plugin-x-x-x.jar in your application.</p>
 
-<p>If you are using more than one object factory, (for example, by including 
both the Spring and Plexus plugins in your application,) you will need to set 
the struts.objectFactory property in <a 
href="/core-developers/default-properties">default.properties</a>  or in one of 
several XML files via <a 
href="/core-developers/constant-configuration">Constant Configuration</a>:</p>
+<p>If you are using more than one object factory, (for example, by including 
both the Spring and Plexus plugins in your application) 
+you will need to set the struts.objectFactory property in <a 
href="/core-developers/default-properties">default.properties</a>
+or in one of several XML files via <a 
href="/core-developers/constant-configuration">Constant Configuration</a>:</p>
 
 <p><strong>struts.properties</strong></p>
 
@@ -184,9 +194,10 @@
 
 </code></pre></div></div>
 
-<p><strong>Autowiring</strong></p>
+<h2 id="autowiring">Autowiring</h2>
 
-<p>The framework enables “autowiring” by default. (Autowiring means to look 
for objects defined in Spring with the same name as your object property). To 
change the wiring mode, modify the <code class="language-plaintext 
highlighter-rouge">spring.autowire</code> property.</p>
+<p>The framework enables “autowiring” by default. (Autowiring means to look 
for objects defined in Spring with the same 
+name as your object property). To change the wiring mode, modify the <code 
class="language-plaintext highlighter-rouge">spring.autowire</code> 
property.</p>
 
 <p><strong>Wiring Mode</strong></p>
 
@@ -259,7 +270,9 @@
 
 <p>More applicationContext configuration files needed?</p>
 
-<p>Since the Spring integration uses a standard Listener, it can be configured 
to support configuration files other than applicationContext.xml. Adding the 
following to your web.xml will cause Spring’s ApplicationContext to be 
inititalized from all files matching the given pattern:</p>
+<p>Since the Spring integration uses a standard Listener, it can be configured 
to support configuration files other than 
+applicationContext.xml. Adding the following to your web.xml will cause 
Spring’s ApplicationContext to be initialized 
+from all files matching the given pattern:</p>
 
 <div class="language-xml highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="c">&lt;!-- Context Configuration locations 
for Spring XML files --&gt;</span>
  <span class="nt">&lt;context-param&gt;</span>
@@ -270,13 +283,23 @@
 
 <p>See the Spring documentation for a full description of this parameter.</p>
 
-<p><strong>Initializing Actions from Spring</strong></p>
+<h2 id="initializing-actions-from-spring">Initializing Actions from Spring</h2>
 
-<p>Normally, in <code class="language-plaintext 
highlighter-rouge">struts.xml</code> you specify the class for each Action. 
When using the default SpringObjectFactory, the framework will ask Spring to 
create the Action and wire up dependencies as specified by the default 
auto-wire behavior.</p>
+<p>Normally, in <code class="language-plaintext 
highlighter-rouge">struts.xml</code> you specify the class for each Action. 
When using the default SpringObjectFactory, the framework 
+will ask Spring to create the Action and wire up dependencies as specified by 
the default auto-wire behavior.</p>
 
-<p>We <strong>strongly</strong> recommend that you find declarative ways of 
letting Spring know what to provide for your actions. This includes making your 
beans able to be autowired by either naming your dependent properties on your 
action the same as the bean defined in Spring which should be provided (to 
allow for name-based autowiring), or using autowire-by-type and only having one 
of the required type registered with Spring. It also can include using JDK5 
annotations to declare tran [...]
+<p>We <strong>strongly</strong> recommend that you find declarative ways of 
letting Spring know what to provide for your actions. 
+This includes making your beans able to be autowired by either naming your 
dependent properties on your action the same 
+as the bean defined in Spring which should be provided (to allow for 
name-based autowiring), or using autowire-by-type 
+and only having one of the required type registered with Spring. It also can 
include using JDK5 annotations to declare 
+ransactional and security requirements rather than having to explicitly set up 
proxies in your Spring configuration. 
+If you can find ways to let Spring know what it needs to do for your action 
without needing any explicit configuration 
+in the Spring applicationContext.xml, then you won’t have to maintain this 
configuration in both places.</p>
 
-<p>However, sometimes you might want the bean to be completely managed by 
Spring. This is useful, for example, if you wish to apply more complex AOP or 
Spring-enabled technologies, such as Acegi, to your beans. To do this, all you 
have to do is configure the bean in your Spring <code class="language-plaintext 
highlighter-rouge">applicationContext.xml</code> and then <em>change</em>  the 
class attribute from your Action in the <code class="language-plaintext 
highlighter-rouge">struts.xml< [...]
+<p>However, sometimes you might want the bean to be completely managed by 
Spring. This is useful, for example, if you wish 
+to apply more complex AOP or Spring-enabled technologies, such as Acegi, to 
your beans. To do this, all you have to do 
+is configure the bean in your Spring <code class="language-plaintext 
highlighter-rouge">applicationContext.xml</code> and then <em>change</em> the 
class attribute from your Action 
+in the <code class="language-plaintext highlighter-rouge">struts.xml</code> to 
use the bean name defined in Spring instead of the class name.</p>
 
 <p>Your <code class="language-plaintext highlighter-rouge">struts.xml</code> 
file would then have the Action class attributes changed.</p>
 
@@ -303,7 +326,8 @@
 
 </code></pre></div></div>
 
-<p>Where you have a Spring bean defined in your <code 
class="language-plaintext highlighter-rouge">applicationContext.xml</code> 
named “bar”. Note that the <code class="language-plaintext 
highlighter-rouge">com.acme.Foo</code> Action did not need to be changed, 
because it can be autowired.</p>
+<p>Where you have a Spring bean defined in your <code 
class="language-plaintext highlighter-rouge">applicationContext.xml</code> 
named “bar”. Note that the <code class="language-plaintext 
highlighter-rouge">com.acme.Foo</code> 
+Action did not need to be changed, because it can be autowired.</p>
 
 <p>A typical spring configuration for bar could look as following.</p>
 
@@ -315,32 +339,26 @@
     <span class="nt">&lt;bean</span> <span class="na">id=</span><span 
class="s">"bar"</span> <span class="na">class=</span><span 
class="s">"com.my.BarClass"</span> <span class="na">singleton=</span><span 
class="s">"false"</span><span class="nt">/&gt;</span>
     ...
 <span class="nt">&lt;/beans&gt;</span>
-
 </code></pre></div></div>
 
 <p>To use session-scoped components with Spring and Struts, see the <a 
href="spring-session-components-workarounds">Spring Session Components 
Workarounds</a> analysis.</p>
 
-<p><strong>Class Reloading</strong></p>
+<h2 id="class-reloading">Class Reloading</h2>
 
-<p>The Spring plugin can be configured to automatically reload classes that 
change in the file system. This feature will enable code changes to be “hot 
deployed” without having to restart the web container. To enable this feature 
follow these steps:</p>
+<p>The Spring plugin can be configured to automatically reload classes that 
change in the file system. This feature will 
+enable code changes to be “hot deployed” without having to restart the web 
container. To enable this feature follow 
+these steps:</p>
 
 <ol>
-  <li>
-    <p>Set “struts.devMode” to “true”</p>
-  </li>
-  <li>
-    <p>Set “struts.class.reloading.watchList” to a comma separated list of 
directories, or jar files (absolute or relative paths)</p>
-  </li>
-  <li>
-    <p>Add this to web.xml:</p>
-  </li>
+  <li>Set “struts.devMode” to “true”</li>
+  <li>Set “struts.class.reloading.watchList” to a comma separated list of 
directories, or jar files (absolute or relative paths)</li>
+  <li>Add this to web.xml:</li>
 </ol>
 
-<div class="language-xml highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code>   <span class="nt">&lt;context-param&gt;</span>
-       <span class="nt">&lt;param-name&gt;</span>contextClass<span 
class="nt">&lt;/param-name&gt;</span>
-       <span 
class="nt">&lt;param-value&gt;</span>org.apache.struts2.spring.ClassReloadingXMLWebApplicationContext<span
 class="nt">&lt;/param-value&gt;</span>
-   <span class="nt">&lt;/context-param&gt;</span> 
-
+<div class="language-xml highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="nt">&lt;context-param&gt;</span>
+   <span class="nt">&lt;param-name&gt;</span>contextClass<span 
class="nt">&lt;/param-name&gt;</span>
+   <span 
class="nt">&lt;param-value&gt;</span>org.apache.struts2.spring.ClassReloadingXMLWebApplicationContext<span
 class="nt">&lt;/param-value&gt;</span>
+<span class="nt">&lt;/context-param&gt;</span>
 </code></pre></div></div>
 
 <ol start="4">
@@ -355,7 +373,10 @@
 
 </code></pre></div></div>
 
-<p>Letting the reloading class loader handle all the classes can lead to 
ClassCastException(s) because instances of the same classes loaded by different 
class loaders can not be assigned to each other. To prevent this problem we 
suggest that <code class="language-plaintext 
highlighter-rouge">struts.class.reloading.acceptClasses</code> is used to limit 
the classes loaded by the reloading class loader, so only actions are handled 
by it. This constant supports a comma separated list of regu [...]
+<p>Letting the reloading class loader handle all the classes can lead to 
ClassCastException(s) because instances of the same 
+classes loaded by different class loaders can not be assigned to each other. 
To prevent this problem we suggest 
+that <code class="language-plaintext 
highlighter-rouge">struts.class.reloading.acceptClasses</code> is used to limit 
the classes loaded by the reloading class loader, 
+so only actions are handled by it. This constant supports a comma separated 
list of regular expressions:</p>
 
 <div class="language-xml highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="nt">&lt;constant</span> <span 
class="na">name=</span><span 
class="s">"struts.class.reloading.acceptClasses"</span> <span 
class="na">value=</span><span 
class="s">"com.myproject.example.actions..*"</span> <span 
class="nt">/&gt;</span>
 
@@ -365,7 +386,7 @@
   <p>This feature is experimental, and <strong>should never</strong> be used 
in production systems.</p>
 </blockquote>
 
-<p><strong>Settings</strong></p>
+<h2 id="settings">Settings</h2>
 
 <p>The following settings can be customized. See the <a 
href="/core-developers/configuration-files">developer guide</a>.</p>
 
@@ -424,7 +445,7 @@
   </tbody>
 </table>
 
-<p><strong>Installation</strong></p>
+<h2 id="installation">Installation</h2>
 
 <p>This plugin can be installed by copying the plugin jar into your 
application’s <code class="language-plaintext 
highlighter-rouge">/WEB-INF/lib</code> directory. No other files need to be 
copied or created.</p>
 
diff --git a/content/plugins/struts-1/index.html 
b/content/plugins/struts-1/index.html
index 601d854aa..f41cb3d2c 100644
--- a/content/plugins/struts-1/index.html
+++ b/content/plugins/struts-1/index.html
@@ -129,10 +129,20 @@
   <section class="col-md-12">
     <a class="edit-on-gh" 
href="https://github.com/apache/struts-site/edit/master/source/plugins/struts-1/index.md";
 title="Edit this page on GitHub">Edit on GitHub</a>
     
-    <a href="../" title="back to Plugins"><< back to Plugins</a>
+    <a href="index.html" title="back to Plugins"><< back to Plugins</a>
     
-    <h1 id="struts-1-plugin">Struts 1 Plugin</h1>
+    <h1 class="no_toc" id="struts-1-plugin">Struts 1 Plugin</h1>
+
+<ul id="markdown-toc">
+  <li><a href="#description" id="markdown-toc-description">Description</a></li>
+  <li><a href="#features" id="markdown-toc-features">Features</a></li>
+  <li><a href="#usage" id="markdown-toc-usage">Usage</a></li>
+  <li><a href="#example" id="markdown-toc-example">Example</a></li>
+  <li><a href="#settings" id="markdown-toc-settings">Settings</a></li>
+  <li><a href="#installation" 
id="markdown-toc-installation">Installation</a></li>
+</ul>
 
+<h2 id="description">Description</h2>
 <p>The Struts 1 plugin allows you to use existing Struts 1 Actions and 
ActionForms in Struts 2 applications</p>
 
 <p>This plugin provides a generic Struts 2 Action class to wrap an existing 
Struts 1 Action, <code class="language-plaintext 
highlighter-rouge">org.apache.struts2.s1.Struts1Action</code>.  The wrapper 
class provides the expected calls to the legacy Struts 1 Action and ActionForm, 
converting incoming and outgoing objects into the expected forms.  It works by 
using the <a href="/core-developers/scoped-model-driven-interceptor">scoped 
model driven</a>  technique that uses a single Object as [...]
diff --git a/content/plugins/testng/index.html 
b/content/plugins/testng/index.html
index f642c67ec..cbb186de0 100644
--- a/content/plugins/testng/index.html
+++ b/content/plugins/testng/index.html
@@ -129,13 +129,22 @@
   <section class="col-md-12">
     <a class="edit-on-gh" 
href="https://github.com/apache/struts-site/edit/master/source/plugins/testng/index.md";
 title="Edit this page on GitHub">Edit on GitHub</a>
     
-    <a href="../" title="back to Plugins"><< back to Plugins</a>
+    <a href="index.html" title="back to Plugins"><< back to Plugins</a>
     
-    <h1 id="testng-plugin">TestNG Plugin</h1>
+    <h1 class="no_toc" id="testng-plugin">TestNG Plugin</h1>
+
+<ul id="markdown-toc">
+  <li><a href="#description" id="markdown-toc-description">Description</a></li>
+  <li><a href="#features" id="markdown-toc-features">Features</a></li>
+  <li><a href="#usage" id="markdown-toc-usage">Usage</a></li>
+  <li><a href="#settings" id="markdown-toc-settings">Settings</a></li>
+  <li><a href="#installation" 
id="markdown-toc-installation">Installation</a></li>
+</ul>
 
-<p>The TestNG plugin provides integration with the popular <a 
href="http://testng.org";>TestNG</a> unit testing framework.</p>
+<h2 id="description">Description</h2>
 
-<p>This plugin provides a base <code class="language-plaintext 
highlighter-rouge">StrutsTestCase</code> class that can subclassed for tests 
that work on Struts 2 components.</p>
+<p>The TestNG plugin provides integration with the popular <a 
href="http://testng.org";>TestNG</a> unit testing framework.
+This plugin provides a base <code class="language-plaintext 
highlighter-rouge">StrutsTestCase</code> class that can subclassed for tests 
that work on Struts 2 components.</p>
 
 <blockquote>
   <p>This plugin is only available with Struts 2.1.1 or later</p>
diff --git a/content/plugins/tiles-3/index.html 
b/content/plugins/tiles-3/index.html
index baf5a03ac..4fc94d5d0 100644
--- a/content/plugins/tiles-3/index.html
+++ b/content/plugins/tiles-3/index.html
@@ -129,14 +129,25 @@
   <section class="col-md-12">
     <a class="edit-on-gh" 
href="https://github.com/apache/struts-site/edit/master/source/plugins/tiles-3/index.md";
 title="Edit this page on GitHub">Edit on GitHub</a>
     
-    <a href="../" title="back to Plugins"><< back to Plugins</a>
+    <a href="index.html" title="back to Plugins"><< back to Plugins</a>
     
-    <h1 id="tiles-3-plugin">Tiles 3 Plugin</h1>
+    <h1 class="no_toc" id="tiles-3-plugin">Tiles 3 Plugin</h1>
+
+<ul id="markdown-toc">
+  <li><a href="#features" id="markdown-toc-features">Features</a></li>
+  <li><a href="#usage" id="markdown-toc-usage">Usage</a></li>
+  <li><a href="#example" id="markdown-toc-example">Example</a></li>
+  <li><a href="#settings" id="markdown-toc-settings">Settings</a></li>
+  <li><a href="#installation" 
id="markdown-toc-installation">Installation</a></li>
+</ul>
 
 <blockquote>
   <p>This plugin was dropped in Struts 2.5, instead please use <a 
href="../tiles">Tiles Plugin</a> which was extended and upgraded to Tiles 3.</p>
+</blockquote>
 
-  <p>Tiles is a templating framework designed to easily allow the creation of 
web application pages with a consistent look and feel. It can be used for both 
page decorating and componentization. This is the first release of the 
plugin!</p>
+<blockquote>
+  <p>Tiles is a templating framework designed to easily allow the creation of 
web application pages with a consistent look 
+and feel. It can be used for both page decorating and componentization. This 
is the first release of the plugin!</p>
 </blockquote>
 
 <p>The Tiles 3 plugin allows actions to return Tiles 3 pages.</p>
diff --git a/content/plugins/tiles/index.html b/content/plugins/tiles/index.html
index f65f45b89..e88cfd918 100644
--- a/content/plugins/tiles/index.html
+++ b/content/plugins/tiles/index.html
@@ -129,7 +129,7 @@
   <section class="col-md-12">
     <a class="edit-on-gh" 
href="https://github.com/apache/struts-site/edit/master/source/plugins/tiles/index.md";
 title="Edit this page on GitHub">Edit on GitHub</a>
     
-    <a href="../" title="back to Plugins"><< back to Plugins</a>
+    <a href="index.html" title="back to Plugins"><< back to Plugins</a>
     
     <h1 class="no_toc" id="tiles-plugin">Tiles Plugin</h1>
 
diff --git a/content/tag-developers/css-xhtml-theme.html 
b/content/tag-developers/css-xhtml-theme.html
index f18ec9208..c98dca938 100644
--- a/content/tag-developers/css-xhtml-theme.html
+++ b/content/tag-developers/css-xhtml-theme.html
@@ -327,7 +327,7 @@ to provide the layout. The contents of 
<strong>head.ftl</strong> are:</p>
  * under the License.
  */
 --&gt;
-&lt;link &lt;#include "/${parameters.templateDir}/simple/nonce.ftl" /&gt; 
rel="stylesheet" href="&lt;@s.url 
value='${parameters.staticContentPath}/css_xhtml/styles.css' 
includeParams='none' encode='false' /&gt;" type="text/css" /&gt;
+&lt;@s.link rel="stylesheet" 
href="${base}${parameters.staticContentPath}/css_xhtml/styles.css" 
type="text/css" /&gt;
 &lt;#include "/${parameters.templateDir}/simple/head.ftl" 
/&gt;</code></pre></figure>
 
 <p>The head includes a style sheet. The contents of 
<strong>styles.css</strong> are:</p>
diff --git a/content/tag-developers/simple-theme.html 
b/content/tag-developers/simple-theme.html
index 0209c1e4a..f04b608ac 100644
--- a/content/tag-developers/simple-theme.html
+++ b/content/tag-developers/simple-theme.html
@@ -181,7 +181,7 @@ Ajax/Dojo support so that tags can import Dojo widgets 
easily.</p>
  * under the License.
  */
 --&gt;
-&lt;script src="${base}${parameters.staticContentPath}/utils.js" 
type="text/javascript" &lt;#include 
"/${parameters.templateDir}/simple/nonce.ftl" /&gt; 
&gt;&lt;/script&gt;</code></pre></figure>
+&lt;@s.script src="${base}${parameters.staticContentPath}/utils.js" 
type="text/javascript" /&gt;</code></pre></figure>
 
 
   </section>
diff --git a/content/tag-developers/xhtml-theme.html 
b/content/tag-developers/xhtml-theme.html
index ed3518b28..c78bacb21 100644
--- a/content/tag-developers/xhtml-theme.html
+++ b/content/tag-developers/xhtml-theme.html
@@ -392,7 +392,7 @@ render the form elements.</p>
  * under the License.
  */
 --&gt;
-&lt;link rel="stylesheet" href="&lt;@s.url 
value='${parameters.staticContentPath}/xhtml/styles.css' includeParams='none' 
encode='false'/&gt;" type="text/css" &lt;#include 
"/${parameters.templateDir}/simple/nonce.ftl" /&gt; /&gt;
+&lt;@s.link rel="stylesheet" 
href="${base}${parameters.staticContentPath}/xhtml/styles.css" type="text/css" 
/&gt;
 &lt;#include "/${parameters.templateDir}/simple/head.ftl" 
/&gt;</code></pre></figure>
 
 <p>The head template imports a style sheet. The contents of 
<strong>styles.css</strong> are:</p>
@@ -506,14 +506,14 @@ wrapping table, the opening and closing templates also, 
if the <code class="lang
 &lt;#include "/${parameters.templateDir}/simple/form-close.ftl" /&gt;
 &lt;#include 
"/${parameters.templateDir}/${parameters.expandTheme}/form-close-validate.ftl" 
/&gt;
 &lt;#if parameters.focusElement??&gt;
-&lt;script type="text/javascript" &lt;#include 
"/${parameters.templateDir}/simple/nonce.ftl" /&gt; &gt;
+&lt;@s.script type="text/javascript"&gt;
     StrutsUtils.addOnLoad(function() {
         var element = 
document.getElementById("${parameters.focusElement?js_string}");
         if(element) {
             element.focus();
         }
     });
-&lt;/script&gt;
+&lt;/@s.script&gt;
 &lt;/#if&gt;</code></pre></figure>
 
 <h3 id="xhtml-form-template">xhtml form template</h3>
@@ -582,14 +582,14 @@ to <code class="language-plaintext 
highlighter-rouge">true</code>, enable <a hre
 &lt;#include "/${parameters.templateDir}/simple/form-close.ftl" /&gt;
 &lt;#include 
"/${parameters.templateDir}/${parameters.expandTheme}/form-close-validate.ftl" 
/&gt;
 &lt;#if parameters.focusElement??&gt;
-&lt;script type="text/javascript" &lt;#include 
"/${parameters.templateDir}/simple/nonce.ftl" /&gt; &gt;
+&lt;@s.script type="text/javascript"&gt;
     StrutsUtils.addOnLoad(function() {
         var element = 
document.getElementById("${parameters.focusElement?js_string}");
         if(element) {
             element.focus();
         }
     });
-&lt;/script&gt;
+&lt;/@s.script&gt;
 &lt;/#if&gt;</code></pre></figure>
 
 


Reply via email to