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">--></span><span class="w"> </span><span class="err"><</span><span class="no">ul</span><span class="err"><#</span><span class="no">rt</span><span class="err">/></span><span class="w"> -</span><span class="err"><#</span><span class="no">if</span><span class="w"> </span>parameters.id??><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>"<#rt/><span class="w"> +</span><span class="err"><#</span><span class="no">if</span><span class="w"> </span>attributes.id??><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>"<#rt/><span class="w"> </span><span class="err"></#</span><span class="no">if</span><span class="err">></span><span class="w"> -</span><span class="err"><#</span><span class="no">if</span><span class="w"> </span>parameters.cssClass??><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>"<#rt/><span class="w"> +</span><span class="err"><#</span><span class="no">if</span><span class="w"> </span>attributes.cssClass??><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>"<#rt/><span class="w"> </span><span class="err"><#</span><span class="no">else</span><span class="err">></span><span class="w"> </span>class="errorMessage"<#rt/><span class="w"> </span><span class="err"></#</span><span class="no">if</span><span class="err">></span><span class="w"> -</span><span class="err"><#</span><span class="no">if</span><span class="w"> </span>parameters.cssStyle??><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>"<#rt/><span class="w"> +</span><span class="err"><#</span><span class="no">if</span><span class="w"> </span>attributes.cssStyle??><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>"<#rt/><span class="w"> </span><span class="err"></#</span><span class="no">if</span><span class="err">></span><span class="w"> </span><span class="err">></span><span class="w"> </span><span class="err"><#</span><span class="no">if</span><span class="w"> </span>(actionErrors?? && actionErrors?size > 0)><span class="w"> </span><#list actionErrors as error><span class="w"> </span><#if error??><span class="w"> - </span><li><span><#if parameters.escape>$<span class="p">{</span><span class="no">error</span><span class="err">!?</span><span class="no">html</span><span class="p">}</span><#else>$<span class="p">{</span><span class="no">error</span><span class="err">!</span><span class="p">}</span></#if></span><#rt/></li><#rt/><span class="w"> + </span><li><span><#if attributes.escape>$<span class="p">{</span><span class="no">error</span><span class="err">!?</span><span class="no">html</span><span class="p">}</span><#else>$<span class="p">{</span><span class="no">error</span><span class="err">!</span><span class="p">}</span></#if></span><#rt/></li><#rt/><span class="w"> </span></#if><span class="w"> </span></#list><span class="w"> </span><span class="err"></#</span><span class="no">if</span><span class="err">></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">!}<#</span><span class="no">t</span><span class="err">/></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">!}<#</span><span class="no">t</span><span class="err">/></span><span class="w"> </span></td><#lt/><span class="w"> </span><span class="err"></</span><span class="no">tr</span><span class="err">></span><span class="w"> -</span><span class="err"><#</span><span class="no">if</span><span class="w"> </span>(parameters.errorposition!"top") == 'bottom'><span class="w"> -</span><span class="err"><#</span><span class="no">assign</span><span class="w"> </span>hasFieldErrors = parameters.name?? && fieldErrors?? && fieldErrors[parameters.name]??/><span class="w"> +</span><span class="err"><#</span><span class="no">if</span><span class="w"> </span>(attributes.errorposition!"top") == 'bottom'><span class="w"> +</span><span class="err"><#</span><span class="no">assign</span><span class="w"> </span>hasFieldErrors = attributes.name?? && fieldErrors?? && fieldErrors[attributes.name]??/><span class="w"> </span><span class="err"><#</span><span class="no">if</span><span class="w"> </span>hasFieldErrors><span class="w"> -</span><span class="err"><</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>"><span class="w"> +</span><span class="err"><</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>"><span class="w"> </span><td class="tdErrorMessage" colspan="2"><#rt/><span class="w"> </span><#if hasFieldErrors><span class="w"> - </span><#list fieldErrors[parameters.name] as error><span class="w"> + </span><#list fieldErrors[attributes.name] as error><span class="w"> </span><div class="errorMessage">$<span class="p">{</span><span class="no">error</span><span class="err">?</span><span class="no">html</span><span class="p">}</span></div><#t/><span class="w"> </span></#list><span class="w"> </span></#if><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"><#--</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">--></span><span class="w"> -</span><span class="err"><#</span><span class="no">assign</span><span class="w"> </span>hasFieldErrors = parameters.name?? && fieldErrors?? && fieldErrors[parameters.name]??/><span class="w"> -</span><span class="err"><#</span><span class="no">if</span><span class="w"> </span>(parameters.errorposition!"top") == 'top'><span class="w"> -</span><span class="err"><</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>"><span class="w"> - </span><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>"><#rt/><span class="w"> +</span><span class="err"><#</span><span class="no">assign</span><span class="w"> </span>hasFieldErrors = attributes.name?? && fieldErrors?? && fieldErrors[attributes.name]??/><span class="w"> +</span><span class="err"><#</span><span class="no">if</span><span class="w"> </span>(attributes.errorposition!"top") == 'top'><span class="w"> +</span><span class="err"><</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>"><span class="w"> + </span><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>"><#rt/><span class="w"> </span><#if hasFieldErrors><span class="w"> - </span><#list fieldErrors[parameters.name] as error><span class="w"> + </span><#list fieldErrors[attributes.name] as error><span class="w"> </span><div class="errorMessage">$<span class="p">{</span><span class="no">error</span><span class="err">?</span><span class="no">html</span><span class="p">}</span></div><#t/><span class="w"> </span></#list><span class="w"> </span></#if><span class="w"> </span></td><#lt/><span class="w"> </span><span class="err"></</span><span class="no">tr</span><span class="err">></span><span class="w"> </span><span class="err"></#</span><span class="no">if</span><span class="err">></span><span class="w"> -</span><span class="err"><#</span><span class="no">if</span><span class="w"> </span>!parameters.labelposition?? && (parameters.form.labelposition)??><span class="w"> -</span><span class="err"><#</span><span class="no">assign</span><span class="w"> </span>labelpos = parameters.form.labelposition/><span class="w"> -</span><span class="err"><#</span><span class="no">elseif</span><span class="w"> </span>parameters.labelposition??><span class="w"> -</span><span class="err"><#</span><span class="no">assign</span><span class="w"> </span>labelpos = parameters.labelposition/><span class="w"> +</span><span class="err"><#</span><span class="no">if</span><span class="w"> </span>!attributes.labelposition?? && (attributes.form.labelposition)??><span class="w"> +</span><span class="err"><#</span><span class="no">assign</span><span class="w"> </span>labelpos = attributes.form.labelposition/><span class="w"> +</span><span class="err"><#</span><span class="no">elseif</span><span class="w"> </span>attributes.labelposition??><span class="w"> +</span><span class="err"><#</span><span class="no">assign</span><span class="w"> </span>labelpos = attributes.labelposition/><span class="w"> </span><span class="err"></#</span><span class="no">if</span><span class="err">></span><span class="w"> </span><span class="err"><#--</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"><#</span><span class="no">else</span><span class="err">></span><span class="w"> </span><td class="tdLabel"><#rt/><span class="w"> </span><span class="err"></#</span><span class="no">if</span><span class="err">></span><span class="w"> -</span><span class="err"><#</span><span class="no">if</span><span class="w"> </span>parameters.label??><span class="w"> +</span><span class="err"><#</span><span class="no">if</span><span class="w"> </span>attributes.label??><span class="w"> </span><label <#t/><span class="w"> -</span><span class="err"><#</span><span class="no">if</span><span class="w"> </span>parameters.id??><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>" <#t/><span class="w"> +</span><span class="err"><#</span><span class="no">if</span><span class="w"> </span>attributes.id??><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>" <#t/><span class="w"> </span><span class="err"></#</span><span class="no">if</span><span class="err">></span><span class="w"> </span><span class="err"><#</span><span class="no">if</span><span class="w"> </span>hasFieldErrors><span class="w"> </span>class="errorLabel"<#t/><span class="w"> @@ -467,15 +467,15 @@ but as usual request, not AJAX.</p> </span>class="label"<#t/><span class="w"> </span><span class="err"></#</span><span class="no">if</span><span class="err">></span><span class="w"> </span>><#t/><span class="w"> -</span><span class="err"><#</span><span class="no">if</span><span class="w"> </span>parameters.required!false && parameters.requiredPosition!"right" != 'right'><span class="w"> +</span><span class="err"><#</span><span class="no">if</span><span class="w"> </span>attributes.required!false && attributes.requiredPosition!"right" != 'right'><span class="w"> </span><span class="required"><span class="err">*</span></span><#t/><span class="w"> </span><span class="err"></#</span><span class="no">if</span><span class="err">></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">}<#</span><span class="no">t</span><span class="err">/></span><span class="w"> -</span><span class="err"><#</span><span class="no">if</span><span class="w"> </span>parameters.required!false && parameters.requiredPosition!"right" == 'right'><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">}<#</span><span class="no">t</span><span class="err">/></span><span class="w"> +</span><span class="err"><#</span><span class="no">if</span><span class="w"> </span>attributes.required!false && attributes.requiredPosition!"right" == 'right'><span class="w"> </span><span class="required"><span class="err">*</span></span><#t/><span class="w"> </span><span class="err"></#</span><span class="no">if</span><span class="err">></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">}<#</span><span class="no">t</span><span class="err">/></span><span class="w"> -</span><span class="err"><#</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" /><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">}<#</span><span class="no">t</span><span class="err">/></span><span class="w"> +</span><span class="err"><#</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" /><span class="w"> </span><span class="err"></</span><span class="no">label</span><span class="err">><#</span><span class="no">t</span><span class="err">/></span><span class="w"> </span><span class="err"></#</span><span class="no">if</span><span class="err">></span><span class="w"> </span></td><#lt/><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"><#</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" /><span class="w"> +<div class="language-ftl highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="err"><#</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" /><span class="w"> -</span><span class="err"><#</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" /><span class="w"> +</span><span class="err"><#</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" /><span class="w"> -</span><span class="err"><#</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" /><#nt/><span class="w"> +</span><span class="err"><#</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" /><#nt/><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">></span> <span class="nt"><ul</span><span class="err"><</span><span class="na">#rt</span><span class="nt">/></span> -<span class="nt"><</span><span class="na">#if</span> <span class="na">parameters.id</span><span class="err">??</span><span class="nt">></span> - id="${parameters.id?html}"<span class="nt"><</span><span class="na">#rt</span><span class="nt">/></span> +<span class="nt"><</span><span class="na">#if</span> <span class="na">attributes.id</span><span class="err">??</span><span class="nt">></span> + id="${attributes.id?html}"<span class="nt"><</span><span class="na">#rt</span><span class="nt">/></span> <span class="nt"></</span><span class="err">#</span><span class="nt">if></span> -<span class="nt"><</span><span class="na">#if</span> <span class="na">parameters.cssClass</span><span class="err">??</span><span class="nt">></span> - class="${parameters.cssClass?html}"<span class="nt"><</span><span class="na">#rt</span><span class="nt">/></span> +<span class="nt"><</span><span class="na">#if</span> <span class="na">attributes.cssClass</span><span class="err">??</span><span class="nt">></span> + class="${attributes.cssClass?html}"<span class="nt"><</span><span class="na">#rt</span><span class="nt">/></span> <span class="nt"><</span><span class="na">#else</span><span class="nt">></span> class="errorMessage"<span class="nt"><</span><span class="na">#rt</span><span class="nt">/></span> <span class="nt"></</span><span class="err">#</span><span class="nt">if></span> -<span class="nt"><</span><span class="na">#if</span> <span class="na">parameters.cssStyle</span><span class="err">??</span><span class="nt">></span> - style="${parameters.cssStyle?html}"<span class="nt"><</span><span class="na">#rt</span><span class="nt">/></span> +<span class="nt"><</span><span class="na">#if</span> <span class="na">attributes.cssStyle</span><span class="err">??</span><span class="nt">></span> + style="${attributes.cssStyle?html}"<span class="nt"><</span><span class="na">#rt</span><span class="nt">/></span> <span class="nt"></</span><span class="err">#</span><span class="nt">if></span> > <span class="nt"><</span><span class="na">#if</span> <span class="err">(</span><span class="na">actionErrors</span><span class="err">??</span> <span class="err">&&</span> <span class="na">actionErrors</span><span class="err">?</span><span class="na">size</span> <span class="nt">></span> 0)> <span class="nt"><</span><span class="na">#list</span> <span class="na">actionErrors</span> <span class="na">as</span> <span class="na">error</span><span class="nt">></span> <span class="nt"><</span><span class="na">#if</span> <span class="na">error</span><span class="err">??</span><span class="nt">></span> - <span class="nt"><li><span><</span><span class="na">#if</span> <span class="na">parameters.escape</span><span class="nt">></span>${error!?html}<span class="nt"><</span><span class="na">#else</span><span class="nt">></span>${error!}<span class="nt"></</span><span class="err">#</span><span class="nt">if></span><</span><span class="na">#rt</span><span class="nt">/></li><</span><span class="na">#rt</span><span class="nt">/></span> + <span class="nt"><li><span><</span><span class="na">#if</span> <span class="na">attributes.escape</span><span class="nt">></span>${error!?html}<span class="nt"><</span><span class="na">#else</span><span class="nt">></span>${error!}<span class="nt"></</span><span class="err">#</span><span class="nt">if></span><</span><span class="na">#rt</span><span class="nt">/></li><</span><span class="na">#rt</span><span class="nt">/></span> <span class="nt"></</span><span class="err">#</span><span class="nt">if></span> <span class="nt"></</span><span class="err">#</span><span class="nt">list></span> <span class="nt"></</span><span class="err">#</span><span class="nt">if></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"><</span><span class="na">#t</span><span class="nt">/></span> +<div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code>${attributes.after!}<span class="nt"><</span><span class="na">#t</span><span class="nt">/></span> <span class="nt"></td><</span><span class="na">#lt</span><span class="nt">/></span> <span class="nt"></tr></span> -<span class="nt"><</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">></span> -<span class="nt"><</span><span class="na">#assign</span> <span class="na">hasFieldErrors = </span><span class="s">parameters.name??</span> <span class="err">&&</span> <span class="na">fieldErrors</span><span class="err">??</span> <span class="err">&&</span> <span class="na">fieldErrors</span><span class="err">[</span><span class="na">parameters.name</span><span class="err">]??</span><span class="nt">/></span> +<span class="nt"><</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">></span> +<span class="nt"><</span><span class="na">#assign</span> <span class="na">hasFieldErrors = </span><span class="s">attributes.name??</span> <span class="err">&&</span> <span class="na">fieldErrors</span><span class="err">??</span> <span class="err">&&</span> <span class="na">fieldErrors</span><span class="err">[</span><span class="na">attributes.name</span><span class="err">]??</span><span class="nt">/></span> <span class="nt"><</span><span class="na">#if</span> <span class="na">hasFieldErrors</span><span class="nt">></span> -<span class="nt"><tr</span> <span class="na">errorFor=</span><span class="s">"${parameters.id}"</span><span class="nt">></span> +<span class="nt"><tr</span> <span class="na">errorFor=</span><span class="s">"${attributes.id}"</span><span class="nt">></span> <span class="nt"><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">><</span><span class="na">#rt</span><span class="nt">/></span> <span class="nt"><</span><span class="na">#if</span> <span class="na">hasFieldErrors</span><span class="nt">></span> - <span class="nt"><</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">></span> + <span class="nt"><</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">></span> <span class="nt"><div</span> <span class="na">class=</span><span class="s">"errorMessage"</span><span class="nt">></span>${error?html}<span class="nt"></div><</span><span class="na">#t</span><span class="nt">/></span> <span class="nt"></</span><span class="err">#</span><span class="nt">list></span> <span class="nt"></</span><span class="err">#</span><span class="nt">if></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"><</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">></span> -<span class="nt"><</span><span class="na">#assign</span> <span class="na">hasFieldErrors = </span><span class="s">parameters.name??</span> <span class="err">&&</span> <span class="na">fieldErrors</span><span class="err">??</span> <span class="err">&&</span> <span class="na">fieldErrors</span><span class="err">[</span><span class="na">parameters.name</span><span class="err">]??</span><span class="nt">/></span> -<span class="nt"><</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">></span> -<span class="nt"><tr</span> <span class="na">errorFor=</span><span class="s">"${parameters.id}"</span><span class="nt">></span> - <span class="nt"><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">><</span><span class="na">#rt</span><span class="nt">/></span> +<span class="nt"><</span><span class="na">#assign</span> <span class="na">hasFieldErrors = </span><span class="s">attributes.name??</span> <span class="err">&&</span> <span class="na">fieldErrors</span><span class="err">??</span> <span class="err">&&</span> <span class="na">fieldErrors</span><span class="err">[</span><span class="na">attributes.name</span><span class="err">]??</span><span class="nt">/></span> +<span class="nt"><</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">></span> +<span class="nt"><tr</span> <span class="na">errorFor=</span><span class="s">"${attributes.id}"</span><span class="nt">></span> + <span class="nt"><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">><</span><span class="na">#rt</span><span class="nt">/></span> <span class="nt"><</span><span class="na">#if</span> <span class="na">hasFieldErrors</span><span class="nt">></span> - <span class="nt"><</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">></span> + <span class="nt"><</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">></span> <span class="nt"><div</span> <span class="na">class=</span><span class="s">"errorMessage"</span><span class="nt">></span>${error?html}<span class="nt"></div><</span><span class="na">#t</span><span class="nt">/></span> <span class="nt"></</span><span class="err">#</span><span class="nt">list></span> <span class="nt"></</span><span class="err">#</span><span class="nt">if></span> <span class="nt"></td><</span><span class="na">#lt</span><span class="nt">/></span> <span class="nt"></tr></span> <span class="nt"></</span><span class="err">#</span><span class="nt">if></span> -<span class="nt"><</span><span class="na">#if</span> <span class="err">!</span><span class="na">parameters.labelposition</span><span class="err">??</span> <span class="err">&&</span> <span class="err">(</span><span class="na">parameters.form.labelposition</span><span class="err">)??</span><span class="nt">></span> -<span class="nt"><</span><span class="na">#assign</span> <span class="na">labelpos = </span><span class="s">parameters.form.labelposition/</span><span class="nt">></span> -<span class="nt"><</span><span class="na">#elseif</span> <span class="na">parameters.labelposition</span><span class="err">??</span><span class="nt">></span> -<span class="nt"><</span><span class="na">#assign</span> <span class="na">labelpos = </span><span class="s">parameters.labelposition/</span><span class="nt">></span> +<span class="nt"><</span><span class="na">#if</span> <span class="err">!</span><span class="na">attributes.labelposition</span><span class="err">??</span> <span class="err">&&</span> <span class="err">(</span><span class="na">attributes.form.labelposition</span><span class="err">)??</span><span class="nt">></span> +<span class="nt"><</span><span class="na">#assign</span> <span class="na">labelpos = </span><span class="s">attributes.form.labelposition/</span><span class="nt">></span> +<span class="nt"><</span><span class="na">#elseif</span> <span class="na">attributes.labelposition</span><span class="err">??</span><span class="nt">></span> +<span class="nt"><</span><span class="na">#assign</span> <span class="na">labelpos = </span><span class="s">attributes.labelposition/</span><span class="nt">></span> <span class="nt"></</span><span class="err">#</span><span class="nt">if></span> <span class="nt"><</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"><</span><span class="na">#else</span><span class="nt">></span> <span class="nt"><td</span> <span class="na">class=</span><span class="s">"tdLabel"</span><span class="nt">><</span><span class="na">#rt</span><span class="nt">/></span> <span class="nt"></</span><span class="err">#</span><span class="nt">if></span> -<span class="nt"><</span><span class="na">#if</span> <span class="na">parameters.label</span><span class="err">??</span><span class="nt">></span> +<span class="nt"><</span><span class="na">#if</span> <span class="na">attributes.label</span><span class="err">??</span><span class="nt">></span> <span class="nt"><label</span> <span class="err"><</span><span class="na">#t</span><span class="nt">/></span> -<span class="nt"><</span><span class="na">#if</span> <span class="na">parameters.id</span><span class="err">??</span><span class="nt">></span> - for="${parameters.id?html}" <span class="nt"><</span><span class="na">#t</span><span class="nt">/></span> +<span class="nt"><</span><span class="na">#if</span> <span class="na">attributes.id</span><span class="err">??</span><span class="nt">></span> + for="${attributes.id?html}" <span class="nt"><</span><span class="na">#t</span><span class="nt">/></span> <span class="nt"></</span><span class="err">#</span><span class="nt">if></span> <span class="nt"><</span><span class="na">#if</span> <span class="na">hasFieldErrors</span><span class="nt">></span> class="errorLabel"<span class="nt"><</span><span class="na">#t</span><span class="nt">/></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"><</span><span class="na">#t</span><span class="nt">/></span> <span class="nt"></</span><span class="err">#</span><span class="nt">if></span> ><span class="nt"><</span><span class="na">#t</span><span class="nt">/></span> -<span class="nt"><</span><span class="na">#if</span> <span class="na">parameters.required</span><span class="err">!</span><span class="na">false</span> <span class="err">&&</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">></span> +<span class="nt"><</span><span class="na">#if</span> <span class="na">attributes.required</span><span class="err">!</span><span class="na">false</span> <span class="err">&&</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">></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"required"</span><span class="nt">></span>*<span class="nt"></span><</span><span class="na">#t</span><span class="nt">/></span> <span class="nt"></</span><span class="err">#</span><span class="nt">if></span> -${parameters.label?html}<span class="nt"><</span><span class="na">#t</span><span class="nt">/></span> -<span class="nt"><</span><span class="na">#if</span> <span class="na">parameters.required</span><span class="err">!</span><span class="na">false</span> <span class="err">&&</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">></span> +${attributes.label?html}<span class="nt"><</span><span class="na">#t</span><span class="nt">/></span> +<span class="nt"><</span><span class="na">#if</span> <span class="na">attributes.required</span><span class="err">!</span><span class="na">false</span> <span class="err">&&</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">></span> <span class="nt"><span</span> <span class="na">class=</span><span class="s">"required"</span><span class="nt">></span>*<span class="nt"></span><</span><span class="na">#t</span><span class="nt">/></span> <span class="nt"></</span><span class="err">#</span><span class="nt">if></span> -${parameters.labelseparator!":"?html}<span class="nt"><</span><span class="na">#t</span><span class="nt">/></span> -<span class="nt"><</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">/></span> +${attributes.labelseparator!":"?html}<span class="nt"><</span><span class="na">#t</span><span class="nt">/></span> +<span class="nt"><</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">/></span> <span class="nt"></label><</span><span class="na">#t</span><span class="nt">/></span> <span class="nt"></</span><span class="err">#</span><span class="nt">if></span> <span class="nt"></td><</span><span class="na">#lt</span><span class="nt">/></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"><#</span><span class="no">if</span><span class="w"> </span>parameters.label?if_exists != ""><span class="w"> - </span><#include "/$<span class="p">{</span><span class="no">parameters</span><span class="na">.templateDir</span><span class="p">}</span>/xhtml/controlheader.ftl" /><span class="w"> +<div class="language-ftl highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="err"><#</span><span class="no">if</span><span class="w"> </span>attributes.label?if_exists != ""><span class="w"> + </span><#include "/$<span class="p">{</span><span class="no">attributes</span><span class="na">.templateDir</span><span class="p">}</span>/xhtml/controlheader.ftl" /><span class="w"> </span><span class="err"></#</span><span class="no">if</span><span class="err">></span><span class="w"> -</span><span class="err"><#</span><span class="no">if</span><span class="w"> </span>parameters.form?exists && parameters.form.validate?default(false) == true><span class="w"> +</span><span class="err"><#</span><span class="no">if</span><span class="w"> </span>attributes.form?exists && attributes.form.validate?default(false) == true><span class="w"> </span><#-- can't mutate the data model in freemarker --><span class="w"> - </span><#if parameters.onblur?exists><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><#if attributes.onblur?exists><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><#else><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></#if><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"><#</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" /><span class="w"> -</span><span class="err"><#</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" /><span class="w"> -</span><span class="err"><#</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" /><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"><#</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" /><span class="w"> +</span><span class="err"><#</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" /><span class="w"> +</span><span class="err"><#</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" /><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"></@</span><span class="no">s</span><span class="na">.form</span><span class="err">></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"></@</span><span class="no">s</span><span class="na">.form</span><span class="err">></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"><#</span><span class="no">if</span><span class="w"> </span>Parameters.myParameter?exists><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"><#</span><span class="no">if</span><span class="w"> </span>attributes.myParameter?exists><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"></#</span><span class="no">if</span><span class="err">></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"><@</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>" /><span class="w"> +<div class="language-ftl highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="err"><@</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>" /><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> <#include "/${attributes.templateDir}/${attributes.expandTheme}/controlfooter.ftl" /></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>