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


The following commit(s) were added to refs/heads/asf-staging by this push:
     new 64b387636 Updates stage by Jenkins
64b387636 is described below

commit 64b387636d2ec12f44683adff5b49e6ba1fdd233
Author: jenkins <bui...@apache.org>
AuthorDate: Sat Apr 20 13:58:40 2024 +0000

    Updates stage by Jenkins
---
 .../ajax-client-side-validation.html               |  84 +++----
 content/plugins/index.html                         |   2 +-
 content/plugins/json/index.html                    |  12 +-
 content/plugins/json/json-ajax-validation.html     | 279 +++++++++++++++++----
 .../plugins/portlet/struts-2-portlet-tutorial.html | 193 +++++++++++++-
 content/plugins/spring/index.html                  |   2 -
 .../ajax-and-javascript-recipes.html               |  78 +++---
 content/tag-developers/ajax-div-template.html      |  12 +-
 content/tag-developers/ajax-event-system.html      |   4 +-
 9 files changed, 523 insertions(+), 143 deletions(-)

diff --git a/content/core-developers/ajax-client-side-validation.html 
b/content/core-developers/ajax-client-side-validation.html
index 9570c2e5f..396dfbea1 100644
--- a/content/core-developers/ajax-client-side-validation.html
+++ b/content/core-developers/ajax-client-side-validation.html
@@ -509,21 +509,21 @@ It takes care of hiding validation errors that might be 
present, submit the form
   *
   * @param event onSubmit event
   */</span>
-<span class="kd">function</span> <span 
class="nf">ajaxFormValidation</span><span class="p">(</span><span 
class="nx">event</span><span class="p">)</span> <span class="p">{</span>
-    <span class="nx">event</span><span class="p">.</span><span 
class="nf">preventDefault</span><span class="p">();</span>
-    <span class="nf">_removeValidationErrors</span><span class="p">();</span>
-    <span class="kd">var</span> <span class="nx">_form</span> <span 
class="o">=</span> <span class="nf">$</span><span class="p">(</span><span 
class="nx">event</span><span class="p">.</span><span 
class="nx">target</span><span class="p">);</span>
-    <span class="kd">var</span> <span class="nx">_formData</span> <span 
class="o">=</span> <span class="nx">_form</span><span class="p">.</span><span 
class="nf">serialize</span><span class="p">(</span><span 
class="kc">true</span><span class="p">);</span>
+<span class="kd">function</span> <span 
class="nx">ajaxFormValidation</span><span class="p">(</span><span 
class="nx">event</span><span class="p">)</span> <span class="p">{</span>
+    <span class="nx">event</span><span class="p">.</span><span 
class="nx">preventDefault</span><span class="p">();</span>
+    <span class="nx">_removeValidationErrors</span><span class="p">();</span>
+    <span class="kd">var</span> <span class="nx">_form</span> <span 
class="o">=</span> <span class="nx">$</span><span class="p">(</span><span 
class="nx">event</span><span class="p">.</span><span 
class="nx">target</span><span class="p">);</span>
+    <span class="kd">var</span> <span class="nx">_formData</span> <span 
class="o">=</span> <span class="nx">_form</span><span class="p">.</span><span 
class="nx">serialize</span><span class="p">(</span><span 
class="kc">true</span><span class="p">);</span>
     <span class="c1">// prepare visual feedback</span>
     <span class="c1">// you may want to use other elements here</span>
-    <span class="kd">var</span> <span class="nx">originalButton</span> <span 
class="o">=</span> <span class="nx">_form</span><span class="p">.</span><span 
class="nf">find</span><span class="p">(</span><span class="dl">'</span><span 
class="s1">.btn-primary</span><span class="dl">'</span><span class="p">);</span>
+    <span class="kd">var</span> <span class="nx">originalButton</span> <span 
class="o">=</span> <span class="nx">_form</span><span class="p">.</span><span 
class="nx">find</span><span class="p">(</span><span class="dl">'</span><span 
class="s1">.btn-primary</span><span class="dl">'</span><span class="p">);</span>
     <span class="c1">// note: jQuery returns an array-like object</span>
-    <span class="k">if </span><span class="p">(</span><span 
class="nx">originalButton</span> <span class="o">&amp;&amp;</span> <span 
class="nx">originalButton</span><span class="p">.</span><span 
class="nx">length</span> <span class="o">&amp;&amp;</span> <span 
class="nx">originalButton</span><span class="p">.</span><span 
class="nx">length</span> <span class="o">&gt;</span> <span 
class="mi">0</span><span class="p">)</span> <span class="p">{</span>
-        <span class="nx">originalButton</span><span class="p">.</span><span 
class="nf">hide</span><span class="p">();</span>
-        <span class="kd">var</span> <span class="nx">feedbackElement</span> 
<span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span 
class="dl">'</span><span class="s1">&lt;div 
class="ajaxVisualFeedback"&gt;&lt;/div&gt;</span><span class="dl">'</span><span 
class="p">).</span><span class="nf">insertAfter</span><span 
class="p">(</span><span class="nx">originalButton</span><span 
class="p">);</span>
+    <span class="k">if</span> <span class="p">(</span><span 
class="nx">originalButton</span> <span class="o">&amp;&amp;</span> <span 
class="nx">originalButton</span><span class="p">.</span><span 
class="nx">length</span> <span class="o">&amp;&amp;</span> <span 
class="nx">originalButton</span><span class="p">.</span><span 
class="nx">length</span> <span class="o">&gt;</span> <span 
class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+        <span class="nx">originalButton</span><span class="p">.</span><span 
class="nx">hide</span><span class="p">();</span>
+        <span class="kd">var</span> <span class="nx">feedbackElement</span> 
<span class="o">=</span> <span class="nx">$</span><span class="p">(</span><span 
class="dl">'</span><span class="s1">&lt;div 
class="ajaxVisualFeedback"&gt;&lt;/div&gt;</span><span class="dl">'</span><span 
class="p">).</span><span class="nx">insertAfter</span><span 
class="p">(</span><span class="nx">originalButton</span><span 
class="p">);</span>
         <span class="kd">var</span> <span class="nx">restoreFunction</span> 
<span class="o">=</span> <span class="kd">function</span><span 
class="p">()</span> <span class="p">{</span>
-            <span class="nx">originalButton</span><span 
class="p">.</span><span class="nf">show</span><span class="p">();</span>
-            <span class="nx">feedbackElement</span><span 
class="p">.</span><span class="nf">remove</span><span class="p">();</span>
+            <span class="nx">originalButton</span><span 
class="p">.</span><span class="nx">show</span><span class="p">();</span>
+            <span class="nx">feedbackElement</span><span 
class="p">.</span><span class="nx">remove</span><span class="p">();</span>
         <span class="p">}</span>
     <span class="p">}</span>
     <span class="kd">var</span> <span class="nx">options</span> <span 
class="o">=</span> <span class="p">{</span>
@@ -531,48 +531,48 @@ It takes care of hiding validation errors that might be 
present, submit the form
         <span class="na">async</span><span class="p">:</span> <span 
class="kc">true</span><span class="p">,</span>
         <span class="na">processData</span><span class="p">:</span> <span 
class="kc">false</span><span class="p">,</span>
         <span class="na">type</span><span class="p">:</span> <span 
class="dl">'</span><span class="s1">POST</span><span class="dl">'</span><span 
class="p">,</span>
-        <span class="na">success</span><span class="p">:</span> <span 
class="nf">function </span><span class="p">(</span><span 
class="nx">response</span><span class="p">,</span> <span 
class="nx">statusText</span><span class="p">,</span> <span 
class="nx">xhr</span><span class="p">)</span> <span class="p">{</span>
-            <span class="k">if </span><span class="p">(</span><span 
class="nx">response</span><span class="p">.</span><span 
class="nx">location</span><span class="p">)</span> <span class="p">{</span>
+        <span class="na">success</span><span class="p">:</span> <span 
class="kd">function</span> <span class="p">(</span><span 
class="nx">response</span><span class="p">,</span> <span 
class="nx">statusText</span><span class="p">,</span> <span 
class="nx">xhr</span><span class="p">)</span> <span class="p">{</span>
+            <span class="k">if</span> <span class="p">(</span><span 
class="nx">response</span><span class="p">.</span><span 
class="nx">location</span><span class="p">)</span> <span class="p">{</span>
                 <span class="c1">// no validation errors</span>
                 <span class="c1">// action has been executed and sent a 
redirect URL wrapped as JSON</span>
                 <span class="c1">// cannot use a normal http-redirect 
(status-code 3xx) as this would be followed by browsers and would not be 
available here</span>
                 <span class="c1">// follow JSON-redirect</span>
                 <span class="nb">window</span><span class="p">.</span><span 
class="nx">location</span><span class="p">.</span><span class="nx">href</span> 
<span class="o">=</span> <span class="nx">response</span><span 
class="p">.</span><span class="nx">location</span><span class="p">;</span>
             <span class="p">}</span> <span class="k">else</span> <span 
class="p">{</span>
-                <span class="k">if </span><span class="p">(</span><span 
class="nx">restoreFunction</span><span class="p">)</span> <span 
class="p">{</span>
-                    <span class="nf">restoreFunction</span><span 
class="p">();</span>
+                <span class="k">if</span> <span class="p">(</span><span 
class="nx">restoreFunction</span><span class="p">)</span> <span 
class="p">{</span>
+                    <span class="nx">restoreFunction</span><span 
class="p">();</span>
                 <span class="p">}</span>
-                <span class="nf">_handleValidationResult</span><span 
class="p">(</span><span class="nx">_form</span><span class="p">,</span> <span 
class="nx">response</span><span class="p">);</span>
+                <span class="nx">_handleValidationResult</span><span 
class="p">(</span><span class="nx">_form</span><span class="p">,</span> <span 
class="nx">response</span><span class="p">);</span>
             <span class="p">}</span>
         <span class="p">},</span>
         <span class="na">error</span><span class="p">:</span> <span 
class="kd">function</span><span class="p">(</span><span 
class="nx">xhr</span><span class="p">,</span> <span 
class="nx">textStatus</span><span class="p">,</span> <span 
class="nx">errorThrown</span><span class="p">)</span> <span class="p">{</span>
-            <span class="k">if </span><span class="p">(</span><span 
class="nx">restoreFunction</span><span class="p">)</span> <span 
class="p">{</span>
-                <span class="nf">restoreFunction</span><span 
class="p">();</span>
+            <span class="k">if</span> <span class="p">(</span><span 
class="nx">restoreFunction</span><span class="p">)</span> <span 
class="p">{</span>
+                <span class="nx">restoreFunction</span><span 
class="p">();</span>
             <span class="p">}</span>
             <span class="c1">// struts sends status code 400 when validation 
errors are present</span>
-            <span class="k">if </span><span class="p">(</span><span 
class="nx">xhr</span><span class="p">.</span><span class="nx">status</span> 
<span class="o">===</span> <span class="mi">400</span><span class="p">)</span> 
<span class="p">{</span>
-                <span class="nf">_handleValidationResult</span><span 
class="p">(</span><span class="nx">_form</span><span class="p">,</span> <span 
class="nx">JSON</span><span class="p">.</span><span 
class="nf">parse</span><span class="p">(</span><span class="nx">xhr</span><span 
class="p">.</span><span class="nx">responseText</span><span class="p">))</span>
+            <span class="k">if</span> <span class="p">(</span><span 
class="nx">xhr</span><span class="p">.</span><span class="nx">status</span> 
<span class="o">===</span> <span class="mi">400</span><span class="p">)</span> 
<span class="p">{</span>
+                <span class="nx">_handleValidationResult</span><span 
class="p">(</span><span class="nx">_form</span><span class="p">,</span> <span 
class="nx">JSON</span><span class="p">.</span><span 
class="nx">parse</span><span class="p">(</span><span class="nx">xhr</span><span 
class="p">.</span><span class="nx">responseText</span><span class="p">))</span>
             <span class="p">}</span> <span class="k">else</span> <span 
class="p">{</span>
                 <span class="c1">// a real error occurred -&gt; show user an 
error message</span>
-                <span class="nf">_handleValidationResult</span><span 
class="p">(</span><span class="nx">_form</span><span class="p">,</span> <span 
class="p">{</span><span class="na">errors</span><span class="p">:</span> <span 
class="p">[</span><span class="dl">'</span><span class="s1">Network or server 
error!</span><span class="dl">'</span><span class="p">]})</span>
+                <span class="nx">_handleValidationResult</span><span 
class="p">(</span><span class="nx">_form</span><span class="p">,</span> <span 
class="p">{</span><span class="na">errors</span><span class="p">:</span> <span 
class="p">[</span><span class="dl">'</span><span class="s1">Network or server 
error!</span><span class="dl">'</span><span class="p">]})</span>
             <span class="p">}</span>
         <span class="p">}</span>
     <span class="p">}</span>
     <span class="c1">// send request, after delay to make sure everybody 
notices the visual feedback :)</span>
-    <span class="nb">window</span><span class="p">.</span><span 
class="nf">setTimeout</span><span class="p">(</span><span 
class="kd">function</span><span class="p">()</span> <span class="p">{</span>
+    <span class="nb">window</span><span class="p">.</span><span 
class="nx">setTimeout</span><span class="p">(</span><span 
class="kd">function</span><span class="p">()</span> <span class="p">{</span>
         <span class="kd">var</span> <span class="nx">url</span> <span 
class="o">=</span> <span class="nx">_form</span><span class="p">[</span><span 
class="mi">0</span><span class="p">].</span><span class="nx">action</span><span 
class="p">;</span>
-        <span class="nx">jQuery</span><span class="p">.</span><span 
class="nf">ajax</span><span class="p">(</span><span class="nx">url</span><span 
class="p">,</span> <span class="nx">options</span><span class="p">);</span>
+        <span class="nx">jQuery</span><span class="p">.</span><span 
class="nx">ajax</span><span class="p">(</span><span class="nx">url</span><span 
class="p">,</span> <span class="nx">options</span><span class="p">);</span>
     <span class="p">},</span> <span class="mi">1000</span><span 
class="p">);</span>
 <span class="p">}</span>
 <span class="cm">/**
  * Removes validation errors from HTML DOM.
  */</span>
-<span class="kd">function</span> <span 
class="nf">_removeValidationErrors</span><span class="p">()</span> <span 
class="p">{</span>
+<span class="kd">function</span> <span 
class="nx">_removeValidationErrors</span><span class="p">()</span> <span 
class="p">{</span>
     <span class="c1">// action errors</span>
     <span class="c1">// you might want to use a custom ID here</span>
-    <span class="nf">$</span><span class="p">(</span><span 
class="dl">'</span><span class="s1">ul.errorMessage li</span><span 
class="dl">'</span><span class="p">).</span><span class="nf">remove</span><span 
class="p">();</span>
+    <span class="nx">$</span><span class="p">(</span><span 
class="dl">'</span><span class="s1">ul.errorMessage li</span><span 
class="dl">'</span><span class="p">).</span><span class="nx">remove</span><span 
class="p">();</span>
     <span class="c1">// field errors</span>
-    <span class="nf">$</span><span class="p">(</span><span 
class="dl">'</span><span class="s1">div.errorMessage</span><span 
class="dl">'</span><span class="p">).</span><span class="nf">remove</span><span 
class="p">();</span>
+    <span class="nx">$</span><span class="p">(</span><span 
class="dl">'</span><span class="s1">div.errorMessage</span><span 
class="dl">'</span><span class="p">).</span><span class="nx">remove</span><span 
class="p">();</span>
 <span class="p">}</span>
 <span class="cm">/**
  * Incorporates validation errors in HTML DOM.
@@ -580,32 +580,32 @@ It takes care of hiding validation errors that might be 
present, submit the form
  * @param form Form containing errors.
  * @param errors Errors from server.
  */</span>
-<span class="kd">function</span> <span 
class="nf">_handleValidationResult</span><span class="p">(</span><span 
class="nx">form</span><span class="p">,</span> <span 
class="nx">errors</span><span class="p">)</span> <span class="p">{</span>
+<span class="kd">function</span> <span 
class="nx">_handleValidationResult</span><span class="p">(</span><span 
class="nx">form</span><span class="p">,</span> <span 
class="nx">errors</span><span class="p">)</span> <span class="p">{</span>
     <span class="c1">// action errors</span>
-    <span class="k">if </span><span class="p">(</span><span 
class="nx">errors</span><span class="p">.</span><span 
class="nx">errors</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span 
class="nx">errors</span><span class="p">.</span><span 
class="nx">errors</span><span class="p">)</span> <span class="p">{</span>
         <span class="c1">// you might want to use a custom ID here</span>
-        <span class="kd">var</span> <span class="nx">errorContainer</span> 
<span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span 
class="dl">'</span><span class="s1">ul.errorMessage</span><span 
class="dl">'</span><span class="p">);</span>
-        <span class="nx">$</span><span class="p">.</span><span 
class="nf">each</span><span class="p">(</span><span 
class="nx">errors</span><span class="p">.</span><span 
class="nx">errors</span><span class="p">,</span> <span 
class="kd">function</span><span class="p">(</span><span 
class="nx">index</span><span class="p">,</span> <span 
class="nx">errorMsg</span><span class="p">)</span> <span class="p">{</span>
-            <span class="kd">var</span> <span class="nx">li</span> <span 
class="o">=</span> <span class="nf">$</span><span class="p">(</span><span 
class="dl">'</span><span 
class="s1">&lt;li&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;</span><span 
class="dl">'</span><span class="p">);</span>
-            <span class="nx">li</span><span class="p">.</span><span 
class="nf">text</span><span class="p">(</span><span 
class="nx">errorMsg</span><span class="p">);</span> <span class="c1">// use 
text() for security reasons</span>
-            <span class="nx">errorContainer</span><span 
class="p">.</span><span class="nf">append</span><span class="p">(</span><span 
class="nx">li</span><span class="p">);</span>
+        <span class="kd">var</span> <span class="nx">errorContainer</span> 
<span class="o">=</span> <span class="nx">$</span><span class="p">(</span><span 
class="dl">'</span><span class="s1">ul.errorMessage</span><span 
class="dl">'</span><span class="p">);</span>
+        <span class="nx">$</span><span class="p">.</span><span 
class="nx">each</span><span class="p">(</span><span 
class="nx">errors</span><span class="p">.</span><span 
class="nx">errors</span><span class="p">,</span> <span 
class="kd">function</span><span class="p">(</span><span 
class="nx">index</span><span class="p">,</span> <span 
class="nx">errorMsg</span><span class="p">)</span> <span class="p">{</span>
+            <span class="kd">var</span> <span class="nx">li</span> <span 
class="o">=</span> <span class="nx">$</span><span class="p">(</span><span 
class="dl">'</span><span 
class="s1">&lt;li&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;</span><span 
class="dl">'</span><span class="p">);</span>
+            <span class="nx">li</span><span class="p">.</span><span 
class="nx">text</span><span class="p">(</span><span 
class="nx">errorMsg</span><span class="p">);</span> <span class="c1">// use 
text() for security reasons</span>
+            <span class="nx">errorContainer</span><span 
class="p">.</span><span class="nx">append</span><span class="p">(</span><span 
class="nx">li</span><span class="p">);</span>
         <span class="p">});</span>
     <span class="p">}</span>
     <span class="c1">// field errors</span>
-    <span class="k">if </span><span class="p">(</span><span 
class="nx">errors</span><span class="p">.</span><span 
class="nx">fieldErrors</span><span class="p">)</span> <span class="p">{</span>
-        <span class="nx">$</span><span class="p">.</span><span 
class="nf">each</span><span class="p">(</span><span 
class="nx">errors</span><span class="p">.</span><span 
class="nx">fieldErrors</span><span class="p">,</span> <span 
class="kd">function</span><span class="p">(</span><span 
class="nx">fieldName</span><span class="p">,</span> <span 
class="nx">errorMsg</span><span class="p">)</span> <span class="p">{</span>
-            <span class="kd">var</span> <span class="nx">td</span> <span 
class="o">=</span> <span class="nf">$</span><span class="p">(</span><span 
class="dl">'</span><span class="s1">td[data-error-for-fieldname="</span><span 
class="dl">'</span> <span class="o">+</span> <span class="nx">fieldName</span> 
<span class="o">+</span> <span class="dl">'</span><span 
class="s1">"]</span><span class="dl">'</span><span class="p">);</span>
-            <span class="k">if </span><span class="p">(</span><span 
class="nx">td</span><span class="p">)</span> <span class="p">{</span>
-                <span class="kd">var</span> <span class="nx">div</span> <span 
class="o">=</span> <span class="nf">$</span><span class="p">(</span><span 
class="dl">'</span><span class="s1">&lt;div 
class="errorMessage"&gt;&lt;/div&gt;</span><span class="dl">'</span><span 
class="p">);</span>
-                <span class="nx">div</span><span class="p">.</span><span 
class="nf">text</span><span class="p">(</span><span 
class="nx">errorMsg</span><span class="p">);</span> <span class="c1">// use 
text() for security reasons</span>
-                <span class="nx">td</span><span class="p">.</span><span 
class="nf">append</span><span class="p">(</span><span 
class="nx">div</span><span class="p">);</span>
+    <span class="k">if</span> <span class="p">(</span><span 
class="nx">errors</span><span class="p">.</span><span 
class="nx">fieldErrors</span><span class="p">)</span> <span class="p">{</span>
+        <span class="nx">$</span><span class="p">.</span><span 
class="nx">each</span><span class="p">(</span><span 
class="nx">errors</span><span class="p">.</span><span 
class="nx">fieldErrors</span><span class="p">,</span> <span 
class="kd">function</span><span class="p">(</span><span 
class="nx">fieldName</span><span class="p">,</span> <span 
class="nx">errorMsg</span><span class="p">)</span> <span class="p">{</span>
+            <span class="kd">var</span> <span class="nx">td</span> <span 
class="o">=</span> <span class="nx">$</span><span class="p">(</span><span 
class="dl">'</span><span class="s1">td[data-error-for-fieldname="</span><span 
class="dl">'</span> <span class="o">+</span> <span class="nx">fieldName</span> 
<span class="o">+</span> <span class="dl">'</span><span 
class="s1">"]</span><span class="dl">'</span><span class="p">);</span>
+            <span class="k">if</span> <span class="p">(</span><span 
class="nx">td</span><span class="p">)</span> <span class="p">{</span>
+                <span class="kd">var</span> <span class="nx">div</span> <span 
class="o">=</span> <span class="nx">$</span><span class="p">(</span><span 
class="dl">'</span><span class="s1">&lt;div 
class="errorMessage"&gt;&lt;/div&gt;</span><span class="dl">'</span><span 
class="p">);</span>
+                <span class="nx">div</span><span class="p">.</span><span 
class="nx">text</span><span class="p">(</span><span 
class="nx">errorMsg</span><span class="p">);</span> <span class="c1">// use 
text() for security reasons</span>
+                <span class="nx">td</span><span class="p">.</span><span 
class="nx">append</span><span class="p">(</span><span 
class="nx">div</span><span class="p">);</span>
             <span class="p">}</span>
         <span class="p">});</span>
     <span class="p">}</span>
 <span class="p">}</span>
 <span class="c1">// register onSubmit handler</span>
-<span class="nf">$</span><span class="p">(</span><span 
class="nb">window</span><span class="p">).</span><span 
class="nf">bind</span><span class="p">(</span><span class="dl">'</span><span 
class="s1">load</span><span class="dl">'</span><span class="p">,</span> <span 
class="kd">function</span><span class="p">()</span> <span class="p">{</span>
-    <span class="nf">$</span><span class="p">(</span><span 
class="dl">'</span><span class="s1">form</span><span class="dl">'</span><span 
class="p">).</span><span class="nf">bind</span><span class="p">(</span><span 
class="dl">'</span><span class="s1">submit</span><span class="dl">'</span><span 
class="p">,</span> <span class="nx">ajaxFormValidation</span><span 
class="p">);</span>
+<span class="nx">$</span><span class="p">(</span><span 
class="nb">window</span><span class="p">).</span><span 
class="nx">bind</span><span class="p">(</span><span class="dl">'</span><span 
class="s1">load</span><span class="dl">'</span><span class="p">,</span> <span 
class="kd">function</span><span class="p">()</span> <span class="p">{</span>
+    <span class="nx">$</span><span class="p">(</span><span 
class="dl">'</span><span class="s1">form</span><span class="dl">'</span><span 
class="p">).</span><span class="nx">bind</span><span class="p">(</span><span 
class="dl">'</span><span class="s1">submit</span><span class="dl">'</span><span 
class="p">,</span> <span class="nx">ajaxFormValidation</span><span 
class="p">);</span>
 <span class="p">});</span>
 </code></pre></div></div>
 
diff --git a/content/plugins/index.html b/content/plugins/index.html
index be2c2260b..4203c2c9a 100644
--- a/content/plugins/index.html
+++ b/content/plugins/index.html
@@ -283,7 +283,7 @@ to share with others. Several plugins are bundled with the 
framework, and others
     <tr>
       <td><a href="sitemesh">SiteMesh Plugin</a></td>
       <td> </td>
-      <td>deprecated since 6.0.0</td>
+      <td> </td>
     </tr>
     <tr>
       <td><a href="spring">Spring Plugin</a></td>
diff --git a/content/plugins/json/index.html b/content/plugins/json/index.html
index e83d33603..733a9b2ba 100644
--- a/content/plugins/json/index.html
+++ b/content/plugins/json/index.html
@@ -417,7 +417,7 @@ Thanks to Douglas Crockford for the tip! Consider using 
<strong>prefix</strong>
 </span></code></pre></div></div>
 <p>To strip those comments use:</p>
 
-<div class="language-javascript highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="kd">var</span> <span 
class="nx">responseObject</span> <span class="o">=</span> <span 
class="nf">eval</span><span class="p">(</span><span class="dl">"</span><span 
class="s2">(</span><span class="dl">"</span><span class="o">+</span><span 
class="nx">data</span><span class="p">.</span><span 
class="nf">substring</span><span class="p">(</span><span 
class="nx">data</span><span cla [...]
+<div class="language-javascript highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="kd">var</span> <span 
class="nx">responseObject</span> <span class="o">=</span> <span 
class="nb">eval</span><span class="p">(</span><span class="dl">"</span><span 
class="s2">(</span><span class="dl">"</span><span class="o">+</span><span 
class="nx">data</span><span class="p">.</span><span 
class="nx">substring</span><span class="p">(</span><span 
class="nx">data</span><span cla [...]
 </code></pre></div></div>
 
 <h3 id="prefix">Prefix</h3>
@@ -837,24 +837,24 @@ must be enabled for both.</p>
 <div class="language-jsp highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="nt">&lt;s:url </span><span 
class="na">id=</span><span class="s">"smdUrl"</span><span class="na"> 
namespace=</span><span class="s">"/nodecorate"</span><span class="na"> 
action=</span><span class="s">"SMDAction"</span> <span class="nt">/&gt;</span>
 <span class="nt">&lt;script </span><span class="na">type=</span><span 
class="s">"text/javascript"</span><span class="nt">&gt;</span>
     <span class="c1">//load dojo RPC</span>
-    <span class="nx">dojo</span><span class="p">.</span><span 
class="nf">require</span><span class="p">(</span><span class="dl">"</span><span 
class="s2">dojo.rpc.*</span><span class="dl">"</span><span class="p">);</span>
+    <span class="nx">dojo</span><span class="p">.</span><span 
class="nx">require</span><span class="p">(</span><span class="dl">"</span><span 
class="s2">dojo.rpc.*</span><span class="dl">"</span><span class="p">);</span>
     
     <span class="c1">//create service object(proxy) using SMD (generated by 
the json result)</span>
-    <span class="kd">var</span> <span class="nx">service</span> <span 
class="o">=</span> <span class="k">new</span> <span class="nx">dojo</span><span 
class="p">.</span><span class="nx">rpc</span><span class="p">.</span><span 
class="nc">JsonService</span><span class="p">(</span><span 
class="dl">"</span><span class="s2">${smdUrl}</span><span 
class="dl">"</span><span class="p">);</span>
+    <span class="kd">var</span> <span class="nx">service</span> <span 
class="o">=</span> <span class="k">new</span> <span class="nx">dojo</span><span 
class="p">.</span><span class="nx">rpc</span><span class="p">.</span><span 
class="nx">JsonService</span><span class="p">(</span><span 
class="dl">"</span><span class="s2">${smdUrl}</span><span 
class="dl">"</span><span class="p">);</span>
     
     <span class="c1">//function called when remote method returns</span>
     <span class="kd">var</span> <span class="nx">callback</span> <span 
class="o">=</span> <span class="kd">function</span><span 
class="p">(</span><span class="nx">bean</span><span class="p">)</span> <span 
class="p">{</span>
-        <span class="nf">alert</span><span class="p">(</span><span 
class="dl">"</span><span class="s2">Price for </span><span class="dl">"</span> 
<span class="o">+</span> <span class="nx">bean</span><span 
class="p">.</span><span class="nx">type</span> <span class="o">+</span> <span 
class="dl">"</span><span class="s2"> is </span><span class="dl">"</span> <span 
class="o">+</span> <span class="nx">bean</span><span class="p">.</span><span 
class="nx">price</span><span class="p">);</span>
+        <span class="nx">alert</span><span class="p">(</span><span 
class="dl">"</span><span class="s2">Price for </span><span class="dl">"</span> 
<span class="o">+</span> <span class="nx">bean</span><span 
class="p">.</span><span class="nx">type</span> <span class="o">+</span> <span 
class="dl">"</span><span class="s2"> is </span><span class="dl">"</span> <span 
class="o">+</span> <span class="nx">bean</span><span class="p">.</span><span 
class="nx">price</span><span class="p">);</span>
     <span class="p">};</span>
     
     <span class="c1">//parameter</span>
     <span class="kd">var</span> <span class="nx">bean</span> <span 
class="o">=</span> <span class="p">{</span><span class="na">type</span><span 
class="p">:</span> <span class="dl">"</span><span class="s2">Mocca</span><span 
class="dl">"</span><span class="p">};</span>
     
     <span class="c1">//execute remote method</span>
-    <span class="kd">var</span> <span class="nx">defered</span> <span 
class="o">=</span> <span class="nx">service</span><span class="p">.</span><span 
class="nf">doSomething</span><span class="p">(</span><span 
class="nx">bean</span><span class="p">,</span> <span class="mi">5</span><span 
class="p">);</span>
+    <span class="kd">var</span> <span class="nx">defered</span> <span 
class="o">=</span> <span class="nx">service</span><span class="p">.</span><span 
class="nx">doSomething</span><span class="p">(</span><span 
class="nx">bean</span><span class="p">,</span> <span class="mi">5</span><span 
class="p">);</span>
 
     <span class="c1">//attach callback to defered object</span>
-    <span class="nx">defered</span><span class="p">.</span><span 
class="nf">addCallback</span><span class="p">(</span><span 
class="nx">callback</span><span class="p">);</span>
+    <span class="nx">defered</span><span class="p">.</span><span 
class="nx">addCallback</span><span class="p">(</span><span 
class="nx">callback</span><span class="p">);</span>
 <span class="nt">&lt;/script&gt;</span>
 </code></pre></div></div>
 
diff --git a/content/plugins/json/json-ajax-validation.html 
b/content/plugins/json/json-ajax-validation.html
index 57c7d09fc..6c7306ce0 100644
--- a/content/plugins/json/json-ajax-validation.html
+++ b/content/plugins/json/json-ajax-validation.html
@@ -1,4 +1,156 @@
-<h1 class="no_toc" id="json-ajax-validation">JSON Ajax Validation</h1>
+<!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>JSON Ajax validation</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="/css/syntax.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>
+
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    /* We explicitly disable cookie tracking to avoid privacy issues */
+    _paq.push(['disableCookies']);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="//analytics.apache.org/";
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '41']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
+  </script>
+  <!-- End Matomo Code -->
+</head>
+<body>
+
+<a href="https://github.com/apache/struts"; class="github-ribbon">
+  <img decoding="async" loading="lazy" style="position: absolute; right: 0; 
border: 0;" width="149" height="149" 
src="https://github.blog/wp-content/uploads/2008/12/forkme_right_red_aa0000.png?resize=149%2C149";
 class="attachment-full size-full" alt="Fork me on GitHub" data-recalc-dims="1">
+</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-2023.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><a href="/commercial-support.html">Commercial 
Support</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/json/json-ajax-validation.md";
 title="Edit this page on GitHub">Edit on GitHub</a>
+    
+    <a href="index" title="back to JSON plugin"><< back to JSON plugin</a>
+    
+    <h1 class="no_toc" id="json-ajax-validation">JSON Ajax Validation</h1>
 
 <ul id="markdown-toc">
   <li><a href="#description" id="markdown-toc-description">Description</a></li>
@@ -327,7 +479,7 @@ ${parameters.labelseparator!":"?html}<span 
class="nt">&lt;</span><span class="na
 <div class="language-js highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="p">.</span><span 
class="nx">ajaxVisualFeedback</span> <span class="p">{</span>
     <span class="nl">width</span><span class="p">:</span> <span 
class="mi">16</span><span class="nx">px</span><span class="p">;</span>
     <span class="nl">height</span><span class="p">:</span> <span 
class="mi">16</span><span class="nx">px</span><span class="p">;</span>
-    <span class="nx">background</span><span class="o">-</span><span 
class="nx">image</span><span class="p">:</span> <span 
class="nf">url</span><span class="p">(</span><span class="dl">'</span><span 
class="s1">../images/indicator.gif</span><span class="dl">'</span><span 
class="p">);</span>
+    <span class="nx">background</span><span class="o">-</span><span 
class="nx">image</span><span class="p">:</span> <span 
class="nx">url</span><span class="p">(</span><span class="dl">'</span><span 
class="s1">../images/indicator.gif</span><span class="dl">'</span><span 
class="p">);</span>
     <span class="nx">background</span><span class="o">-</span><span 
class="nx">repeat</span><span class="p">:</span> <span 
class="nx">no</span><span class="o">-</span><span class="nx">repeat</span><span 
class="p">;</span>
     <span class="nl">float</span><span class="p">:</span> <span 
class="nx">right</span><span class="p">;</span>
 <span class="p">}</span>
@@ -343,21 +495,21 @@ care of hiding validation errors that might be present, 
submit the form via AJAX
   *
   * @param event onSubmit event
   */</span>
-<span class="kd">function</span> <span 
class="nf">ajaxFormValidation</span><span class="p">(</span><span 
class="nx">event</span><span class="p">)</span> <span class="p">{</span>
-    <span class="nx">event</span><span class="p">.</span><span 
class="nf">preventDefault</span><span class="p">();</span>
-    <span class="nf">_removeValidationErrors</span><span class="p">();</span>
-    <span class="kd">var</span> <span class="nx">_form</span> <span 
class="o">=</span> <span class="nf">$</span><span class="p">(</span><span 
class="nx">event</span><span class="p">.</span><span 
class="nx">target</span><span class="p">);</span>
-    <span class="kd">var</span> <span class="nx">_formData</span> <span 
class="o">=</span> <span class="nx">_form</span><span class="p">.</span><span 
class="nf">serialize</span><span class="p">(</span><span 
class="kc">true</span><span class="p">);</span>
+<span class="kd">function</span> <span 
class="nx">ajaxFormValidation</span><span class="p">(</span><span 
class="nx">event</span><span class="p">)</span> <span class="p">{</span>
+    <span class="nx">event</span><span class="p">.</span><span 
class="nx">preventDefault</span><span class="p">();</span>
+    <span class="nx">_removeValidationErrors</span><span class="p">();</span>
+    <span class="kd">var</span> <span class="nx">_form</span> <span 
class="o">=</span> <span class="nx">$</span><span class="p">(</span><span 
class="nx">event</span><span class="p">.</span><span 
class="nx">target</span><span class="p">);</span>
+    <span class="kd">var</span> <span class="nx">_formData</span> <span 
class="o">=</span> <span class="nx">_form</span><span class="p">.</span><span 
class="nx">serialize</span><span class="p">(</span><span 
class="kc">true</span><span class="p">);</span>
     <span class="c1">// prepare visual feedback</span>
     <span class="c1">// you may want to use other elements here</span>
-    <span class="kd">var</span> <span class="nx">originalButton</span> <span 
class="o">=</span> <span class="nx">_form</span><span class="p">.</span><span 
class="nf">find</span><span class="p">(</span><span class="dl">'</span><span 
class="s1">.btn-primary</span><span class="dl">'</span><span class="p">);</span>
+    <span class="kd">var</span> <span class="nx">originalButton</span> <span 
class="o">=</span> <span class="nx">_form</span><span class="p">.</span><span 
class="nx">find</span><span class="p">(</span><span class="dl">'</span><span 
class="s1">.btn-primary</span><span class="dl">'</span><span class="p">);</span>
     <span class="c1">// note: jQuery returns an array-like object</span>
-    <span class="k">if </span><span class="p">(</span><span 
class="nx">originalButton</span> <span class="o">&amp;&amp;</span> <span 
class="nx">originalButton</span><span class="p">.</span><span 
class="nx">length</span> <span class="o">&amp;&amp;</span> <span 
class="nx">originalButton</span><span class="p">.</span><span 
class="nx">length</span> <span class="o">&gt;</span> <span 
class="mi">0</span><span class="p">)</span> <span class="p">{</span>
-        <span class="nx">originalButton</span><span class="p">.</span><span 
class="nf">hide</span><span class="p">();</span>
-        <span class="kd">var</span> <span class="nx">feedbackElement</span> 
<span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span 
class="dl">'</span><span class="s1">&lt;div 
class="ajaxVisualFeedback"&gt;&lt;/div&gt;</span><span class="dl">'</span><span 
class="p">).</span><span class="nf">insertAfter</span><span 
class="p">(</span><span class="nx">originalButton</span><span 
class="p">);</span>
+    <span class="k">if</span> <span class="p">(</span><span 
class="nx">originalButton</span> <span class="o">&amp;&amp;</span> <span 
class="nx">originalButton</span><span class="p">.</span><span 
class="nx">length</span> <span class="o">&amp;&amp;</span> <span 
class="nx">originalButton</span><span class="p">.</span><span 
class="nx">length</span> <span class="o">&gt;</span> <span 
class="mi">0</span><span class="p">)</span> <span class="p">{</span>
+        <span class="nx">originalButton</span><span class="p">.</span><span 
class="nx">hide</span><span class="p">();</span>
+        <span class="kd">var</span> <span class="nx">feedbackElement</span> 
<span class="o">=</span> <span class="nx">$</span><span class="p">(</span><span 
class="dl">'</span><span class="s1">&lt;div 
class="ajaxVisualFeedback"&gt;&lt;/div&gt;</span><span class="dl">'</span><span 
class="p">).</span><span class="nx">insertAfter</span><span 
class="p">(</span><span class="nx">originalButton</span><span 
class="p">);</span>
         <span class="kd">var</span> <span class="nx">restoreFunction</span> 
<span class="o">=</span> <span class="kd">function</span><span 
class="p">()</span> <span class="p">{</span>
-            <span class="nx">originalButton</span><span 
class="p">.</span><span class="nf">show</span><span class="p">();</span>
-            <span class="nx">feedbackElement</span><span 
class="p">.</span><span class="nf">remove</span><span class="p">();</span>
+            <span class="nx">originalButton</span><span 
class="p">.</span><span class="nx">show</span><span class="p">();</span>
+            <span class="nx">feedbackElement</span><span 
class="p">.</span><span class="nx">remove</span><span class="p">();</span>
         <span class="p">}</span>
     <span class="p">}</span>
     <span class="kd">var</span> <span class="nx">options</span> <span 
class="o">=</span> <span class="p">{</span>
@@ -365,48 +517,48 @@ care of hiding validation errors that might be present, 
submit the form via AJAX
         <span class="na">async</span><span class="p">:</span> <span 
class="kc">true</span><span class="p">,</span>
         <span class="na">processData</span><span class="p">:</span> <span 
class="kc">false</span><span class="p">,</span>
         <span class="na">type</span><span class="p">:</span> <span 
class="dl">'</span><span class="s1">POST</span><span class="dl">'</span><span 
class="p">,</span>
-        <span class="na">success</span><span class="p">:</span> <span 
class="nf">function </span><span class="p">(</span><span 
class="nx">response</span><span class="p">,</span> <span 
class="nx">statusText</span><span class="p">,</span> <span 
class="nx">xhr</span><span class="p">)</span> <span class="p">{</span>
-            <span class="k">if </span><span class="p">(</span><span 
class="nx">response</span><span class="p">.</span><span 
class="nx">location</span><span class="p">)</span> <span class="p">{</span>
+        <span class="na">success</span><span class="p">:</span> <span 
class="kd">function</span> <span class="p">(</span><span 
class="nx">response</span><span class="p">,</span> <span 
class="nx">statusText</span><span class="p">,</span> <span 
class="nx">xhr</span><span class="p">)</span> <span class="p">{</span>
+            <span class="k">if</span> <span class="p">(</span><span 
class="nx">response</span><span class="p">.</span><span 
class="nx">location</span><span class="p">)</span> <span class="p">{</span>
                 <span class="c1">// no validation errors</span>
                 <span class="c1">// action has been executed and sent a 
redirect URL wrapped as JSON</span>
                 <span class="c1">// cannot use a normal http-redirect 
(status-code 3xx) as this would be followed by browsers and would not be 
available here</span>
                 <span class="c1">// follow JSON-redirect</span>
                 <span class="nb">window</span><span class="p">.</span><span 
class="nx">location</span><span class="p">.</span><span class="nx">href</span> 
<span class="o">=</span> <span class="nx">response</span><span 
class="p">.</span><span class="nx">location</span><span class="p">;</span>
             <span class="p">}</span> <span class="k">else</span> <span 
class="p">{</span>
-                <span class="k">if </span><span class="p">(</span><span 
class="nx">restoreFunction</span><span class="p">)</span> <span 
class="p">{</span>
-                    <span class="nf">restoreFunction</span><span 
class="p">();</span>
+                <span class="k">if</span> <span class="p">(</span><span 
class="nx">restoreFunction</span><span class="p">)</span> <span 
class="p">{</span>
+                    <span class="nx">restoreFunction</span><span 
class="p">();</span>
                 <span class="p">}</span>
-                <span class="nf">_handleValidationResult</span><span 
class="p">(</span><span class="nx">_form</span><span class="p">,</span> <span 
class="nx">response</span><span class="p">);</span>
+                <span class="nx">_handleValidationResult</span><span 
class="p">(</span><span class="nx">_form</span><span class="p">,</span> <span 
class="nx">response</span><span class="p">);</span>
             <span class="p">}</span>
         <span class="p">},</span>
         <span class="na">error</span><span class="p">:</span> <span 
class="kd">function</span><span class="p">(</span><span 
class="nx">xhr</span><span class="p">,</span> <span 
class="nx">textStatus</span><span class="p">,</span> <span 
class="nx">errorThrown</span><span class="p">)</span> <span class="p">{</span>
-            <span class="k">if </span><span class="p">(</span><span 
class="nx">restoreFunction</span><span class="p">)</span> <span 
class="p">{</span>
-                <span class="nf">restoreFunction</span><span 
class="p">();</span>
+            <span class="k">if</span> <span class="p">(</span><span 
class="nx">restoreFunction</span><span class="p">)</span> <span 
class="p">{</span>
+                <span class="nx">restoreFunction</span><span 
class="p">();</span>
             <span class="p">}</span>
             <span class="c1">// struts sends status code 400 when validation 
errors are present</span>
-            <span class="k">if </span><span class="p">(</span><span 
class="nx">xhr</span><span class="p">.</span><span class="nx">status</span> 
<span class="o">===</span> <span class="mi">400</span><span class="p">)</span> 
<span class="p">{</span>
-                <span class="nf">_handleValidationResult</span><span 
class="p">(</span><span class="nx">_form</span><span class="p">,</span> <span 
class="nx">JSON</span><span class="p">.</span><span 
class="nf">parse</span><span class="p">(</span><span class="nx">xhr</span><span 
class="p">.</span><span class="nx">responseText</span><span class="p">))</span>
+            <span class="k">if</span> <span class="p">(</span><span 
class="nx">xhr</span><span class="p">.</span><span class="nx">status</span> 
<span class="o">===</span> <span class="mi">400</span><span class="p">)</span> 
<span class="p">{</span>
+                <span class="nx">_handleValidationResult</span><span 
class="p">(</span><span class="nx">_form</span><span class="p">,</span> <span 
class="nx">JSON</span><span class="p">.</span><span 
class="nx">parse</span><span class="p">(</span><span class="nx">xhr</span><span 
class="p">.</span><span class="nx">responseText</span><span class="p">))</span>
             <span class="p">}</span> <span class="k">else</span> <span 
class="p">{</span>
                 <span class="c1">// a real error occurred -&gt; show user an 
error message</span>
-                <span class="nf">_handleValidationResult</span><span 
class="p">(</span><span class="nx">_form</span><span class="p">,</span> <span 
class="p">{</span><span class="na">errors</span><span class="p">:</span> <span 
class="p">[</span><span class="dl">'</span><span class="s1">Network or server 
error!</span><span class="dl">'</span><span class="p">]})</span>
+                <span class="nx">_handleValidationResult</span><span 
class="p">(</span><span class="nx">_form</span><span class="p">,</span> <span 
class="p">{</span><span class="na">errors</span><span class="p">:</span> <span 
class="p">[</span><span class="dl">'</span><span class="s1">Network or server 
error!</span><span class="dl">'</span><span class="p">]})</span>
             <span class="p">}</span>
                <span class="p">}</span>
     <span class="p">}</span>
     <span class="c1">// send request, after delay to make sure everybody 
notices the visual feedback :)</span>
-    <span class="nb">window</span><span class="p">.</span><span 
class="nf">setTimeout</span><span class="p">(</span><span 
class="kd">function</span><span class="p">()</span> <span class="p">{</span>
+    <span class="nb">window</span><span class="p">.</span><span 
class="nx">setTimeout</span><span class="p">(</span><span 
class="kd">function</span><span class="p">()</span> <span class="p">{</span>
         <span class="kd">var</span> <span class="nx">url</span> <span 
class="o">=</span> <span class="nx">_form</span><span class="p">[</span><span 
class="mi">0</span><span class="p">].</span><span class="nx">action</span><span 
class="p">;</span>
-        <span class="nx">jQuery</span><span class="p">.</span><span 
class="nf">ajax</span><span class="p">(</span><span class="nx">url</span><span 
class="p">,</span> <span class="nx">options</span><span class="p">);</span>
+        <span class="nx">jQuery</span><span class="p">.</span><span 
class="nx">ajax</span><span class="p">(</span><span class="nx">url</span><span 
class="p">,</span> <span class="nx">options</span><span class="p">);</span>
     <span class="p">},</span> <span class="mi">1000</span><span 
class="p">);</span>
 <span class="p">}</span>
 <span class="cm">/**
  * Removes validation errors from HTML DOM.
  */</span>
-<span class="kd">function</span> <span 
class="nf">_removeValidationErrors</span><span class="p">()</span> <span 
class="p">{</span>
+<span class="kd">function</span> <span 
class="nx">_removeValidationErrors</span><span class="p">()</span> <span 
class="p">{</span>
     <span class="c1">// action errors</span>
     <span class="c1">// you might want to use a custom ID here</span>
-    <span class="nf">$</span><span class="p">(</span><span 
class="dl">'</span><span class="s1">ul.errorMessage li</span><span 
class="dl">'</span><span class="p">).</span><span class="nf">remove</span><span 
class="p">();</span>
+    <span class="nx">$</span><span class="p">(</span><span 
class="dl">'</span><span class="s1">ul.errorMessage li</span><span 
class="dl">'</span><span class="p">).</span><span class="nx">remove</span><span 
class="p">();</span>
     <span class="c1">// field errors</span>
-    <span class="nf">$</span><span class="p">(</span><span 
class="dl">'</span><span class="s1">div.errorMessage</span><span 
class="dl">'</span><span class="p">).</span><span class="nf">remove</span><span 
class="p">();</span>
+    <span class="nx">$</span><span class="p">(</span><span 
class="dl">'</span><span class="s1">div.errorMessage</span><span 
class="dl">'</span><span class="p">).</span><span class="nx">remove</span><span 
class="p">();</span>
 <span class="p">}</span>
 <span class="cm">/**
  * Incorporates validation errors in HTML DOM.
@@ -414,32 +566,32 @@ care of hiding validation errors that might be present, 
submit the form via AJAX
  * @param form Form containing errors.
  * @param errors Errors from server.
  */</span>
-<span class="kd">function</span> <span 
class="nf">_handleValidationResult</span><span class="p">(</span><span 
class="nx">form</span><span class="p">,</span> <span 
class="nx">errors</span><span class="p">)</span> <span class="p">{</span>
+<span class="kd">function</span> <span 
class="nx">_handleValidationResult</span><span class="p">(</span><span 
class="nx">form</span><span class="p">,</span> <span 
class="nx">errors</span><span class="p">)</span> <span class="p">{</span>
     <span class="c1">// action errors</span>
-    <span class="k">if </span><span class="p">(</span><span 
class="nx">errors</span><span class="p">.</span><span 
class="nx">errors</span><span class="p">)</span> <span class="p">{</span>
+    <span class="k">if</span> <span class="p">(</span><span 
class="nx">errors</span><span class="p">.</span><span 
class="nx">errors</span><span class="p">)</span> <span class="p">{</span>
         <span class="c1">// you might want to use a custom ID here</span>
-        <span class="kd">var</span> <span class="nx">errorContainer</span> 
<span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span 
class="dl">'</span><span class="s1">ul.errorMessage</span><span 
class="dl">'</span><span class="p">);</span>
-        <span class="nx">$</span><span class="p">.</span><span 
class="nf">each</span><span class="p">(</span><span 
class="nx">errors</span><span class="p">.</span><span 
class="nx">errors</span><span class="p">,</span> <span 
class="kd">function</span><span class="p">(</span><span 
class="nx">index</span><span class="p">,</span> <span 
class="nx">errorMsg</span><span class="p">)</span> <span class="p">{</span>
-            <span class="kd">var</span> <span class="nx">li</span> <span 
class="o">=</span> <span class="nf">$</span><span class="p">(</span><span 
class="dl">'</span><span 
class="s1">&lt;li&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;</span><span 
class="dl">'</span><span class="p">);</span>
-            <span class="nx">li</span><span class="p">.</span><span 
class="nf">text</span><span class="p">(</span><span 
class="nx">errorMsg</span><span class="p">);</span> <span class="c1">// use 
text() for security reasons</span>
-            <span class="nx">errorContainer</span><span 
class="p">.</span><span class="nf">append</span><span class="p">(</span><span 
class="nx">li</span><span class="p">);</span>
+        <span class="kd">var</span> <span class="nx">errorContainer</span> 
<span class="o">=</span> <span class="nx">$</span><span class="p">(</span><span 
class="dl">'</span><span class="s1">ul.errorMessage</span><span 
class="dl">'</span><span class="p">);</span>
+        <span class="nx">$</span><span class="p">.</span><span 
class="nx">each</span><span class="p">(</span><span 
class="nx">errors</span><span class="p">.</span><span 
class="nx">errors</span><span class="p">,</span> <span 
class="kd">function</span><span class="p">(</span><span 
class="nx">index</span><span class="p">,</span> <span 
class="nx">errorMsg</span><span class="p">)</span> <span class="p">{</span>
+            <span class="kd">var</span> <span class="nx">li</span> <span 
class="o">=</span> <span class="nx">$</span><span class="p">(</span><span 
class="dl">'</span><span 
class="s1">&lt;li&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;</span><span 
class="dl">'</span><span class="p">);</span>
+            <span class="nx">li</span><span class="p">.</span><span 
class="nx">text</span><span class="p">(</span><span 
class="nx">errorMsg</span><span class="p">);</span> <span class="c1">// use 
text() for security reasons</span>
+            <span class="nx">errorContainer</span><span 
class="p">.</span><span class="nx">append</span><span class="p">(</span><span 
class="nx">li</span><span class="p">);</span>
         <span class="p">});</span>
     <span class="p">}</span>
     <span class="c1">// field errors</span>
-    <span class="k">if </span><span class="p">(</span><span 
class="nx">errors</span><span class="p">.</span><span 
class="nx">fieldErrors</span><span class="p">)</span> <span class="p">{</span>
-        <span class="nx">$</span><span class="p">.</span><span 
class="nf">each</span><span class="p">(</span><span 
class="nx">errors</span><span class="p">.</span><span 
class="nx">fieldErrors</span><span class="p">,</span> <span 
class="kd">function</span><span class="p">(</span><span 
class="nx">fieldName</span><span class="p">,</span> <span 
class="nx">errorMsg</span><span class="p">)</span> <span class="p">{</span>
-            <span class="kd">var</span> <span class="nx">td</span> <span 
class="o">=</span> <span class="nf">$</span><span class="p">(</span><span 
class="dl">'</span><span class="s1">td[data-error-for-fieldname="</span><span 
class="dl">'</span> <span class="o">+</span> <span class="nx">fieldName</span> 
<span class="o">+</span> <span class="dl">'</span><span 
class="s1">"]</span><span class="dl">'</span><span class="p">);</span>
-            <span class="k">if </span><span class="p">(</span><span 
class="nx">td</span><span class="p">)</span> <span class="p">{</span>
-                <span class="kd">var</span> <span class="nx">div</span> <span 
class="o">=</span> <span class="nf">$</span><span class="p">(</span><span 
class="dl">'</span><span class="s1">&lt;div 
class="errorMessage"&gt;&lt;/div&gt;</span><span class="dl">'</span><span 
class="p">);</span>
-                <span class="nx">div</span><span class="p">.</span><span 
class="nf">text</span><span class="p">(</span><span 
class="nx">errorMsg</span><span class="p">);</span> <span class="c1">// use 
text() for security reasons</span>
-                <span class="nx">td</span><span class="p">.</span><span 
class="nf">append</span><span class="p">(</span><span 
class="nx">div</span><span class="p">);</span>
+    <span class="k">if</span> <span class="p">(</span><span 
class="nx">errors</span><span class="p">.</span><span 
class="nx">fieldErrors</span><span class="p">)</span> <span class="p">{</span>
+        <span class="nx">$</span><span class="p">.</span><span 
class="nx">each</span><span class="p">(</span><span 
class="nx">errors</span><span class="p">.</span><span 
class="nx">fieldErrors</span><span class="p">,</span> <span 
class="kd">function</span><span class="p">(</span><span 
class="nx">fieldName</span><span class="p">,</span> <span 
class="nx">errorMsg</span><span class="p">)</span> <span class="p">{</span>
+            <span class="kd">var</span> <span class="nx">td</span> <span 
class="o">=</span> <span class="nx">$</span><span class="p">(</span><span 
class="dl">'</span><span class="s1">td[data-error-for-fieldname="</span><span 
class="dl">'</span> <span class="o">+</span> <span class="nx">fieldName</span> 
<span class="o">+</span> <span class="dl">'</span><span 
class="s1">"]</span><span class="dl">'</span><span class="p">);</span>
+            <span class="k">if</span> <span class="p">(</span><span 
class="nx">td</span><span class="p">)</span> <span class="p">{</span>
+                <span class="kd">var</span> <span class="nx">div</span> <span 
class="o">=</span> <span class="nx">$</span><span class="p">(</span><span 
class="dl">'</span><span class="s1">&lt;div 
class="errorMessage"&gt;&lt;/div&gt;</span><span class="dl">'</span><span 
class="p">);</span>
+                <span class="nx">div</span><span class="p">.</span><span 
class="nx">text</span><span class="p">(</span><span 
class="nx">errorMsg</span><span class="p">);</span> <span class="c1">// use 
text() for security reasons</span>
+                <span class="nx">td</span><span class="p">.</span><span 
class="nx">append</span><span class="p">(</span><span 
class="nx">div</span><span class="p">);</span>
             <span class="p">}</span>
         <span class="p">});</span>
     <span class="p">}</span>
 <span class="p">}</span>
 <span class="c1">// register onSubmit handler</span>
-<span class="nf">$</span><span class="p">(</span><span 
class="nb">window</span><span class="p">).</span><span 
class="nf">bind</span><span class="p">(</span><span class="dl">'</span><span 
class="s1">load</span><span class="dl">'</span><span class="p">,</span> <span 
class="kd">function</span><span class="p">()</span> <span class="p">{</span>
-    <span class="nf">$</span><span class="p">(</span><span 
class="dl">'</span><span class="s1">form</span><span class="dl">'</span><span 
class="p">).</span><span class="nf">bind</span><span class="p">(</span><span 
class="dl">'</span><span class="s1">submit</span><span class="dl">'</span><span 
class="p">,</span> <span class="nx">ajaxFormValidation</span><span 
class="p">);</span>
+<span class="nx">$</span><span class="p">(</span><span 
class="nb">window</span><span class="p">).</span><span 
class="nx">bind</span><span class="p">(</span><span class="dl">'</span><span 
class="s1">load</span><span class="dl">'</span><span class="p">,</span> <span 
class="kd">function</span><span class="p">()</span> <span class="p">{</span>
+    <span class="nx">$</span><span class="p">(</span><span 
class="dl">'</span><span class="s1">form</span><span class="dl">'</span><span 
class="p">).</span><span class="nx">bind</span><span class="p">(</span><span 
class="dl">'</span><span class="s1">submit</span><span class="dl">'</span><span 
class="p">,</span> <span class="nx">ajaxFormValidation</span><span 
class="p">);</span>
 <span class="p">});</span>
 </code></pre></div></div>
 
@@ -510,3 +662,42 @@ the response - is needed in portlet environment</li>
 
 <p><img src="struts2-ajax-vali-flow.png" alt="Flow chart " /> 
  </p>
+
+  </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/portlet/struts-2-portlet-tutorial.html 
b/content/plugins/portlet/struts-2-portlet-tutorial.html
index 83fb32289..ea922e13d 100644
--- a/content/plugins/portlet/struts-2-portlet-tutorial.html
+++ b/content/plugins/portlet/struts-2-portlet-tutorial.html
@@ -1,4 +1,156 @@
-<h1 id="struts-2-portlet-tutorial">Struts 2 Portlet Tutorial</h1>
+<!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>Struts 2 Portlet Tutorial</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="/css/syntax.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>
+
+  <!-- Matomo -->
+  <script>
+    var _paq = window._paq = window._paq || [];
+    /* tracker methods like "setCustomDimension" should be called before 
"trackPageView" */
+    /* We explicitly disable cookie tracking to avoid privacy issues */
+    _paq.push(['disableCookies']);
+    _paq.push(['trackPageView']);
+    _paq.push(['enableLinkTracking']);
+    (function() {
+      var u="//analytics.apache.org/";
+      _paq.push(['setTrackerUrl', u+'matomo.php']);
+      _paq.push(['setSiteId', '41']);
+      var d=document, g=d.createElement('script'), 
s=d.getElementsByTagName('script')[0];
+      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+    })();
+  </script>
+  <!-- End Matomo Code -->
+</head>
+<body>
+
+<a href="https://github.com/apache/struts"; class="github-ribbon">
+  <img decoding="async" loading="lazy" style="position: absolute; right: 0; 
border: 0;" width="149" height="149" 
src="https://github.blog/wp-content/uploads/2008/12/forkme_right_red_aa0000.png?resize=149%2C149";
 class="attachment-full size-full" alt="Fork me on GitHub" data-recalc-dims="1">
+</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-2023.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><a href="/commercial-support.html">Commercial 
Support</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/portlet/struts-2-portlet-tutorial.md";
 title="Edit this page on GitHub">Edit on GitHub</a>
+    
+    <a href="index" title="back to Portlet Plugin"><< back to Portlet 
Plugin</a>
+    
+    <h1 id="struts-2-portlet-tutorial">Struts 2 Portlet Tutorial</h1>
 
 <h2 id="creating-a-simple-bookmark-portlet">Creating a simple Bookmark 
Portlet</h2>
 
@@ -604,3 +756,42 @@ If you have not used Struts 2 before, please check out 
some of the other Struts
   <li><a href="http://portletwork.blogspot.com";>Author’s blog about portlet 
related development</a></li>
   <li><a 
href="http://struts.apache.org/2.x/docs/portlet-tutorial-webwork-22";>Old 
tutorial for WebWork 2</a></li>
 </ul>
+
+  </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/spring/index.html 
b/content/plugins/spring/index.html
index d3cc0256b..1bcef6a2c 100644
--- a/content/plugins/spring/index.html
+++ b/content/plugins/spring/index.html
@@ -360,8 +360,6 @@ Action did not need to be changed, because it can be 
autowired.</p>
 <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>
-
 <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 
diff --git a/content/tag-developers/ajax-and-javascript-recipes.html 
b/content/tag-developers/ajax-and-javascript-recipes.html
index c865b3e65..f162a0c2c 100644
--- a/content/tag-developers/ajax-and-javascript-recipes.html
+++ b/content/tag-developers/ajax-and-javascript-recipes.html
@@ -386,8 +386,8 @@ dojo.event.topic.subscribe("/before", function(event, 
widget){
 <h3 id="publish-a-topic-after-the-request">Publish a topic after the 
request</h3>
 
 <div class="language-jsp highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="nt">&lt;script </span><span 
class="na">type=</span><span class="s">"text/javascript"</span><span 
class="nt">&gt;</span>
-<span class="nx">dojo</span><span class="p">.</span><span 
class="nx">event</span><span class="p">.</span><span 
class="nx">topic</span><span class="p">.</span><span 
class="nf">subscribe</span><span class="p">(</span><span 
class="dl">"</span><span class="s2">/after</span><span class="dl">"</span><span 
class="p">,</span> <span class="kd">function</span><span 
class="p">(</span><span class="nx">data</span><span class="p">,</span> <span 
class="nx">request</span><span class="p">,</span> <span c [...]
-   <span class="nf">alert</span><span class="p">(</span><span 
class="dl">'</span><span class="s1">inside a topic event. after 
request</span><span class="dl">'</span><span class="p">);</span>
+<span class="nx">dojo</span><span class="p">.</span><span 
class="nx">event</span><span class="p">.</span><span 
class="nx">topic</span><span class="p">.</span><span 
class="nx">subscribe</span><span class="p">(</span><span 
class="dl">"</span><span class="s2">/after</span><span class="dl">"</span><span 
class="p">,</span> <span class="kd">function</span><span 
class="p">(</span><span class="nx">data</span><span class="p">,</span> <span 
class="nx">request</span><span class="p">,</span> <span c [...]
+   <span class="nx">alert</span><span class="p">(</span><span 
class="dl">'</span><span class="s1">inside a topic event. after 
request</span><span class="dl">'</span><span class="p">);</span>
    <span class="c1">//data : text returned from request</span>
    <span class="c1">//request: XMLHttpRequest object</span>
    <span class="c1">//widget: widget that published the topic</span>
@@ -408,8 +408,8 @@ dojo.event.topic.subscribe("/before", function(event, 
widget){
 <h3 id="publish-a-topic-on-error">Publish a topic on error</h3>
 
 <div class="language-jsp highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="nt">&lt;script </span><span 
class="na">type=</span><span class="s">"text/javascript"</span><span 
class="nt">&gt;</span>
-<span class="nx">dojo</span><span class="p">.</span><span 
class="nx">event</span><span class="p">.</span><span 
class="nx">topic</span><span class="p">.</span><span 
class="nf">subscribe</span><span class="p">(</span><span 
class="dl">"</span><span class="s2">/error</span><span class="dl">"</span><span 
class="p">,</span> <span class="kd">function</span><span 
class="p">(</span><span class="nx">error</span><span class="p">,</span> <span 
class="nx">request</span><span class="p">,</span> <span  [...]
-   <span class="nf">alert</span><span class="p">(</span><span 
class="dl">'</span><span class="s1">inside a topic event. on error</span><span 
class="dl">'</span><span class="p">);</span>
+<span class="nx">dojo</span><span class="p">.</span><span 
class="nx">event</span><span class="p">.</span><span 
class="nx">topic</span><span class="p">.</span><span 
class="nx">subscribe</span><span class="p">(</span><span 
class="dl">"</span><span class="s2">/error</span><span class="dl">"</span><span 
class="p">,</span> <span class="kd">function</span><span 
class="p">(</span><span class="nx">error</span><span class="p">,</span> <span 
class="nx">request</span><span class="p">,</span> <span  [...]
+   <span class="nx">alert</span><span class="p">(</span><span 
class="dl">'</span><span class="s1">inside a topic event. on error</span><span 
class="dl">'</span><span class="p">);</span>
    <span class="c1">//error : error object (error.message has the error 
message)</span>
    <span class="c1">//request: XMLHttpRequest object</span>
    <span class="c1">//widget: widget that published the topic</span>
@@ -445,8 +445,8 @@ dojo.event.topic.subscribe("/before", function(event, 
widget){
 <h3 id="prevent-a-request">Prevent a request</h3>
 
 <div class="language-jsp highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="nt">&lt;script </span><span 
class="na">type=</span><span class="s">"text/javascript"</span><span 
class="nt">&gt;</span>
-<span class="nx">dojo</span><span class="p">.</span><span 
class="nx">event</span><span class="p">.</span><span 
class="nx">topic</span><span class="p">.</span><span 
class="nf">subscribe</span><span class="p">(</span><span 
class="dl">"</span><span class="s2">/before</span><span 
class="dl">"</span><span class="p">,</span> <span 
class="kd">function</span><span class="p">(</span><span 
class="nx">event</span><span class="p">,</span> <span 
class="nx">widget</span><span class="p">){</span>
-   <span class="nf">alert</span><span class="p">(</span><span 
class="dl">'</span><span class="s1">I will stop this request</span><span 
class="dl">'</span><span class="p">);</span>
+<span class="nx">dojo</span><span class="p">.</span><span 
class="nx">event</span><span class="p">.</span><span 
class="nx">topic</span><span class="p">.</span><span 
class="nx">subscribe</span><span class="p">(</span><span 
class="dl">"</span><span class="s2">/before</span><span 
class="dl">"</span><span class="p">,</span> <span 
class="kd">function</span><span class="p">(</span><span 
class="nx">event</span><span class="p">,</span> <span 
class="nx">widget</span><span class="p">){</span>
+   <span class="nx">alert</span><span class="p">(</span><span 
class="dl">'</span><span class="s1">I will stop this request</span><span 
class="dl">'</span><span class="p">);</span>
    <span class="nx">event</span><span class="p">.</span><span 
class="nx">cancel</span> <span class="o">=</span> <span 
class="kc">true</span><span class="p">;</span>
 <span class="p">});</span>
 <span class="nt">&lt;/script&gt;</span>
@@ -589,26 +589,26 @@ dojo.event.topic.subscribe("/before", function(event, 
widget){
 <h3 id="setget-value-using-javascript">Set/Get value using JavaScript</h3>
 
 <div class="language-jsp highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="nt">&lt;script </span><span 
class="na">type=</span><span class="s">"text/javascript"</span><span 
class="nt">&gt;</span>
-  <span class="kd">function</span> <span class="nf">setValue</span><span 
class="p">()</span> <span class="p">{</span>
-     <span class="kd">var</span> <span class="nx">picker</span> <span 
class="o">=</span> <span class="nx">dojo</span><span class="p">.</span><span 
class="nx">widget</span><span class="p">.</span><span 
class="nf">byId</span><span class="p">(</span><span class="dl">"</span><span 
class="s2">picker</span><span class="dl">"</span><span class="p">);</span>
+  <span class="kd">function</span> <span class="nx">setValue</span><span 
class="p">()</span> <span class="p">{</span>
+     <span class="kd">var</span> <span class="nx">picker</span> <span 
class="o">=</span> <span class="nx">dojo</span><span class="p">.</span><span 
class="nx">widget</span><span class="p">.</span><span 
class="nx">byId</span><span class="p">(</span><span class="dl">"</span><span 
class="s2">picker</span><span class="dl">"</span><span class="p">);</span>
      
      <span class="c1">//string value</span>
-     <span class="nx">picker</span><span class="p">.</span><span 
class="nf">setValue</span><span class="p">(</span><span 
class="dl">'</span><span class="s1">2007-01-01</span><span 
class="dl">'</span><span class="p">);</span>
+     <span class="nx">picker</span><span class="p">.</span><span 
class="nx">setValue</span><span class="p">(</span><span 
class="dl">'</span><span class="s1">2007-01-01</span><span 
class="dl">'</span><span class="p">);</span>
      
      <span class="c1">//Date value</span>
-     <span class="nx">picker</span><span class="p">.</span><span 
class="nf">setValue</span><span class="p">(</span><span class="k">new</span> 
<span class="nc">Date</span><span class="p">());</span>
+     <span class="nx">picker</span><span class="p">.</span><span 
class="nx">setValue</span><span class="p">(</span><span class="k">new</span> 
<span class="nb">Date</span><span class="p">());</span>
   <span class="p">}</span>
   
-  <span class="kd">function</span> <span class="nf">showValue</span><span 
class="p">()</span> <span class="p">{</span>
-     <span class="kd">var</span> <span class="nx">picker</span> <span 
class="o">=</span> <span class="nx">dojo</span><span class="p">.</span><span 
class="nx">widget</span><span class="p">.</span><span 
class="nf">byId</span><span class="p">(</span><span class="dl">"</span><span 
class="s2">picker</span><span class="dl">"</span><span class="p">);</span>
+  <span class="kd">function</span> <span class="nx">showValue</span><span 
class="p">()</span> <span class="p">{</span>
+     <span class="kd">var</span> <span class="nx">picker</span> <span 
class="o">=</span> <span class="nx">dojo</span><span class="p">.</span><span 
class="nx">widget</span><span class="p">.</span><span 
class="nx">byId</span><span class="p">(</span><span class="dl">"</span><span 
class="s2">picker</span><span class="dl">"</span><span class="p">);</span>
      
      <span class="c1">//string value</span>
-     <span class="kd">var</span> <span class="nx">stringValue</span> <span 
class="o">=</span> <span class="nx">picker</span><span class="p">.</span><span 
class="nf">getValue</span><span class="p">();</span>
-     <span class="nf">alert</span><span class="p">(</span><span 
class="nx">stringValue</span><span class="p">);</span>
+     <span class="kd">var</span> <span class="nx">stringValue</span> <span 
class="o">=</span> <span class="nx">picker</span><span class="p">.</span><span 
class="nx">getValue</span><span class="p">();</span>
+     <span class="nx">alert</span><span class="p">(</span><span 
class="nx">stringValue</span><span class="p">);</span>
       
      <span class="c1">//date value</span>
-     <span class="kd">var</span> <span class="nx">dateValue</span> <span 
class="o">=</span> <span class="nx">picker</span><span class="p">.</span><span 
class="nf">getDate</span><span class="p">();</span>
-     <span class="nf">alert</span><span class="p">(</span><span 
class="nx">dateValue</span><span class="p">);</span>
+     <span class="kd">var</span> <span class="nx">dateValue</span> <span 
class="o">=</span> <span class="nx">picker</span><span class="p">.</span><span 
class="nx">getDate</span><span class="p">();</span>
+     <span class="nx">alert</span><span class="p">(</span><span 
class="nx">dateValue</span><span class="p">);</span>
   <span class="p">}</span>
 <span class="nt">&lt;/script&gt;</span>
 
@@ -623,8 +623,8 @@ dojo.event.topic.subscribe("/before", function(event, 
widget){
 <h3 id="publish-topic-when-value-changes">Publish topic when value changes</h3>
 
 <div class="language-jsp highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="nt">&lt;script </span><span 
class="na">type=</span><span class="s">"text/javascript"</span><span 
class="nt">&gt;</span>
-  <span class="nx">dojo</span><span class="p">.</span><span 
class="nx">event</span><span class="p">.</span><span 
class="nx">topic</span><span class="p">.</span><span 
class="nf">subscribe</span><span class="p">(</span><span 
class="dl">"</span><span class="s2">/value</span><span class="dl">"</span><span 
class="p">,</span> <span class="kd">function</span><span 
class="p">(</span><span class="nx">text</span><span class="p">,</span> <span 
class="nx">date</span><span class="p">,</span> <span cl [...]
-      <span class="nf">alert</span><span class="p">(</span><span 
class="dl">'</span><span class="s1">value changed</span><span 
class="dl">'</span><span class="p">);</span>
+  <span class="nx">dojo</span><span class="p">.</span><span 
class="nx">event</span><span class="p">.</span><span 
class="nx">topic</span><span class="p">.</span><span 
class="nx">subscribe</span><span class="p">(</span><span 
class="dl">"</span><span class="s2">/value</span><span class="dl">"</span><span 
class="p">,</span> <span class="kd">function</span><span 
class="p">(</span><span class="nx">text</span><span class="p">,</span> <span 
class="nx">date</span><span class="p">,</span> <span cl [...]
+      <span class="nx">alert</span><span class="p">(</span><span 
class="dl">'</span><span class="s1">value changed</span><span 
class="dl">'</span><span class="p">);</span>
       <span class="c1">//textEntered: String entered in the textbox</span>
       <span class="c1">//date: JavaScript Date object with the value 
selected</span>
       <span class="c1">//widget: widget that published the topic </span>
@@ -721,15 +721,15 @@ dojo.event.topic.subscribe("/before", function(event, 
widget){
 <h3 id="enabledisable-tabs-using-javascript">Enable/Disable tabs using 
JavaScript</h3>
 
 <div class="language-jsp highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="nt">&lt;script </span><span 
class="na">type=</span><span class="s">"text/javascript"</span><span 
class="nt">&gt;</span>
-   <span class="kd">function</span> <span class="nf">enableTab</span><span 
class="p">(</span><span class="nx">param</span><span class="p">)</span> <span 
class="p">{</span>
-      <span class="kd">var</span> <span class="nx">tabContainer</span> <span 
class="o">=</span> <span class="nx">dojo</span><span class="p">.</span><span 
class="nx">widget</span><span class="p">.</span><span 
class="nf">byId</span><span class="p">(</span><span class="dl">'</span><span 
class="s1">tabContainer</span><span class="dl">'</span><span class="p">);</span>
-      <span class="nx">tabContainer</span><span class="p">.</span><span 
class="nf">enableTab</span><span class="p">(</span><span 
class="nx">param</span><span class="p">);</span>
+   <span class="kd">function</span> <span class="nx">enableTab</span><span 
class="p">(</span><span class="nx">param</span><span class="p">)</span> <span 
class="p">{</span>
+      <span class="kd">var</span> <span class="nx">tabContainer</span> <span 
class="o">=</span> <span class="nx">dojo</span><span class="p">.</span><span 
class="nx">widget</span><span class="p">.</span><span 
class="nx">byId</span><span class="p">(</span><span class="dl">'</span><span 
class="s1">tabContainer</span><span class="dl">'</span><span class="p">);</span>
+      <span class="nx">tabContainer</span><span class="p">.</span><span 
class="nx">enableTab</span><span class="p">(</span><span 
class="nx">param</span><span class="p">);</span>
    <span class="p">}</span>
     
    
-   <span class="kd">function</span> <span class="nf">disableTab</span><span 
class="p">(</span><span class="nx">param</span><span class="p">)</span> <span 
class="p">{</span>
-      <span class="kd">var</span> <span class="nx">tabContainer</span> <span 
class="o">=</span> <span class="nx">dojo</span><span class="p">.</span><span 
class="nx">widget</span><span class="p">.</span><span 
class="nf">byId</span><span class="p">(</span><span class="dl">'</span><span 
class="s1">tabContainer</span><span class="dl">'</span><span class="p">);</span>
-      <span class="nx">tabContainer</span><span class="p">.</span><span 
class="nf">disableTab</span><span class="p">(</span><span 
class="nx">param</span><span class="p">);</span>
+   <span class="kd">function</span> <span class="nx">disableTab</span><span 
class="p">(</span><span class="nx">param</span><span class="p">)</span> <span 
class="p">{</span>
+      <span class="kd">var</span> <span class="nx">tabContainer</span> <span 
class="o">=</span> <span class="nx">dojo</span><span class="p">.</span><span 
class="nx">widget</span><span class="p">.</span><span 
class="nx">byId</span><span class="p">(</span><span class="dl">'</span><span 
class="s1">tabContainer</span><span class="dl">'</span><span class="p">);</span>
+      <span class="nx">tabContainer</span><span class="p">.</span><span 
class="nx">disableTab</span><span class="p">(</span><span 
class="nx">param</span><span class="p">);</span>
    <span class="p">}</span>
 <span class="nt">&lt;/script&gt;</span>
 
@@ -782,12 +782,12 @@ dojo.event.topic.subscribe("/before", function(event, 
widget){
 <h3 id="publish-topics-when-tab-is-selected">Publish topics when tab is 
selected</h3>
 
 <div class="language-jsp highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="nt">&lt;script </span><span 
class="na">type=</span><span class="s">"text/javascript"</span><span 
class="nt">&gt;</span>
-   <span class="nx">dojo</span><span class="p">.</span><span 
class="nx">event</span><span class="p">.</span><span 
class="nx">topic</span><span class="p">.</span><span 
class="nf">subscribe</span><span class="p">(</span><span 
class="dl">'</span><span class="s1">/before</span><span 
class="dl">'</span><span class="p">,</span> <span 
class="kd">function</span><span class="p">(</span><span 
class="nx">event</span><span class="p">,</span> <span 
class="nx">tab</span><span class="p">,</span> <span  [...]
-      <span class="nf">alert</span><span class="p">(</span><span 
class="dl">"</span><span class="s2">Before selecting tab</span><span 
class="dl">"</span><span class="p">);</span>
+   <span class="nx">dojo</span><span class="p">.</span><span 
class="nx">event</span><span class="p">.</span><span 
class="nx">topic</span><span class="p">.</span><span 
class="nx">subscribe</span><span class="p">(</span><span 
class="dl">'</span><span class="s1">/before</span><span 
class="dl">'</span><span class="p">,</span> <span 
class="kd">function</span><span class="p">(</span><span 
class="nx">event</span><span class="p">,</span> <span 
class="nx">tab</span><span class="p">,</span> <span  [...]
+      <span class="nx">alert</span><span class="p">(</span><span 
class="dl">"</span><span class="s2">Before selecting tab</span><span 
class="dl">"</span><span class="p">);</span>
    <span class="p">});</span>
 
-   <span class="nx">dojo</span><span class="p">.</span><span 
class="nx">event</span><span class="p">.</span><span 
class="nx">topic</span><span class="p">.</span><span 
class="nf">subscribe</span><span class="p">(</span><span 
class="dl">'</span><span class="s1">/after</span><span class="dl">'</span><span 
class="p">,</span> <span class="kd">function</span><span 
class="p">(</span><span class="nx">tab</span><span class="p">,</span> <span 
class="nx">tabContainer</span><span class="p">)</span>  [...]
-      <span class="nf">alert</span><span class="p">(</span><span 
class="dl">"</span><span class="s2">After tab was selected</span><span 
class="dl">"</span><span class="p">);</span>
+   <span class="nx">dojo</span><span class="p">.</span><span 
class="nx">event</span><span class="p">.</span><span 
class="nx">topic</span><span class="p">.</span><span 
class="nx">subscribe</span><span class="p">(</span><span 
class="dl">'</span><span class="s1">/after</span><span class="dl">'</span><span 
class="p">,</span> <span class="kd">function</span><span 
class="p">(</span><span class="nx">tab</span><span class="p">,</span> <span 
class="nx">tabContainer</span><span class="p">)</span>  [...]
+      <span class="nx">alert</span><span class="p">(</span><span 
class="dl">"</span><span class="s2">After tab was selected</span><span 
class="dl">"</span><span class="p">);</span>
    <span class="p">});</span>
 <span class="nt">&lt;/script&gt;</span>
 <span class="nt">&lt;sx:tabbedpanel </span><span 
class="na">beforeSelectTabNotifyTopics=</span><span 
class="s">"/before"</span><span class="na"> 
afterSelectTabNotifyTopics=</span><span class="s">"/after"</span><span 
class="na"> id=</span><span class="s">"tabContainer"</span><span 
class="nt">&gt;</span>
@@ -803,9 +803,9 @@ dojo.event.topic.subscribe("/before", function(event, 
widget){
 <h3 id="select-tab-using-javascript">Select tab using JavaScript</h3>
 
 <div class="language-jsp highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="nt">&lt;script </span><span 
class="na">type=</span><span class="s">"text/javascript"</span><span 
class="nt">&gt;</span>
-   <span class="kd">function</span> <span class="nf">selectTab</span><span 
class="p">(</span><span class="nx">id</span><span class="p">)</span> <span 
class="p">{</span>
-     <span class="kd">var</span> <span class="nx">tabContainer</span> <span 
class="o">=</span> <span class="nx">dojo</span><span class="p">.</span><span 
class="nx">widget</span><span class="p">.</span><span 
class="nf">byId</span><span class="p">(</span><span class="dl">"</span><span 
class="s2">tabContainer</span><span class="dl">"</span><span class="p">);</span>
-     <span class="nx">tabContainer</span><span class="p">.</span><span 
class="nf">selectTab</span><span class="p">(</span><span 
class="nx">id</span><span class="p">);</span>
+   <span class="kd">function</span> <span class="nx">selectTab</span><span 
class="p">(</span><span class="nx">id</span><span class="p">)</span> <span 
class="p">{</span>
+     <span class="kd">var</span> <span class="nx">tabContainer</span> <span 
class="o">=</span> <span class="nx">dojo</span><span class="p">.</span><span 
class="nx">widget</span><span class="p">.</span><span 
class="nx">byId</span><span class="p">(</span><span class="dl">"</span><span 
class="s2">tabContainer</span><span class="dl">"</span><span class="p">);</span>
+     <span class="nx">tabContainer</span><span class="p">.</span><span 
class="nx">selectTab</span><span class="p">(</span><span 
class="nx">id</span><span class="p">);</span>
    <span class="p">}</span>
 <span class="nt">&lt;/script&gt;</span>
 <span class="nt">&lt;sx:tabbedpanel </span><span class="na">id=</span><span 
class="s">"tabContainer"</span><span class="nt">&gt;</span>
@@ -824,7 +824,7 @@ dojo.event.topic.subscribe("/before", function(event, 
widget){
 <h3 id="prevent-tab-2-from-being-selected">Prevent tab 2 from being 
selected</h3>
 
 <div class="language-jsp highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="nt">&lt;script </span><span 
class="na">type=</span><span class="s">"text/javascript"</span><span 
class="nt">&gt;</span>
-   <span class="nx">dojo</span><span class="p">.</span><span 
class="nx">event</span><span class="p">.</span><span 
class="nx">topic</span><span class="p">.</span><span 
class="nf">subscribe</span><span class="p">(</span><span 
class="dl">'</span><span class="s1">/before</span><span 
class="dl">'</span><span class="p">,</span> <span 
class="kd">function</span><span class="p">(</span><span 
class="nx">event</span><span class="p">,</span> <span 
class="nx">tab</span><span class="p">,</span> <span  [...]
+   <span class="nx">dojo</span><span class="p">.</span><span 
class="nx">event</span><span class="p">.</span><span 
class="nx">topic</span><span class="p">.</span><span 
class="nx">subscribe</span><span class="p">(</span><span 
class="dl">'</span><span class="s1">/before</span><span 
class="dl">'</span><span class="p">,</span> <span 
class="kd">function</span><span class="p">(</span><span 
class="nx">event</span><span class="p">,</span> <span 
class="nx">tab</span><span class="p">,</span> <span  [...]
       <span class="nx">event</span><span class="p">.</span><span 
class="nx">cancel</span> <span class="o">=</span> <span 
class="nx">tab</span><span class="p">.</span><span class="nx">widgetId</span> 
<span class="o">==</span> <span class="dl">"</span><span 
class="s2">tab2</span><span class="dl">"</span> <span class="p">;</span>
    <span class="p">});</span>
 <span class="nt">&lt;/script&gt;</span>
@@ -1058,14 +1058,14 @@ one for the selected value, and one for its associated 
key.</p>
 <h3 id="disable-itenable-it-using-javascript">Disable it/enable it using 
JavaScript</h3>
 
 <div class="language-jsp highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="nt">&lt;script </span><span 
class="na">type=</span><span class="s">"text/javascript"</span><span 
class="nt">&gt;</span>
-  <span class="kd">function</span> <span class="nf">enableit</span><span 
class="p">()</span> <span class="p">{</span>
-     <span class="kd">var</span> <span class="nx">autoCompleter</span> <span 
class="o">=</span> <span class="nx">dojo</span><span class="p">.</span><span 
class="nx">widget</span><span class="p">.</span><span 
class="nf">byId</span><span class="p">(</span><span class="dl">"</span><span 
class="s2">auto</span><span class="dl">"</span><span class="p">);</span>
-     <span class="nx">autoCompleter</span><span class="p">.</span><span 
class="nf">enable</span><span class="p">();</span>
+  <span class="kd">function</span> <span class="nx">enableit</span><span 
class="p">()</span> <span class="p">{</span>
+     <span class="kd">var</span> <span class="nx">autoCompleter</span> <span 
class="o">=</span> <span class="nx">dojo</span><span class="p">.</span><span 
class="nx">widget</span><span class="p">.</span><span 
class="nx">byId</span><span class="p">(</span><span class="dl">"</span><span 
class="s2">auto</span><span class="dl">"</span><span class="p">);</span>
+     <span class="nx">autoCompleter</span><span class="p">.</span><span 
class="nx">enable</span><span class="p">();</span>
   <span class="p">}</span>
 
-  <span class="kd">function</span> <span class="nf">disableit</span><span 
class="p">()</span> <span class="p">{</span>
-     <span class="kd">var</span> <span class="nx">autoCompleter</span> <span 
class="o">=</span> <span class="nx">dojo</span><span class="p">.</span><span 
class="nx">widget</span><span class="p">.</span><span 
class="nf">byId</span><span class="p">(</span><span class="dl">"</span><span 
class="s2">auto</span><span class="dl">"</span><span class="p">);</span>
-     <span class="nx">autoCompleter</span><span class="p">.</span><span 
class="nf">disable</span><span class="p">();</span>
+  <span class="kd">function</span> <span class="nx">disableit</span><span 
class="p">()</span> <span class="p">{</span>
+     <span class="kd">var</span> <span class="nx">autoCompleter</span> <span 
class="o">=</span> <span class="nx">dojo</span><span class="p">.</span><span 
class="nx">widget</span><span class="p">.</span><span 
class="nx">byId</span><span class="p">(</span><span class="dl">"</span><span 
class="s2">auto</span><span class="dl">"</span><span class="p">);</span>
+     <span class="nx">autoCompleter</span><span class="p">.</span><span 
class="nx">disable</span><span class="p">();</span>
   <span class="p">}</span>
 <span class="nt">&lt;/script&gt;</span>
 
@@ -1089,7 +1089,7 @@ one for the selected value, and one for its associated 
key.</p>
 <h3 
id="filter-fields-top-be-submitted-when-options-are-loaded-return-true-to-include">Filter
 fields top be submitted when options are loaded (return true to include)</h3>
 
 <div class="language-jsp highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="nt">&lt;script </span><span 
class="na">type=</span><span class="s">"text/javascript"</span><span 
class="nt">&gt;</span>
-  <span class="kd">function</span> <span class="nf">filter</span><span 
class="p">(</span><span class="nx">input</span><span class="p">)</span> <span 
class="p">{</span>
+  <span class="kd">function</span> <span class="nx">filter</span><span 
class="p">(</span><span class="nx">input</span><span class="p">)</span> <span 
class="p">{</span>
      <span class="k">return</span> <span class="nx">input</span><span 
class="p">.</span><span class="nx">name</span> <span class="o">==</span> <span 
class="dl">"</span><span class="s2">data1</span><span class="dl">"</span><span 
class="p">;</span>
   <span class="p">}</span>
 <span class="nt">&lt;/script&gt;</span>
diff --git a/content/tag-developers/ajax-div-template.html 
b/content/tag-developers/ajax-div-template.html
index 9a2ceceee..189b48f10 100644
--- a/content/tag-developers/ajax-div-template.html
+++ b/content/tag-developers/ajax-div-template.html
@@ -259,15 +259,15 @@ For the remote div with the component id <code 
class="language-plaintext highlig
 
 <p>To start refreshing use the javascript:</p>
 
-<div class="language-javascript highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="nx">remotediv1</span><span 
class="p">.</span><span class="nf">startTimer</span><span class="p">();</span>
+<div class="language-javascript highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="nx">remotediv1</span><span 
class="p">.</span><span class="nx">startTimer</span><span class="p">();</span>
 </code></pre></div></div>
 <p>To stop refreshing use the javascript:</p>
 
-<div class="language-javascript highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="nx">remotediv1</span><span 
class="p">.</span><span class="nf">stopTimer</span><span class="p">();</span>
+<div class="language-javascript highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="nx">remotediv1</span><span 
class="p">.</span><span class="nx">stopTimer</span><span class="p">();</span>
 </code></pre></div></div>
 <p>To refresh the content use the javascript:</p>
 
-<div class="language-javascript highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="nx">remotediv1</span><span 
class="p">.</span><span class="nf">refresh</span><span class="p">();</span>
+<div class="language-javascript highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="nx">remotediv1</span><span 
class="p">.</span><span class="nx">refresh</span><span class="p">();</span>
 </code></pre></div></div>
 
 <h2 id="javascript-examples">JavaScript Examples</h2>
@@ -282,12 +282,12 @@ the AJAX div so it refreshes.</p>
 <div class="language-html highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="nt">&lt;saf:head</span> <span 
class="na">theme=</span><span class="s">"ajax"</span> <span 
class="nt">/&gt;</span>
 
 <span class="nt">&lt;script </span><span class="na">type=</span><span 
class="s">"text/javascript"</span><span class="nt">&gt;</span>
-    <span class="kd">function</span> <span 
class="nf">updateReports</span><span class="p">(</span><span 
class="nx">id</span><span class="p">)</span> <span class="p">{</span>
+    <span class="kd">function</span> <span 
class="nx">updateReports</span><span class="p">(</span><span 
class="nx">id</span><span class="p">)</span> <span class="p">{</span>
        <span class="kd">var</span> <span class="nx">reportDiv</span><span 
class="o">=</span> <span class="nb">window</span><span class="p">[</span><span 
class="dl">'</span><span class="s1">reportDivId</span><span 
class="dl">'</span><span class="p">];</span>
        <span class="nx">reportDiv</span><span class="p">.</span><span 
class="nx">href</span> <span class="o">=</span> <span class="dl">'</span><span 
class="s1">/../reportListRemote.action?selectedId=</span><span 
class="dl">'</span><span class="o">+</span><span class="nx">id</span><span 
class="p">;</span>
-       <span class="nx">reportDiv</span><span class="p">.</span><span 
class="nf">refresh</span><span class="p">();</span>
+       <span class="nx">reportDiv</span><span class="p">.</span><span 
class="nx">refresh</span><span class="p">();</span>
     <span class="p">}</span>
-    <span class="nx">dojo</span><span class="p">.</span><span 
class="nx">event</span><span class="p">.</span><span 
class="nx">topic</span><span class="p">.</span><span 
class="nf">getTopic</span><span class="p">(</span><span 
class="dl">"</span><span class="s2">updateReportsListTopic</span><span 
class="dl">"</span><span class="p">).</span><span 
class="nf">subscribe</span><span class="p">(</span><span 
class="kc">null</span><span class="p">,</span> <span class="dl">"</span><span 
class="s2">u [...]
+    <span class="nx">dojo</span><span class="p">.</span><span 
class="nx">event</span><span class="p">.</span><span 
class="nx">topic</span><span class="p">.</span><span 
class="nx">getTopic</span><span class="p">(</span><span 
class="dl">"</span><span class="s2">updateReportsListTopic</span><span 
class="dl">"</span><span class="p">).</span><span 
class="nx">subscribe</span><span class="p">(</span><span 
class="kc">null</span><span class="p">,</span> <span class="dl">"</span><span 
class="s2">u [...]
 <span class="nt">&lt;/script&gt;</span>
 
 <span class="nt">&lt;form</span> <span class="err">...</span> <span 
class="nt">&gt;</span>
diff --git a/content/tag-developers/ajax-event-system.html 
b/content/tag-developers/ajax-event-system.html
index ba01d552e..7d114b8c6 100644
--- a/content/tag-developers/ajax-event-system.html
+++ b/content/tag-developers/ajax-event-system.html
@@ -176,11 +176,11 @@ attribute. See the <a href="ajax-div-template">ajax div 
template</a> for an exam
 
 <p>To subscribe to the <code class="language-plaintext 
highlighter-rouge">topic_name</code> topic:</p>
 
-<div class="language-javascript highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="kd">function</span> <span 
class="nf">doSomethingWithEvent</span><span class="p">(</span><span 
class="nx">data</span><span class="p">)</span> <span class="p">{</span>
+<div class="language-javascript highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="kd">function</span> <span 
class="nx">doSomethingWithEvent</span><span class="p">(</span><span 
class="nx">data</span><span class="p">)</span> <span class="p">{</span>
 <span class="p">...</span>
 <span class="p">}</span>
 
-<span class="nx">dojo</span><span class="p">.</span><span 
class="nx">event</span><span class="p">.</span><span 
class="nx">topic</span><span class="p">.</span><span 
class="nf">getTopic</span><span class="p">(</span><span 
class="dl">"</span><span class="s2">topic_name</span><span 
class="dl">"</span><span class="p">).</span><span 
class="nf">subscribe</span><span class="p">(</span><span 
class="kc">null</span><span class="p">,</span> <span class="dl">"</span><span 
class="s2">doSomethingWithEv [...]
+<span class="nx">dojo</span><span class="p">.</span><span 
class="nx">event</span><span class="p">.</span><span 
class="nx">topic</span><span class="p">.</span><span 
class="nx">getTopic</span><span class="p">(</span><span 
class="dl">"</span><span class="s2">topic_name</span><span 
class="dl">"</span><span class="p">).</span><span 
class="nx">subscribe</span><span class="p">(</span><span 
class="kc">null</span><span class="p">,</span> <span class="dl">"</span><span 
class="s2">doSomethingWithEv [...]
 </code></pre></div></div>
 
 <p>The <code class="language-plaintext highlighter-rouge">subscribe</code> 
method takes 2 parameters, the first is the JavaScript object variable (or null 
if the function is not 

Reply via email to