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 53d204341 Updates stage by Jenkins
53d204341 is described below

commit 53d204341e8f72adf814a9250828171de6aa64f3
Author: jenkins <bui...@apache.org>
AuthorDate: Thu May 29 05:28:59 2025 +0000

    Updates stage by Jenkins
---
 .../ajax-client-side-validation.html               | 58 +++++++++++-----------
 content/getting-started/themes.html                |  6 +--
 content/plugins/json/json-ajax-validation.html     | 58 +++++++++++-----------
 content/tag-developers/ajax-theme.html             | 10 ++--
 content/tag-developers/extending-themes.html       | 18 ++++---
 content/tag-developers/form-tags.html              |  8 +--
 content/tag-developers/freemarker-tags.html        | 16 +++---
 content/tag-developers/freemarker.html             |  6 +--
 content/tag-developers/xhtml-theme.html            |  2 +-
 9 files changed, 95 insertions(+), 87 deletions(-)

diff --git a/content/core-developers/ajax-client-side-validation.html 
b/content/core-developers/ajax-client-side-validation.html
index 6d69eae62..0ecf78c2b 100644
--- a/content/core-developers/ajax-client-side-validation.html
+++ b/content/core-developers/ajax-client-side-validation.html
@@ -381,22 +381,22 @@ but as usual request, not AJAX.</p>
     </span>Make sure element is always present. To be filled later via 
JS.<span class="w">
 </span><span class="err">--&gt;</span><span class="w">
 </span><span class="err">&lt;</span><span class="no">ul</span><span 
class="err">&lt;#</span><span class="no">rt</span><span 
class="err">/&gt;</span><span class="w">
-</span><span class="err">&lt;#</span><span class="no">if</span><span 
class="w"> </span>parameters.id??&gt;<span class="w">
- </span>id="$<span class="p">{</span><span class="no">parameters</span><span 
class="na">.id</span><span class="err">?</span><span 
class="no">html</span><span class="p">}</span>"&lt;#rt/&gt;<span class="w">
+</span><span class="err">&lt;#</span><span class="no">if</span><span 
class="w"> </span>attributes.id??&gt;<span class="w">
+ </span>id="$<span class="p">{</span><span class="no">attributes</span><span 
class="na">.id</span><span class="err">?</span><span 
class="no">html</span><span class="p">}</span>"&lt;#rt/&gt;<span class="w">
 </span><span class="err">&lt;/#</span><span class="no">if</span><span 
class="err">&gt;</span><span class="w">            
-</span><span class="err">&lt;#</span><span class="no">if</span><span 
class="w"> </span>parameters.cssClass??&gt;<span class="w">
- </span>class="$<span class="p">{</span><span 
class="no">parameters</span><span class="na">.cssClass</span><span 
class="err">?</span><span class="no">html</span><span 
class="p">}</span>"&lt;#rt/&gt;<span class="w">
+</span><span class="err">&lt;#</span><span class="no">if</span><span 
class="w"> </span>attributes.cssClass??&gt;<span class="w">
+ </span>class="$<span class="p">{</span><span 
class="no">attributes</span><span class="na">.cssClass</span><span 
class="err">?</span><span class="no">html</span><span 
class="p">}</span>"&lt;#rt/&gt;<span class="w">
 </span><span class="err">&lt;#</span><span class="no">else</span><span 
class="err">&gt;</span><span class="w">
  </span>class="errorMessage"&lt;#rt/&gt;<span class="w">
 </span><span class="err">&lt;/#</span><span class="no">if</span><span 
class="err">&gt;</span><span class="w">
-</span><span class="err">&lt;#</span><span class="no">if</span><span 
class="w"> </span>parameters.cssStyle??&gt;<span class="w">
- </span>style="$<span class="p">{</span><span 
class="no">parameters</span><span class="na">.cssStyle</span><span 
class="err">?</span><span class="no">html</span><span 
class="p">}</span>"&lt;#rt/&gt;<span class="w">
+</span><span class="err">&lt;#</span><span class="no">if</span><span 
class="w"> </span>attributes.cssStyle??&gt;<span class="w">
+ </span>style="$<span class="p">{</span><span 
class="no">attributes</span><span class="na">.cssStyle</span><span 
class="err">?</span><span class="no">html</span><span 
class="p">}</span>"&lt;#rt/&gt;<span class="w">
 </span><span class="err">&lt;/#</span><span class="no">if</span><span 
class="err">&gt;</span><span class="w">
 </span><span class="err">&gt;</span><span class="w">
 </span><span class="err">&lt;#</span><span class="no">if</span><span 
class="w"> </span>(actionErrors?? &amp;&amp; actionErrors?size &gt; 0)&gt;<span 
class="w">
     </span>&lt;#list actionErrors as error&gt;<span class="w">
         </span>&lt;#if error??&gt;<span class="w">
-            </span>&lt;li&gt;&lt;span&gt;&lt;#if parameters.escape&gt;$<span 
class="p">{</span><span class="no">error</span><span class="err">!?</span><span 
class="no">html</span><span class="p">}</span>&lt;#else&gt;$<span 
class="p">{</span><span class="no">error</span><span class="err">!</span><span 
class="p">}</span>&lt;/#if&gt;&lt;/span&gt;&lt;#rt/&gt;&lt;/li&gt;&lt;#rt/&gt;<span
 class="w">
+            </span>&lt;li&gt;&lt;span&gt;&lt;#if attributes.escape&gt;$<span 
class="p">{</span><span class="no">error</span><span class="err">!?</span><span 
class="no">html</span><span class="p">}</span>&lt;#else&gt;$<span 
class="p">{</span><span class="no">error</span><span class="err">!</span><span 
class="p">}</span>&lt;/#if&gt;&lt;/span&gt;&lt;#rt/&gt;&lt;/li&gt;&lt;#rt/&gt;<span
 class="w">
         </span>&lt;/#if&gt;<span class="w">
     </span>&lt;/#list&gt;<span class="w">
 </span><span class="err">&lt;/#</span><span class="no">if</span><span 
class="err">&gt;</span><span class="w">
@@ -405,16 +405,16 @@ but as usual request, not AJAX.</p>
 
 <p><strong>controlfooter.ftl</strong></p>
 
-<div class="language-ftl highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="err">${</span><span 
class="no">parameters</span><span class="na">.after</span><span 
class="err">!}&lt;#</span><span class="no">t</span><span 
class="err">/&gt;</span><span class="w">
+<div class="language-ftl highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="err">${</span><span 
class="no">attributes</span><span class="na">.after</span><span 
class="err">!}&lt;#</span><span class="no">t</span><span 
class="err">/&gt;</span><span class="w">
     </span>&lt;/td&gt;&lt;#lt/&gt;<span class="w">
 </span><span class="err">&lt;/</span><span class="no">tr</span><span 
class="err">&gt;</span><span class="w">
-</span><span class="err">&lt;#</span><span class="no">if</span><span 
class="w"> </span>(parameters.errorposition!"top") == 'bottom'&gt;<span 
class="w">
-</span><span class="err">&lt;#</span><span class="no">assign</span><span 
class="w"> </span>hasFieldErrors = parameters.name?? &amp;&amp; fieldErrors?? 
&amp;&amp; fieldErrors[parameters.name]??/&gt;<span class="w">
+</span><span class="err">&lt;#</span><span class="no">if</span><span 
class="w"> </span>(attributes.errorposition!"top") == 'bottom'&gt;<span 
class="w">
+</span><span class="err">&lt;#</span><span class="no">assign</span><span 
class="w"> </span>hasFieldErrors = attributes.name?? &amp;&amp; fieldErrors?? 
&amp;&amp; fieldErrors[attributes.name]??/&gt;<span class="w">
 </span><span class="err">&lt;#</span><span class="no">if</span><span 
class="w"> </span>hasFieldErrors&gt;<span class="w">
-</span><span class="err">&lt;</span><span class="no">tr</span><span class="w"> 
</span>errorFor="$<span class="p">{</span><span 
class="no">parameters</span><span class="na">.id</span><span 
class="p">}</span>"&gt;<span class="w">
+</span><span class="err">&lt;</span><span class="no">tr</span><span class="w"> 
</span>errorFor="$<span class="p">{</span><span 
class="no">attributes</span><span class="na">.id</span><span 
class="p">}</span>"&gt;<span class="w">
     </span>&lt;td class="tdErrorMessage" colspan="2"&gt;&lt;#rt/&gt;<span 
class="w">
         </span>&lt;#if hasFieldErrors&gt;<span class="w">
-            </span>&lt;#list fieldErrors[parameters.name] as error&gt;<span 
class="w">
+            </span>&lt;#list fieldErrors[attributes.name] as error&gt;<span 
class="w">
                 </span>&lt;div class="errorMessage"&gt;$<span 
class="p">{</span><span class="no">error</span><span class="err">?</span><span 
class="no">html</span><span class="p">}</span>&lt;/div&gt;&lt;#t/&gt;<span 
class="w">
             </span>&lt;/#list&gt;<span class="w">
         </span>&lt;/#if&gt;<span class="w">
@@ -429,22 +429,22 @@ but as usual request, not AJAX.</p>
 <div class="language-ftl highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="err">&lt;#--</span><span class="w">
     </span>Always include elements to show errors. They may be filled later 
via AJAX.<span class="w">
 </span><span class="err">--&gt;</span><span class="w">
-</span><span class="err">&lt;#</span><span class="no">assign</span><span 
class="w"> </span>hasFieldErrors = parameters.name?? &amp;&amp; fieldErrors?? 
&amp;&amp; fieldErrors[parameters.name]??/&gt;<span class="w">
-</span><span class="err">&lt;#</span><span class="no">if</span><span 
class="w"> </span>(parameters.errorposition!"top") == 'top'&gt;<span class="w">
-</span><span class="err">&lt;</span><span class="no">tr</span><span class="w"> 
</span>errorFor="$<span class="p">{</span><span 
class="no">parameters</span><span class="na">.id</span><span 
class="p">}</span>"&gt;<span class="w">
-    </span>&lt;td class="tdErrorMessage" colspan="2" 
data-error-for-fieldname="$<span class="p">{</span><span 
class="no">parameters</span><span class="na">.name</span><span 
class="p">}</span>"&gt;&lt;#rt/&gt;<span class="w">
+</span><span class="err">&lt;#</span><span class="no">assign</span><span 
class="w"> </span>hasFieldErrors = attributes.name?? &amp;&amp; fieldErrors?? 
&amp;&amp; fieldErrors[attributes.name]??/&gt;<span class="w">
+</span><span class="err">&lt;#</span><span class="no">if</span><span 
class="w"> </span>(attributes.errorposition!"top") == 'top'&gt;<span class="w">
+</span><span class="err">&lt;</span><span class="no">tr</span><span class="w"> 
</span>errorFor="$<span class="p">{</span><span 
class="no">attributes</span><span class="na">.id</span><span 
class="p">}</span>"&gt;<span class="w">
+    </span>&lt;td class="tdErrorMessage" colspan="2" 
data-error-for-fieldname="$<span class="p">{</span><span 
class="no">attributes</span><span class="na">.name</span><span 
class="p">}</span>"&gt;&lt;#rt/&gt;<span class="w">
         </span>&lt;#if hasFieldErrors&gt;<span class="w">
-            </span>&lt;#list fieldErrors[parameters.name] as error&gt;<span 
class="w">
+            </span>&lt;#list fieldErrors[attributes.name] as error&gt;<span 
class="w">
                 </span>&lt;div class="errorMessage"&gt;$<span 
class="p">{</span><span class="no">error</span><span class="err">?</span><span 
class="no">html</span><span class="p">}</span>&lt;/div&gt;&lt;#t/&gt;<span 
class="w">
             </span>&lt;/#list&gt;<span class="w">
         </span>&lt;/#if&gt;<span class="w">
     </span>&lt;/td&gt;&lt;#lt/&gt;<span class="w">
 </span><span class="err">&lt;/</span><span class="no">tr</span><span 
class="err">&gt;</span><span class="w">
 </span><span class="err">&lt;/#</span><span class="no">if</span><span 
class="err">&gt;</span><span class="w">
-</span><span class="err">&lt;#</span><span class="no">if</span><span 
class="w"> </span>!parameters.labelposition?? &amp;&amp; 
(parameters.form.labelposition)??&gt;<span class="w">
-</span><span class="err">&lt;#</span><span class="no">assign</span><span 
class="w"> </span>labelpos = parameters.form.labelposition/&gt;<span class="w">
-</span><span class="err">&lt;#</span><span class="no">elseif</span><span 
class="w"> </span>parameters.labelposition??&gt;<span class="w">
-</span><span class="err">&lt;#</span><span class="no">assign</span><span 
class="w"> </span>labelpos = parameters.labelposition/&gt;<span class="w">
+</span><span class="err">&lt;#</span><span class="no">if</span><span 
class="w"> </span>!attributes.labelposition?? &amp;&amp; 
(attributes.form.labelposition)??&gt;<span class="w">
+</span><span class="err">&lt;#</span><span class="no">assign</span><span 
class="w"> </span>labelpos = attributes.form.labelposition/&gt;<span class="w">
+</span><span class="err">&lt;#</span><span class="no">elseif</span><span 
class="w"> </span>attributes.labelposition??&gt;<span class="w">
+</span><span class="err">&lt;#</span><span class="no">assign</span><span 
class="w"> </span>labelpos = attributes.labelposition/&gt;<span class="w">
 </span><span class="err">&lt;/#</span><span class="no">if</span><span 
class="err">&gt;</span><span class="w">
 </span><span class="err">&lt;#--</span><span class="w">
     </span>if the label position is top,<span class="w">
@@ -456,10 +456,10 @@ but as usual request, not AJAX.</p>
 </span><span class="err">&lt;#</span><span class="no">else</span><span 
class="err">&gt;</span><span class="w">
     </span>&lt;td class="tdLabel"&gt;&lt;#rt/&gt;<span class="w">
 </span><span class="err">&lt;/#</span><span class="no">if</span><span 
class="err">&gt;</span><span class="w">
-</span><span class="err">&lt;#</span><span class="no">if</span><span 
class="w"> </span>parameters.label??&gt;<span class="w">
+</span><span class="err">&lt;#</span><span class="no">if</span><span 
class="w"> </span>attributes.label??&gt;<span class="w">
     </span>&lt;label &lt;#t/&gt;<span class="w">
-</span><span class="err">&lt;#</span><span class="no">if</span><span 
class="w"> </span>parameters.id??&gt;<span class="w">
-        </span>for="$<span class="p">{</span><span 
class="no">parameters</span><span class="na">.id</span><span 
class="err">?</span><span class="no">html</span><span class="p">}</span>" 
&lt;#t/&gt;<span class="w">
+</span><span class="err">&lt;#</span><span class="no">if</span><span 
class="w"> </span>attributes.id??&gt;<span class="w">
+        </span>for="$<span class="p">{</span><span 
class="no">attributes</span><span class="na">.id</span><span 
class="err">?</span><span class="no">html</span><span class="p">}</span>" 
&lt;#t/&gt;<span class="w">
 </span><span class="err">&lt;/#</span><span class="no">if</span><span 
class="err">&gt;</span><span class="w">
 </span><span class="err">&lt;#</span><span class="no">if</span><span 
class="w"> </span>hasFieldErrors&gt;<span class="w">
         </span>class="errorLabel"&lt;#t/&gt;<span class="w">
@@ -467,15 +467,15 @@ but as usual request, not AJAX.</p>
         </span>class="label"&lt;#t/&gt;<span class="w">
 </span><span class="err">&lt;/#</span><span class="no">if</span><span 
class="err">&gt;</span><span class="w">
     </span>&gt;&lt;#t/&gt;<span class="w">
-</span><span class="err">&lt;#</span><span class="no">if</span><span 
class="w"> </span>parameters.required!false &amp;&amp; 
parameters.requiredPosition!"right" != 'right'&gt;<span class="w">
+</span><span class="err">&lt;#</span><span class="no">if</span><span 
class="w"> </span>attributes.required!false &amp;&amp; 
attributes.requiredPosition!"right" != 'right'&gt;<span class="w">
         </span>&lt;span class="required"&gt;<span 
class="err">*</span>&lt;/span&gt;&lt;#t/&gt;<span class="w">
 </span><span class="err">&lt;/#</span><span class="no">if</span><span 
class="err">&gt;</span><span class="w">
-</span><span class="err">${</span><span class="no">parameters</span><span 
class="na">.label</span><span class="err">?</span><span 
class="no">html</span><span class="err">}&lt;#</span><span 
class="no">t</span><span class="err">/&gt;</span><span class="w">
-</span><span class="err">&lt;#</span><span class="no">if</span><span 
class="w"> </span>parameters.required!false &amp;&amp; 
parameters.requiredPosition!"right" == 'right'&gt;<span class="w">
+</span><span class="err">${</span><span class="no">attributes</span><span 
class="na">.label</span><span class="err">?</span><span 
class="no">html</span><span class="err">}&lt;#</span><span 
class="no">t</span><span class="err">/&gt;</span><span class="w">
+</span><span class="err">&lt;#</span><span class="no">if</span><span 
class="w"> </span>attributes.required!false &amp;&amp; 
attributes.requiredPosition!"right" == 'right'&gt;<span class="w">
  </span>&lt;span class="required"&gt;<span 
class="err">*</span>&lt;/span&gt;&lt;#t/&gt;<span class="w">
 </span><span class="err">&lt;/#</span><span class="no">if</span><span 
class="err">&gt;</span><span class="w">
-</span><span class="err">${</span><span class="no">parameters</span><span 
class="na">.labelseparator</span><span class="err">!":"?</span><span 
class="no">html</span><span class="err">}&lt;#</span><span 
class="no">t</span><span class="err">/&gt;</span><span class="w">
-</span><span class="err">&lt;#</span><span class="no">include</span><span 
class="w"> </span>"/$<span class="p">{</span><span 
class="no">parameters</span><span class="na">.templateDir</span><span 
class="p">}</span>/$<span class="p">{</span><span 
class="no">parameters</span><span class="na">.expandTheme</span><span 
class="p">}</span>/tooltip.ftl" /&gt;<span class="w">
+</span><span class="err">${</span><span class="no">attributes</span><span 
class="na">.labelseparator</span><span class="err">!":"?</span><span 
class="no">html</span><span class="err">}&lt;#</span><span 
class="no">t</span><span class="err">/&gt;</span><span class="w">
+</span><span class="err">&lt;#</span><span class="no">include</span><span 
class="w"> </span>"/$<span class="p">{</span><span 
class="no">attributes</span><span class="na">.templateDir</span><span 
class="p">}</span>/$<span class="p">{</span><span 
class="no">attributes</span><span class="na">.expandTheme</span><span 
class="p">}</span>/tooltip.ftl" /&gt;<span class="w">
 </span><span class="err">&lt;/</span><span class="no">label</span><span 
class="err">&gt;&lt;#</span><span class="no">t</span><span 
class="err">/&gt;</span><span class="w">
 </span><span class="err">&lt;/#</span><span class="no">if</span><span 
class="err">&gt;</span><span class="w">
     </span>&lt;/td&gt;&lt;#lt/&gt;<span class="w">
diff --git a/content/getting-started/themes.html 
b/content/getting-started/themes.html
index b746cd4c1..9c0488c58 100644
--- a/content/getting-started/themes.html
+++ b/content/getting-started/themes.html
@@ -303,11 +303,11 @@ the Struts 2 core jar.</p>
 
 <p><strong>Modified checkboxlist.ftl</strong></p>
 
-<div class="language-ftl highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="err">&lt;#</span><span 
class="no">include</span><span class="w"> </span>"/$<span 
class="p">{</span><span class="no">parameters</span><span 
class="na">.templateDir</span><span class="p">}</span>/$<span 
class="p">{</span><span class="no">parameters</span><span 
class="na">.expandTheme</span><span class="p">}</span>/controlheader.ftl" 
/&gt;<span class="w">
+<div class="language-ftl highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="err">&lt;#</span><span 
class="no">include</span><span class="w"> </span>"/$<span 
class="p">{</span><span class="no">attributes</span><span 
class="na">.templateDir</span><span class="p">}</span>/$<span 
class="p">{</span><span class="no">attributes</span><span 
class="na">.expandTheme</span><span class="p">}</span>/controlheader.ftl" 
/&gt;<span class="w">
 
-</span><span class="err">&lt;#</span><span class="no">include</span><span 
class="w"> </span>"/$<span class="p">{</span><span 
class="no">parameters</span><span class="na">.templateDir</span><span 
class="p">}</span>/KUTheme_simple/checkboxlist.ftl" /&gt;<span class="w">
+</span><span class="err">&lt;#</span><span class="no">include</span><span 
class="w"> </span>"/$<span class="p">{</span><span 
class="no">attributes</span><span class="na">.templateDir</span><span 
class="p">}</span>/KUTheme_simple/checkboxlist.ftl" /&gt;<span class="w">
 
-</span><span class="err">&lt;#</span><span class="no">include</span><span 
class="w"> </span>"/$<span class="p">{</span><span 
class="no">parameters</span><span class="na">.templateDir</span><span 
class="p">}</span>/$<span class="p">{</span><span 
class="no">parameters</span><span class="na">.expandTheme</span><span 
class="p">}</span>/controlfooter.ftl" /&gt;&lt;#nt/&gt;<span class="w">
+</span><span class="err">&lt;#</span><span class="no">include</span><span 
class="w"> </span>"/$<span class="p">{</span><span 
class="no">attributes</span><span class="na">.templateDir</span><span 
class="p">}</span>/$<span class="p">{</span><span 
class="no">attributes</span><span class="na">.expandTheme</span><span 
class="p">}</span>/controlfooter.ftl" /&gt;&lt;#nt/&gt;<span class="w">
 </span></code></pre></div></div>
 
 <p>Be sure to note the change to the second line—using KUTheme_simple in the 
path.</p>
diff --git a/content/plugins/json/json-ajax-validation.html 
b/content/plugins/json/json-ajax-validation.html
index 1e385b4ed..d016c6c1f 100644
--- a/content/plugins/json/json-ajax-validation.html
+++ b/content/plugins/json/json-ajax-validation.html
@@ -367,22 +367,22 @@ Otherwise the AJAX response will be empty and the form 
must be submitted a 2nd t
     <span class="na">Make</span> <span class="na">sure</span> <span 
class="na">element</span> <span class="na">is</span> <span 
class="na">always</span> <span class="na">present.</span> <span 
class="na">To</span> <span class="na">be</span> <span class="na">filled</span> 
<span class="na">later</span> <span class="na">via</span> <span 
class="na">JS.</span>
 <span class="na">--</span><span class="nt">&gt;</span>
 <span class="nt">&lt;ul</span><span class="err">&lt;</span><span 
class="na">#rt</span><span class="nt">/&gt;</span>
-<span class="nt">&lt;</span><span class="na">#if</span> <span 
class="na">parameters.id</span><span class="err">??</span><span 
class="nt">&gt;</span>
- id="${parameters.id?html}"<span class="nt">&lt;</span><span 
class="na">#rt</span><span class="nt">/&gt;</span>
+<span class="nt">&lt;</span><span class="na">#if</span> <span 
class="na">attributes.id</span><span class="err">??</span><span 
class="nt">&gt;</span>
+ id="${attributes.id?html}"<span class="nt">&lt;</span><span 
class="na">#rt</span><span class="nt">/&gt;</span>
 <span class="nt">&lt;/</span><span class="err">#</span><span 
class="nt">if&gt;</span>            
-<span class="nt">&lt;</span><span class="na">#if</span> <span 
class="na">parameters.cssClass</span><span class="err">??</span><span 
class="nt">&gt;</span>
- class="${parameters.cssClass?html}"<span class="nt">&lt;</span><span 
class="na">#rt</span><span class="nt">/&gt;</span>
+<span class="nt">&lt;</span><span class="na">#if</span> <span 
class="na">attributes.cssClass</span><span class="err">??</span><span 
class="nt">&gt;</span>
+ class="${attributes.cssClass?html}"<span class="nt">&lt;</span><span 
class="na">#rt</span><span class="nt">/&gt;</span>
 <span class="nt">&lt;</span><span class="na">#else</span><span 
class="nt">&gt;</span>
  class="errorMessage"<span class="nt">&lt;</span><span 
class="na">#rt</span><span class="nt">/&gt;</span>
 <span class="nt">&lt;/</span><span class="err">#</span><span 
class="nt">if&gt;</span>
-<span class="nt">&lt;</span><span class="na">#if</span> <span 
class="na">parameters.cssStyle</span><span class="err">??</span><span 
class="nt">&gt;</span>
- style="${parameters.cssStyle?html}"<span class="nt">&lt;</span><span 
class="na">#rt</span><span class="nt">/&gt;</span>
+<span class="nt">&lt;</span><span class="na">#if</span> <span 
class="na">attributes.cssStyle</span><span class="err">??</span><span 
class="nt">&gt;</span>
+ style="${attributes.cssStyle?html}"<span class="nt">&lt;</span><span 
class="na">#rt</span><span class="nt">/&gt;</span>
 <span class="nt">&lt;/</span><span class="err">#</span><span 
class="nt">if&gt;</span>
 &gt;
 <span class="nt">&lt;</span><span class="na">#if</span> <span 
class="err">(</span><span class="na">actionErrors</span><span 
class="err">??</span> <span class="err">&amp;&amp;</span> <span 
class="na">actionErrors</span><span class="err">?</span><span 
class="na">size</span> <span class="nt">&gt;</span> 0)&gt;
     <span class="nt">&lt;</span><span class="na">#list</span> <span 
class="na">actionErrors</span> <span class="na">as</span> <span 
class="na">error</span><span class="nt">&gt;</span>
         <span class="nt">&lt;</span><span class="na">#if</span> <span 
class="na">error</span><span class="err">??</span><span class="nt">&gt;</span>
-            <span class="nt">&lt;li&gt;&lt;span&gt;&lt;</span><span 
class="na">#if</span> <span class="na">parameters.escape</span><span 
class="nt">&gt;</span>${error!?html}<span class="nt">&lt;</span><span 
class="na">#else</span><span class="nt">&gt;</span>${error!}<span 
class="nt">&lt;/</span><span class="err">#</span><span 
class="nt">if&gt;&lt;/span&gt;&lt;</span><span class="na">#rt</span><span 
class="nt">/&gt;&lt;/li&gt;&lt;</span><span class="na">#rt</span><span 
class="nt">/&gt;</span>
+            <span class="nt">&lt;li&gt;&lt;span&gt;&lt;</span><span 
class="na">#if</span> <span class="na">attributes.escape</span><span 
class="nt">&gt;</span>${error!?html}<span class="nt">&lt;</span><span 
class="na">#else</span><span class="nt">&gt;</span>${error!}<span 
class="nt">&lt;/</span><span class="err">#</span><span 
class="nt">if&gt;&lt;/span&gt;&lt;</span><span class="na">#rt</span><span 
class="nt">/&gt;&lt;/li&gt;&lt;</span><span class="na">#rt</span><span 
class="nt">/&gt;</span>
         <span class="nt">&lt;/</span><span class="err">#</span><span 
class="nt">if&gt;</span>
     <span class="nt">&lt;/</span><span class="err">#</span><span 
class="nt">list&gt;</span>
 <span class="nt">&lt;/</span><span class="err">#</span><span 
class="nt">if&gt;</span>
@@ -391,16 +391,16 @@ Otherwise the AJAX response will be empty and the form 
must be submitted a 2nd t
 
 <h4 id="controlfooterftl">controlfooter.ftl</h4>
 
-<div class="language-html highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code>${parameters.after!}<span class="nt">&lt;</span><span 
class="na">#t</span><span class="nt">/&gt;</span>
+<div class="language-html highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code>${attributes.after!}<span class="nt">&lt;</span><span 
class="na">#t</span><span class="nt">/&gt;</span>
     <span class="nt">&lt;/td&gt;&lt;</span><span class="na">#lt</span><span 
class="nt">/&gt;</span>
 <span class="nt">&lt;/tr&gt;</span>
-<span class="nt">&lt;</span><span class="na">#if</span> <span 
class="err">(</span><span class="na">parameters.errorposition</span><span 
class="err">!"</span><span class="na">top</span><span class="err">"</span><span 
class="na">) =</span><span class="s">=</span> <span class="err">'</span><span 
class="na">bottom</span><span class="err">'</span><span class="nt">&gt;</span>
-<span class="nt">&lt;</span><span class="na">#assign</span> <span 
class="na">hasFieldErrors = </span><span class="s">parameters.name??</span> 
<span class="err">&amp;&amp;</span> <span class="na">fieldErrors</span><span 
class="err">??</span> <span class="err">&amp;&amp;</span> <span 
class="na">fieldErrors</span><span class="err">[</span><span 
class="na">parameters.name</span><span class="err">]??</span><span 
class="nt">/&gt;</span>
+<span class="nt">&lt;</span><span class="na">#if</span> <span 
class="err">(</span><span class="na">attributes.errorposition</span><span 
class="err">!"</span><span class="na">top</span><span class="err">"</span><span 
class="na">) =</span><span class="s">=</span> <span class="err">'</span><span 
class="na">bottom</span><span class="err">'</span><span class="nt">&gt;</span>
+<span class="nt">&lt;</span><span class="na">#assign</span> <span 
class="na">hasFieldErrors = </span><span class="s">attributes.name??</span> 
<span class="err">&amp;&amp;</span> <span class="na">fieldErrors</span><span 
class="err">??</span> <span class="err">&amp;&amp;</span> <span 
class="na">fieldErrors</span><span class="err">[</span><span 
class="na">attributes.name</span><span class="err">]??</span><span 
class="nt">/&gt;</span>
 <span class="nt">&lt;</span><span class="na">#if</span> <span 
class="na">hasFieldErrors</span><span class="nt">&gt;</span>
-<span class="nt">&lt;tr</span> <span class="na">errorFor=</span><span 
class="s">"${parameters.id}"</span><span class="nt">&gt;</span>
+<span class="nt">&lt;tr</span> <span class="na">errorFor=</span><span 
class="s">"${attributes.id}"</span><span class="nt">&gt;</span>
     <span class="nt">&lt;td</span> <span class="na">class=</span><span 
class="s">"tdErrorMessage"</span> <span class="na">colspan=</span><span 
class="s">"2"</span><span class="nt">&gt;&lt;</span><span 
class="na">#rt</span><span class="nt">/&gt;</span>
         <span class="nt">&lt;</span><span class="na">#if</span> <span 
class="na">hasFieldErrors</span><span class="nt">&gt;</span>
-            <span class="nt">&lt;</span><span class="na">#list</span> <span 
class="na">fieldErrors</span><span class="err">[</span><span 
class="na">parameters.name</span><span class="err">]</span> <span 
class="na">as</span> <span class="na">error</span><span class="nt">&gt;</span>
+            <span class="nt">&lt;</span><span class="na">#list</span> <span 
class="na">fieldErrors</span><span class="err">[</span><span 
class="na">attributes.name</span><span class="err">]</span> <span 
class="na">as</span> <span class="na">error</span><span class="nt">&gt;</span>
                 <span class="nt">&lt;div</span> <span 
class="na">class=</span><span class="s">"errorMessage"</span><span 
class="nt">&gt;</span>${error?html}<span 
class="nt">&lt;/div&gt;&lt;</span><span class="na">#t</span><span 
class="nt">/&gt;</span>
             <span class="nt">&lt;/</span><span class="err">#</span><span 
class="nt">list&gt;</span>
         <span class="nt">&lt;/</span><span class="err">#</span><span 
class="nt">if&gt;</span>
@@ -415,22 +415,22 @@ Otherwise the AJAX response will be empty and the form 
must be submitted a 2nd t
 <div class="language-html highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code> <span class="nt">&lt;</span><span class="na">#--</span>
     <span class="na">Always</span> <span class="na">include</span> <span 
class="na">elements</span> <span class="na">to</span> <span 
class="na">show</span> <span class="na">errors.</span> <span 
class="na">They</span> <span class="na">may</span> <span class="na">be</span> 
<span class="na">filled</span> <span class="na">later</span> <span 
class="na">via</span> <span class="na">AJAX.</span>
 <span class="na">--</span><span class="nt">&gt;</span>
-<span class="nt">&lt;</span><span class="na">#assign</span> <span 
class="na">hasFieldErrors = </span><span class="s">parameters.name??</span> 
<span class="err">&amp;&amp;</span> <span class="na">fieldErrors</span><span 
class="err">??</span> <span class="err">&amp;&amp;</span> <span 
class="na">fieldErrors</span><span class="err">[</span><span 
class="na">parameters.name</span><span class="err">]??</span><span 
class="nt">/&gt;</span>
-<span class="nt">&lt;</span><span class="na">#if</span> <span 
class="err">(</span><span class="na">parameters.errorposition</span><span 
class="err">!"</span><span class="na">top</span><span class="err">"</span><span 
class="na">) =</span><span class="s">=</span> <span class="err">'</span><span 
class="na">top</span><span class="err">'</span><span class="nt">&gt;</span>
-<span class="nt">&lt;tr</span> <span class="na">errorFor=</span><span 
class="s">"${parameters.id}"</span><span class="nt">&gt;</span>
-    <span class="nt">&lt;td</span> <span class="na">class=</span><span 
class="s">"tdErrorMessage"</span> <span class="na">colspan=</span><span 
class="s">"2"</span> <span class="na">data-error-for-fieldname=</span><span 
class="s">"${parameters.name}"</span><span class="nt">&gt;&lt;</span><span 
class="na">#rt</span><span class="nt">/&gt;</span>
+<span class="nt">&lt;</span><span class="na">#assign</span> <span 
class="na">hasFieldErrors = </span><span class="s">attributes.name??</span> 
<span class="err">&amp;&amp;</span> <span class="na">fieldErrors</span><span 
class="err">??</span> <span class="err">&amp;&amp;</span> <span 
class="na">fieldErrors</span><span class="err">[</span><span 
class="na">attributes.name</span><span class="err">]??</span><span 
class="nt">/&gt;</span>
+<span class="nt">&lt;</span><span class="na">#if</span> <span 
class="err">(</span><span class="na">attributes.errorposition</span><span 
class="err">!"</span><span class="na">top</span><span class="err">"</span><span 
class="na">) =</span><span class="s">=</span> <span class="err">'</span><span 
class="na">top</span><span class="err">'</span><span class="nt">&gt;</span>
+<span class="nt">&lt;tr</span> <span class="na">errorFor=</span><span 
class="s">"${attributes.id}"</span><span class="nt">&gt;</span>
+    <span class="nt">&lt;td</span> <span class="na">class=</span><span 
class="s">"tdErrorMessage"</span> <span class="na">colspan=</span><span 
class="s">"2"</span> <span class="na">data-error-for-fieldname=</span><span 
class="s">"${attributes.name}"</span><span class="nt">&gt;&lt;</span><span 
class="na">#rt</span><span class="nt">/&gt;</span>
         <span class="nt">&lt;</span><span class="na">#if</span> <span 
class="na">hasFieldErrors</span><span class="nt">&gt;</span>
-            <span class="nt">&lt;</span><span class="na">#list</span> <span 
class="na">fieldErrors</span><span class="err">[</span><span 
class="na">parameters.name</span><span class="err">]</span> <span 
class="na">as</span> <span class="na">error</span><span class="nt">&gt;</span>
+            <span class="nt">&lt;</span><span class="na">#list</span> <span 
class="na">fieldErrors</span><span class="err">[</span><span 
class="na">attributes.name</span><span class="err">]</span> <span 
class="na">as</span> <span class="na">error</span><span class="nt">&gt;</span>
                 <span class="nt">&lt;div</span> <span 
class="na">class=</span><span class="s">"errorMessage"</span><span 
class="nt">&gt;</span>${error?html}<span 
class="nt">&lt;/div&gt;&lt;</span><span class="na">#t</span><span 
class="nt">/&gt;</span>
             <span class="nt">&lt;/</span><span class="err">#</span><span 
class="nt">list&gt;</span>
         <span class="nt">&lt;/</span><span class="err">#</span><span 
class="nt">if&gt;</span>
     <span class="nt">&lt;/td&gt;&lt;</span><span class="na">#lt</span><span 
class="nt">/&gt;</span>
 <span class="nt">&lt;/tr&gt;</span>
 <span class="nt">&lt;/</span><span class="err">#</span><span 
class="nt">if&gt;</span>
-<span class="nt">&lt;</span><span class="na">#if</span> <span 
class="err">!</span><span class="na">parameters.labelposition</span><span 
class="err">??</span> <span class="err">&amp;&amp;</span> <span 
class="err">(</span><span class="na">parameters.form.labelposition</span><span 
class="err">)??</span><span class="nt">&gt;</span>
-<span class="nt">&lt;</span><span class="na">#assign</span> <span 
class="na">labelpos = </span><span 
class="s">parameters.form.labelposition/</span><span class="nt">&gt;</span>
-<span class="nt">&lt;</span><span class="na">#elseif</span> <span 
class="na">parameters.labelposition</span><span class="err">??</span><span 
class="nt">&gt;</span>
-<span class="nt">&lt;</span><span class="na">#assign</span> <span 
class="na">labelpos = </span><span 
class="s">parameters.labelposition/</span><span class="nt">&gt;</span>
+<span class="nt">&lt;</span><span class="na">#if</span> <span 
class="err">!</span><span class="na">attributes.labelposition</span><span 
class="err">??</span> <span class="err">&amp;&amp;</span> <span 
class="err">(</span><span class="na">attributes.form.labelposition</span><span 
class="err">)??</span><span class="nt">&gt;</span>
+<span class="nt">&lt;</span><span class="na">#assign</span> <span 
class="na">labelpos = </span><span 
class="s">attributes.form.labelposition/</span><span class="nt">&gt;</span>
+<span class="nt">&lt;</span><span class="na">#elseif</span> <span 
class="na">attributes.labelposition</span><span class="err">??</span><span 
class="nt">&gt;</span>
+<span class="nt">&lt;</span><span class="na">#assign</span> <span 
class="na">labelpos = </span><span 
class="s">attributes.labelposition/</span><span class="nt">&gt;</span>
 <span class="nt">&lt;/</span><span class="err">#</span><span 
class="nt">if&gt;</span>
 <span class="nt">&lt;</span><span class="na">#--</span>
     <span class="na">if</span> <span class="na">the</span> <span 
class="na">label</span> <span class="na">position</span> <span 
class="na">is</span> <span class="na">top</span><span class="err">,</span>
@@ -442,10 +442,10 @@ Otherwise the AJAX response will be empty and the form 
must be submitted a 2nd t
 <span class="nt">&lt;</span><span class="na">#else</span><span 
class="nt">&gt;</span>
     <span class="nt">&lt;td</span> <span class="na">class=</span><span 
class="s">"tdLabel"</span><span class="nt">&gt;&lt;</span><span 
class="na">#rt</span><span class="nt">/&gt;</span>
 <span class="nt">&lt;/</span><span class="err">#</span><span 
class="nt">if&gt;</span>
-<span class="nt">&lt;</span><span class="na">#if</span> <span 
class="na">parameters.label</span><span class="err">??</span><span 
class="nt">&gt;</span>
+<span class="nt">&lt;</span><span class="na">#if</span> <span 
class="na">attributes.label</span><span class="err">??</span><span 
class="nt">&gt;</span>
     <span class="nt">&lt;label</span> <span class="err">&lt;</span><span 
class="na">#t</span><span class="nt">/&gt;</span>
-<span class="nt">&lt;</span><span class="na">#if</span> <span 
class="na">parameters.id</span><span class="err">??</span><span 
class="nt">&gt;</span>
-        for="${parameters.id?html}" <span class="nt">&lt;</span><span 
class="na">#t</span><span class="nt">/&gt;</span>
+<span class="nt">&lt;</span><span class="na">#if</span> <span 
class="na">attributes.id</span><span class="err">??</span><span 
class="nt">&gt;</span>
+        for="${attributes.id?html}" <span class="nt">&lt;</span><span 
class="na">#t</span><span class="nt">/&gt;</span>
 <span class="nt">&lt;/</span><span class="err">#</span><span 
class="nt">if&gt;</span>
 <span class="nt">&lt;</span><span class="na">#if</span> <span 
class="na">hasFieldErrors</span><span class="nt">&gt;</span>
         class="errorLabel"<span class="nt">&lt;</span><span 
class="na">#t</span><span class="nt">/&gt;</span>
@@ -453,15 +453,15 @@ Otherwise the AJAX response will be empty and the form 
must be submitted a 2nd t
         class="label"<span class="nt">&lt;</span><span 
class="na">#t</span><span class="nt">/&gt;</span>
 <span class="nt">&lt;/</span><span class="err">#</span><span 
class="nt">if&gt;</span>
     &gt;<span class="nt">&lt;</span><span class="na">#t</span><span 
class="nt">/&gt;</span>
-<span class="nt">&lt;</span><span class="na">#if</span> <span 
class="na">parameters.required</span><span class="err">!</span><span 
class="na">false</span> <span class="err">&amp;&amp;</span> <span 
class="na">parameters.requiredPosition</span><span class="err">!"</span><span 
class="na">right</span><span class="err">"</span> <span class="err">!=</span> 
<span class="err">'</span><span class="na">right</span><span 
class="err">'</span><span class="nt">&gt;</span>
+<span class="nt">&lt;</span><span class="na">#if</span> <span 
class="na">attributes.required</span><span class="err">!</span><span 
class="na">false</span> <span class="err">&amp;&amp;</span> <span 
class="na">attributes.requiredPosition</span><span class="err">!"</span><span 
class="na">right</span><span class="err">"</span> <span class="err">!=</span> 
<span class="err">'</span><span class="na">right</span><span 
class="err">'</span><span class="nt">&gt;</span>
         <span class="nt">&lt;span</span> <span class="na">class=</span><span 
class="s">"required"</span><span class="nt">&gt;</span>*<span 
class="nt">&lt;/span&gt;&lt;</span><span class="na">#t</span><span 
class="nt">/&gt;</span>
 <span class="nt">&lt;/</span><span class="err">#</span><span 
class="nt">if&gt;</span>
-${parameters.label?html}<span class="nt">&lt;</span><span 
class="na">#t</span><span class="nt">/&gt;</span>
-<span class="nt">&lt;</span><span class="na">#if</span> <span 
class="na">parameters.required</span><span class="err">!</span><span 
class="na">false</span> <span class="err">&amp;&amp;</span> <span 
class="na">parameters.requiredPosition</span><span class="err">!"</span><span 
class="na">right</span><span class="err">"</span> <span class="err">==</span> 
<span class="err">'</span><span class="na">right</span><span 
class="err">'</span><span class="nt">&gt;</span>
+${attributes.label?html}<span class="nt">&lt;</span><span 
class="na">#t</span><span class="nt">/&gt;</span>
+<span class="nt">&lt;</span><span class="na">#if</span> <span 
class="na">attributes.required</span><span class="err">!</span><span 
class="na">false</span> <span class="err">&amp;&amp;</span> <span 
class="na">attributes.requiredPosition</span><span class="err">!"</span><span 
class="na">right</span><span class="err">"</span> <span class="err">==</span> 
<span class="err">'</span><span class="na">right</span><span 
class="err">'</span><span class="nt">&gt;</span>
  <span class="nt">&lt;span</span> <span class="na">class=</span><span 
class="s">"required"</span><span class="nt">&gt;</span>*<span 
class="nt">&lt;/span&gt;&lt;</span><span class="na">#t</span><span 
class="nt">/&gt;</span>
 <span class="nt">&lt;/</span><span class="err">#</span><span 
class="nt">if&gt;</span>
-${parameters.labelseparator!":"?html}<span class="nt">&lt;</span><span 
class="na">#t</span><span class="nt">/&gt;</span>
-<span class="nt">&lt;</span><span class="na">#include</span> <span 
class="err">"/${</span><span class="na">parameters.templateDir</span><span 
class="err">}/${</span><span class="na">parameters.expandTheme</span><span 
class="err">}/</span><span class="na">tooltip.ftl</span><span 
class="err">"</span> <span class="nt">/&gt;</span>
+${attributes.labelseparator!":"?html}<span class="nt">&lt;</span><span 
class="na">#t</span><span class="nt">/&gt;</span>
+<span class="nt">&lt;</span><span class="na">#include</span> <span 
class="err">"/${</span><span class="na">attributes.templateDir</span><span 
class="err">}/${</span><span class="na">attributes.expandTheme</span><span 
class="err">}/</span><span class="na">tooltip.ftl</span><span 
class="err">"</span> <span class="nt">/&gt;</span>
 <span class="nt">&lt;/label&gt;&lt;</span><span class="na">#t</span><span 
class="nt">/&gt;</span>
 <span class="nt">&lt;/</span><span class="err">#</span><span 
class="nt">if&gt;</span>
     <span class="nt">&lt;/td&gt;&lt;</span><span class="na">#lt</span><span 
class="nt">/&gt;</span>
diff --git a/content/tag-developers/ajax-theme.html 
b/content/tag-developers/ajax-theme.html
index 2c92deaba..1d48397f2 100644
--- a/content/tag-developers/ajax-theme.html
+++ b/content/tag-developers/ajax-theme.html
@@ -194,13 +194,13 @@ browsers. The supported browsers are:</p>
 <p>The wrapping technique utilized by the ajax theme is much like <a 
href="xhtml-theme">xhtml theme</a>, but the <code class="language-plaintext 
highlighter-rouge">controlheader.ftl</code>
 is a wee bit different.</p>
 
-<div class="language-ftl highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="err">&lt;#</span><span 
class="no">if</span><span class="w"> </span>parameters.label?if_exists != 
""&gt;<span class="w">
-       </span>&lt;#include "/$<span class="p">{</span><span 
class="no">parameters</span><span class="na">.templateDir</span><span 
class="p">}</span>/xhtml/controlheader.ftl" /&gt;<span class="w">
+<div class="language-ftl highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="err">&lt;#</span><span 
class="no">if</span><span class="w"> </span>attributes.label?if_exists != 
""&gt;<span class="w">
+       </span>&lt;#include "/$<span class="p">{</span><span 
class="no">attributes</span><span class="na">.templateDir</span><span 
class="p">}</span>/xhtml/controlheader.ftl" /&gt;<span class="w">
 </span><span class="err">&lt;/#</span><span class="no">if</span><span 
class="err">&gt;</span><span class="w">
-</span><span class="err">&lt;#</span><span class="no">if</span><span 
class="w"> </span>parameters.form?exists &amp;&amp; 
parameters.form.validate?default(false) == true&gt;<span class="w">
+</span><span class="err">&lt;#</span><span class="no">if</span><span 
class="w"> </span>attributes.form?exists &amp;&amp; 
attributes.form.validate?default(false) == true&gt;<span class="w">
        </span>&lt;#-- can't mutate the data model in freemarker --&gt;<span 
class="w">
-    </span>&lt;#if parameters.onblur?exists&gt;<span class="w">
-        </span>$<span class="p">{</span><span class="no">tag</span><span 
class="na">.addParameter</span><span class="p">(</span><span 
class="err">'</span><span class="no">onblur</span><span 
class="err">'</span><span class="p">,</span><span class="w"> </span><span 
class="s2">"validate(this);${parameters.onblur}"</span><span 
class="p">)}</span><span class="w">
+    </span>&lt;#if attributes.onblur?exists&gt;<span class="w">
+        </span>$<span class="p">{</span><span class="no">tag</span><span 
class="na">.addParameter</span><span class="p">(</span><span 
class="err">'</span><span class="no">onblur</span><span 
class="err">'</span><span class="p">,</span><span class="w"> </span><span 
class="s2">"validate(this);${attributes.onblur}"</span><span 
class="p">)}</span><span class="w">
     </span>&lt;#else&gt;<span class="w">
         </span>$<span class="p">{</span><span class="no">tag</span><span 
class="na">.addParameter</span><span class="p">(</span><span 
class="err">'</span><span class="no">onblur</span><span 
class="err">'</span><span class="p">,</span><span class="w"> </span><span 
class="s2">"validate(this);"</span><span class="p">)}</span><span class="w">
     </span>&lt;/#if&gt;<span class="w">
diff --git a/content/tag-developers/extending-themes.html 
b/content/tag-developers/extending-themes.html
index 3abf7a1e3..b089e07cd 100644
--- a/content/tag-developers/extending-themes.html
+++ b/content/tag-developers/extending-themes.html
@@ -158,7 +158,7 @@
       <li><a href="#extending-an-existing-theme" 
id="markdown-toc-extending-an-existing-theme">Extending an Existing 
Theme</a></li>
     </ul>
   </li>
-  <li><a href="#special-parameters" 
id="markdown-toc-special-parameters">Special parameters</a></li>
+  <li><a href="#special-attributes" 
id="markdown-toc-special-attributes">Special attributes</a></li>
 </ul>
 
 <p>Most often, an application may just need to override a template (see <a 
href="template-loading">Template Loading</a>) so that 
@@ -189,9 +189,13 @@ by adding a header and footer.</p>
 
 <h3 id="wrapping-a-control">Wrapping a control</h3>
 
-<div class="language-ftl highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="err">&lt;#</span><span 
class="no">include</span><span class="w"> </span>"/$<span 
class="p">{</span><span class="no">parameters</span><span 
class="na">.templateDir</span><span class="p">}</span>/$<span 
class="p">{</span><span class="no">parameters</span><span 
class="na">.expandTheme</span><span class="p">}</span>/controlheader.ftl" 
/&gt;<span class="w">
-</span><span class="err">&lt;#</span><span class="no">include</span><span 
class="w"> </span>"/$<span class="p">{</span><span 
class="no">parameters</span><span class="na">.templateDir</span><span 
class="p">}</span>/simple/xxx.ftl" /&gt;<span class="w">
-</span><span class="err">&lt;#</span><span class="no">include</span><span 
class="w"> </span>"/$<span class="p">{</span><span 
class="no">parameters</span><span class="na">.templateDir</span><span 
class="p">}</span>/$<span class="p">{</span><span 
class="no">parameters</span><span class="na">.expandTheme</span><span 
class="p">}</span>/controlfooter.ftl" /&gt;<span class="w">
+<blockquote>
+  <p>NOTE: Since Struts 7.x the <code class="language-plaintext 
highlighter-rouge">parameters</code> have been replaced with <code 
class="language-plaintext highlighter-rouge">attributes</code></p>
+</blockquote>
+
+<div class="language-ftl highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="err">&lt;#</span><span 
class="no">include</span><span class="w"> </span>"/$<span 
class="p">{</span><span class="no">attributes</span><span 
class="na">.templateDir</span><span class="p">}</span>/$<span 
class="p">{</span><span class="no">attributes</span><span 
class="na">.expandTheme</span><span class="p">}</span>/controlheader.ftl" 
/&gt;<span class="w">
+</span><span class="err">&lt;#</span><span class="no">include</span><span 
class="w"> </span>"/$<span class="p">{</span><span 
class="no">attributes</span><span class="na">.templateDir</span><span 
class="p">}</span>/simple/xxx.ftl" /&gt;<span class="w">
+</span><span class="err">&lt;#</span><span class="no">include</span><span 
class="w"> </span>"/$<span class="p">{</span><span 
class="no">attributes</span><span class="na">.templateDir</span><span 
class="p">}</span>/$<span class="p">{</span><span 
class="no">attributes</span><span class="na">.expandTheme</span><span 
class="p">}</span>/controlfooter.ftl" /&gt;<span class="w">
 </span></code></pre></div></div>
 
 <p>Wrapping is a great way to augment the basic HTML elements provided by the 
simple theme.</p>
@@ -211,7 +215,7 @@ The <a href="ajax-theme">ajax theme</a> extends the <a 
href="xhtml-theme">xhtml
 <p>An extended theme does not need to implement every single template that the 
<a href="struts-tags">Struts Tags</a> expect. 
 It only needs to implement the templates that change. The other templates are 
loaded from the parent template.</p>
 
-<h2 id="special-parameters">Special parameters</h2>
+<h2 id="special-attributes">Special attributes</h2>
 
 <p><a 
href="http://struts.apache.org/maven/struts2-core/apidocs/org/apache/struts2/components/UIBean";>UIBean</a>
 provides few 
 special parameters which can be used to build a new template (they are already 
used in <code class="language-plaintext highlighter-rouge">xhtml</code> and 
<code class="language-plaintext highlighter-rouge">css_xhtml</code> theme):</p>
@@ -229,12 +233,12 @@ theme (and parent theme, and so on)</li>
 <p>Using <code class="language-plaintext highlighter-rouge">expandTheme</code> 
parameter allows to override only some parts of the theme’s templates, e.g. 
<code class="language-plaintext highlighter-rouge">css.ftl</code>. You can
 define a new theme (set <code class="language-plaintext 
highlighter-rouge">theme.properties</code>) and override just single file.</p>
 
-<p><code class="language-plaintext 
highlighter-rouge">${parameters.expandTheme}</code> is a recurrence which tells 
<code class="language-plaintext highlighter-rouge">ThemeManager</code> to load 
template from current theme and then 
+<p><code class="language-plaintext 
highlighter-rouge">${attributes.expandTheme}</code> is a recurrence which tells 
<code class="language-plaintext highlighter-rouge">ThemeManager</code> to load 
template from current theme and then 
 from parent theme (defined in <code class="language-plaintext 
highlighter-rouge">theme.properties</code>) and so on.</p>
 
 <p>Please also notice that the <code class="language-plaintext 
highlighter-rouge">ThemeManager</code> builds list of possible templates based 
on current theme and inherited 
 themes (<code class="language-plaintext 
highlighter-rouge">/template/custom/textarea.ftl</code>, <code 
class="language-plaintext 
highlighter-rouge">/template/xhtml/textarea.ftl</code>, <code 
class="language-plaintext 
highlighter-rouge">/template/simple/textarea.ftl</code>). This is also 
-true for templates which are loaded via <code class="language-plaintext 
highlighter-rouge">${parameters.expandTheme}</code>.</p>
+true for templates which are loaded via <code class="language-plaintext 
highlighter-rouge">${attributes.expandTheme}</code>.</p>
 
 <blockquote>
   <p>See also example <a href="">Struts 2 Themes</a> or <a 
href="http://www.vitarara.org/cms/struts_2_cookbook/creating_a_theme";>Creating 
a Theme in Struts 2</a> (Mark Menard)</p>
diff --git a/content/tag-developers/form-tags.html 
b/content/tag-developers/form-tags.html
index 0aa16cf32..4b855ecd7 100644
--- a/content/tag-developers/form-tags.html
+++ b/content/tag-developers/form-tags.html
@@ -222,9 +222,9 @@ is not supported.</p>
 in to three categories: <em>templated-related</em>, 
<em>javascript-related</em>, and <em>general</em> attributes. The individual 
attributes
 are documented on each tag’s reference page.</p>
 
-<p>In addition to the common attributes, a special attribute exists for all 
form element tags: <code class="language-plaintext 
highlighter-rouge">form</code> (<code class="language-plaintext 
highlighter-rouge">${parameters.form}</code>). 
+<p>In addition to the common attributes, a special attribute exists for all 
form element tags: <code class="language-plaintext 
highlighter-rouge">form</code> (<code class="language-plaintext 
highlighter-rouge">${attributes.form}</code>). 
 The <code class="language-plaintext highlighter-rouge">form</code> property 
represents the attributes used to render the form tag, such as the form’s id. 
In a template, 
-the form’s ID can be found by calling <code class="language-plaintext 
highlighter-rouge">${parameters.form.id}</code>.</p>
+the form’s ID can be found by calling <code class="language-plaintext 
highlighter-rouge">${attributes.form.id}</code>.</p>
 
 <h2 id="template-related-attributes">Template-Related Attributes</h2>
 
@@ -559,8 +559,8 @@ If a <code class="language-plaintext 
highlighter-rouge">value</code> is not spec
 </span><span class="err">&lt;/@</span><span class="no">s</span><span 
class="na">.form</span><span class="err">&gt;</span><span class="w">
 </span></code></pre></div></div>
 
-<p>While most attributes are exposed to the underlying templates as the same 
key as the attribute (<code class="language-plaintext 
highlighter-rouge">${parameters.label}</code>), 
-the <code class="language-plaintext highlighter-rouge">value</code> attribute 
is not. Instead, it can be accessed via the <code class="language-plaintext 
highlighter-rouge">nameValue</code> key (<code class="language-plaintext 
highlighter-rouge">${parameters.nameValue}</code>).
+<p>While most attributes are exposed to the underlying templates as the same 
key as the attribute (<code class="language-plaintext 
highlighter-rouge">${attributes.label}</code>), 
+the <code class="language-plaintext highlighter-rouge">value</code> attribute 
is not. Instead, it can be accessed via the <code class="language-plaintext 
highlighter-rouge">nameValue</code> key (<code class="language-plaintext 
highlighter-rouge">${attributes.nameValue}</code>).
 The <code class="language-plaintext highlighter-rouge">nameValue</code> key 
indicates that the value may have been generated from the <code 
class="language-plaintext highlighter-rouge">name</code> attribute rather than 
explicitly
 defined in the <code class="language-plaintext highlighter-rouge">value</code> 
attribute.</p>
 
diff --git a/content/tag-developers/freemarker-tags.html 
b/content/tag-developers/freemarker-tags.html
index 9fb3150de..748020dad 100644
--- a/content/tag-developers/freemarker-tags.html
+++ b/content/tag-developers/freemarker-tags.html
@@ -197,12 +197,16 @@ pages even easier to code. You can even invoke 
third-party JSP taglibs as if the
 
 <h2 id="attributes-and-parameters">Attributes and Parameters</h2>
 
+<blockquote>
+  <p>NOTE: Since Struts 7.x the <code class="language-plaintext 
highlighter-rouge">parameters</code> have been replaced with <code 
class="language-plaintext highlighter-rouge">attributes</code></p>
+</blockquote>
+
 <p>Unlike older versions of JSP (in which the <a href="jsp-tags">JSP Tags</a> 
are based), FreeMarker allows for <em>dynamic attributes</em>, 
-much like JSP 2.0. You can supply attributes to the tags that the tag doesn’t 
explicitedly support. Those attributes 
-that cannot be applied directly to the tag object will be set to the tag’s 
general-purpose <code class="language-plaintext 
highlighter-rouge">parameters</code> Map.</p>
+much like JSP 2.0. You can supply attributes to the tags that the tag doesn’t 
explicitly support. Those attributes 
+that cannot be applied directly to the tag object will be set to the tag’s 
general-purpose <code class="language-plaintext 
highlighter-rouge">attributes</code> Map.</p>
 
-<p>Suppose we wanted to build an URL in a JSP. The URL needs to take an 
arbitary parameter to the query string, 
-that (being arbitary) isn’t specified on the URL tag. In a JSP, we’d have to 
use the <code class="language-plaintext highlighter-rouge">url</code> and <code 
class="language-plaintext highlighter-rouge">param</code> tags together.</p>
+<p>Suppose we wanted to build an URL in a JSP. The URL needs to take an 
arbitrary parameter to the query string, 
+that (being arbitrary) isn’t specified on the URL tag. In a JSP, we’d have to 
use the <code class="language-plaintext highlighter-rouge">url</code> and <code 
class="language-plaintext highlighter-rouge">param</code> tags together.</p>
 
 <p><strong>Creating a URL with a query string (JSP)</strong></p>
 
@@ -232,10 +236,10 @@ attribute into the textfield tag, no fuss, no muss.</p>
 </span><span class="err">&lt;/@</span><span class="no">s</span><span 
class="na">.form</span><span class="err">&gt;</span><span class="w">
 </span></code></pre></div></div>
 
-<p>In the new template, the description is referenced via the parameters Map: 
<code class="language-plaintext 
highlighter-rouge">${parameters.description}</code>.</p>
+<p>In the new template, the description is referenced via the attributes Map: 
<code class="language-plaintext 
highlighter-rouge">${attributes.description}</code>.</p>
 
 <blockquote>
-  <p>For simple cases, inline attributes are much easier to use than the 
param} tag. But, the <code class="language-plaintext 
highlighter-rouge">param</code> tag is more flexible 
+  <p>For simple cases, inline attributes are much easier to use than the param 
tag. But, the <code class="language-plaintext highlighter-rouge">param</code> 
tag is more flexible 
 than inline attributes for advanced use cases. For example, <code 
class="language-plaintext highlighter-rouge">param</code> can take the entire 
body of the tag and apply 
 that as the <code class="language-plaintext highlighter-rouge">value</code> 
attribute.</p>
 </blockquote>
diff --git a/content/tag-developers/freemarker.html 
b/content/tag-developers/freemarker.html
index 57a63afee..20ff5ca45 100644
--- a/content/tag-developers/freemarker.html
+++ b/content/tag-developers/freemarker.html
@@ -273,14 +273,14 @@ Request parameters, and framework Context scope 
parameters.</p>
 
 <p>Assuming there’s a request parameter <code class="language-plaintext 
highlighter-rouge">myParameter</code> (eg. 
[http://host/myApp/myAction.action?myParameter=one]).</p>
 
-<div class="language-ftl highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="err">&lt;#</span><span 
class="no">if</span><span class="w"> 
</span>Parameters.myParameter?exists&gt;<span class="w">
-     </span>$<span class="p">{</span><span class="nb">P</span><span 
class="no">arameters</span><span class="na">.myParameter</span><span 
class="p">}</span><span class="w">
+<div class="language-ftl highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="err">&lt;#</span><span 
class="no">if</span><span class="w"> 
</span>attributes.myParameter?exists&gt;<span class="w">
+     </span>$<span class="p">{</span><span class="no">attributes</span><span 
class="na">.myParameter</span><span class="p">}</span><span class="w">
 </span><span class="err">&lt;/#</span><span class="no">if</span><span 
class="err">&gt;</span><span class="w">
 </span></code></pre></div></div>
 
 <p>or</p>
 
-<div class="language-ftl highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="err">&lt;@</span><span 
class="no">s</span><span class="na">.property</span><span class="w"> 
</span>value="%<span class="p">{</span><span class="err">#</span><span 
class="no">parameters</span><span class="na">.myParameter</span><span 
class="p">}</span>" /&gt;<span class="w">
+<div class="language-ftl highlighter-rouge"><div class="highlight"><pre 
class="highlight"><code><span class="err">&lt;@</span><span 
class="no">s</span><span class="na">.property</span><span class="w"> 
</span>value="%<span class="p">{</span><span class="err">#</span><span 
class="no">attributes</span><span class="na">.myParameter</span><span 
class="p">}</span>" /&gt;<span class="w">
 </span></code></pre></div></div>
 
 <h3 id="context-parameter">Context parameter</h3>
diff --git a/content/tag-developers/xhtml-theme.html 
b/content/tag-developers/xhtml-theme.html
index 379488869..230cccaa1 100644
--- a/content/tag-developers/xhtml-theme.html
+++ b/content/tag-developers/xhtml-theme.html
@@ -208,7 +208,7 @@ and <code class="language-plaintext 
highlighter-rouge">controlfooter.ftl</code>
 &lt;#include 
"/${attributes.templateDir}/${attributes.expandTheme}/controlfooter.ftl" 
/&gt;</code></pre></figure>
 
 <blockquote>
-  <p>The <code class="language-plaintext 
highlighter-rouge">controlheader.ftl</code> is referenced using <code 
class="language-plaintext highlighter-rouge">${parameters.theme}</code> so that 
the code can be reused 
+  <p>The <code class="language-plaintext 
highlighter-rouge">controlheader.ftl</code> is referenced using <code 
class="language-plaintext highlighter-rouge">${attributes.theme}</code> so that 
the code can be reused 
 by the <a href="ajax-theme">ajax theme</a>.</p>
 </blockquote>
 

Reply via email to