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 88293e5e4 Updates stage by Jenkins 88293e5e4 is described below commit 88293e5e4b8ac30eddc3be1d065dd43f99403780 Author: jenkins <bui...@apache.org> AuthorDate: Sat Apr 20 08:22:34 2024 +0000 Updates stage by Jenkins --- .../ajax-event-system.html => announce-2024.html} | 79 +++++++++++++------- .../ajax-client-side-validation.html | 84 ++++++++++----------- content/download.html | 44 +++++------ content/index.html | 26 +++---- content/plugins/json/index.html | 12 +-- content/plugins/json/json-ajax-validation.html | 86 +++++++++++----------- content/releases.html | 47 +++++++++++- content/security/index.html | 14 +--- .../ajax-and-javascript-recipes.html | 78 ++++++++++---------- content/tag-developers/ajax-div-template.html | 12 +-- content/tag-developers/ajax-event-system.html | 4 +- 11 files changed, 275 insertions(+), 211 deletions(-) diff --git a/content/tag-developers/ajax-event-system.html b/content/announce-2024.html similarity index 71% copy from content/tag-developers/ajax-event-system.html copy to content/announce-2024.html index ba01d552e..df884004c 100644 --- a/content/tag-developers/ajax-event-system.html +++ b/content/announce-2024.html @@ -7,7 +7,7 @@ <meta http-equiv="Content-Language" content="en"/> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> - <title>Tag Developers Guide</title> + <title>Announcements 2024</title> <link href="//fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,400italic,600italic,700italic" rel="stylesheet" type="text/css"> <link href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" rel="stylesheet"> @@ -146,45 +146,70 @@ <article class="container"> <section class="col-md-12"> - <a class="edit-on-gh" href="https://github.com/apache/struts-site/edit/master/source/tag-developers/ajax-event-system.md" title="Edit this page on GitHub">Edit on GitHub</a> + <a class="edit-on-gh" href="https://github.com/apache/struts-site/edit/master/source/announce-2024.md" title="Edit this page on GitHub">Edit on GitHub</a> - <h1 id="ajax-event-system">ajax event system</h1> + <h1 class="no_toc" id="announcements-2024">Announcements 2024</h1> + + +<p class="pull-right"> + Skip to: <a href="announce-2023">Announcements - 2023</a> +</p> + +<h4 id="a20240420">20 April 2024 - Apache Struts version 7.0.0-M6</h4> + +<p>The Apache Struts group is pleased to announce that Apache Struts version 7.0.0-MS is available as a Test Build.</p> + +<p>The Apache Struts is an elegant, extensible framework for creating enterprise-ready Java web applications. +The framework has been designed to streamline the full development cycle, from building, to deploying, +to maintaining applications over time.</p> <blockquote> - <p>NOTE: Ajax template (Dojo plugin) is deprecated and won’t be supported any longer.</p> + <p>Please read the <a href="https://cwiki.apache.org/confluence/display/WW/Version+Notes+7.0.0-M6">Version Notes</a> to find more details about performed +bug fixes and improvements.</p> </blockquote> -<p>As you may have seen with the <a href="ajax-div-template">ajax div template</a> and <a href="ajax-a-template">ajax a template</a>, -the framework and Dojo provide a nice way to subscribe and notify of topics from within the browser. A benefit of using -Dojo as the basis of many of these components is being able to loosely couple UI components. There are two -attributes of importance: <code class="language-plaintext highlighter-rouge">listenTopics</code> and <code class="language-plaintext highlighter-rouge">notifyTopics</code>.</p> +<p><strong>This is a test build not ready to be used in production environments!</strong></p> + +<p>The 7.x series of the Apache Struts framework has a minimum requirement of the following specification versions: +JakartaEE Servlet API 6.0.0, JakartaEE JSP API 3.0, and Java 17.</p> -<ul> - <li>If a component has a <code class="language-plaintext highlighter-rouge">notifyTopics</code> attribute, then after the processing has been completed a message with be published -to the topic names supplied as a value (comma delimited).</li> - <li>If a component has a <code class="language-plaintext highlighter-rouge">listenTopics</code> attribute, then when a message is published to the topic names supplied as a value -(comma delimited), the component will perform custom tag-specific logic ( i.e a DIV tag will re-fresh its content).</li> -</ul> +<p>Should any issues arise with your use of any version of the Struts framework, please post your comments to the user list, +and, if appropriate, file <a href="https://issues.apache.org/jira/projects/WW/">a tracking ticket</a>.</p> -<p>As well as this, you can publish and subscribe to topic names with javascript code. To publish to the <code class="language-plaintext highlighter-rouge">topic_name</code> topic:</p> +<h4 id="a20240419">19 April 2024 - Apache Struts version 6.4.0 General Availability</h4> + +<p>The Apache Struts group is pleased to announce that Apache Struts version 6.4.0 is available as a “General Availability” +release. The GA designation is our highest quality grade.</p> + +<p>The Apache Struts is an elegant, extensible framework for creating enterprise-ready Java web applications. +The framework has been designed to streamline the full development cycle, from building, to deploying, +to maintaining applications over time.</p> + +<p>This version contains a lot of proactive security improvements, which should make your application hard to compromise.</p> + +<blockquote> + <p>Please read the <a href="https://cwiki.apache.org/confluence/display/WW/Version+Notes+6.4.0">Version Notes</a> to find more details about performed +bug fixes and improvements.</p> +</blockquote> -<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">dojo</span><span class="o">.</span><span class="na">event</span><span class="o">.</span><span class="na">topic</span><span class="o">.</span><span class="na">publish</span><span class="o">(</span><span class="s">"topic_name"</span><span class="o">,</span> <span class="s">"content"</span><span class="o">);</span> -</code></pre></div></div> +<p><strong>All developers are strongly advised to perform this upgrade.</strong></p> -<p>The <code class="language-plaintext highlighter-rouge">topic_name</code> attribute is required, the content attribute is not and most elements are triggered without having this -attribute. See the <a href="ajax-div-template">ajax div template</a> for an example of this type of interaction.</p> +<p>The 6.x series of the Apache Struts framework has a minimum requirement of the following specification versions: +Servlet API 3.1, JSP API 2.1, and Java 8.</p> -<p>To subscribe to the <code class="language-plaintext highlighter-rouge">topic_name</code> topic:</p> +<p>Should any issues arise with your use of any version of the Struts framework, please post your comments to the user list, +and, if appropriate, file <a href="https://issues.apache.org/jira/projects/WW/">a tracking ticket</a>.</p> -<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">function</span> <span class="nf">doSomethingWithEvent</span><span class="p">(</span><span class="nx">data</span><span class="p">)</span> <span class="p">{</span> -<span class="p">...</span> -<span class="p">}</span> +<p>You can download this version from our <a href="download.cgi#struts-ga">download</a> page.</p> -<span class="nx">dojo</span><span class="p">.</span><span class="nx">event</span><span class="p">.</span><span class="nx">topic</span><span class="p">.</span><span class="nf">getTopic</span><span class="p">(</span><span class="dl">"</span><span class="s2">topic_name</span><span class="dl">"</span><span class="p">).</span><span class="nf">subscribe</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="dl">"</span><span class="s2">doSomethingWithEv [...] -</code></pre></div></div> +<p class="pull-right"> + Skip to: <a href="announce-2023">Announcements - 2023</a> +</p> -<p>The <code class="language-plaintext highlighter-rouge">subscribe</code> method takes 2 parameters, the first is the JavaScript object variable (or null if the function is not -from an object) and the second is the name of the function to call when an event is received on the topic.</p> +<p class="pull-left"> + <strong>Next:</strong> + <a href="kickstart">Kickstart FAQ</a> +</p> </section> </article> diff --git a/content/core-developers/ajax-client-side-validation.html b/content/core-developers/ajax-client-side-validation.html index 9570c2e5f..396dfbea1 100644 --- a/content/core-developers/ajax-client-side-validation.html +++ b/content/core-developers/ajax-client-side-validation.html @@ -509,21 +509,21 @@ It takes care of hiding validation errors that might be present, submit the form * * @param event onSubmit event */</span> -<span class="kd">function</span> <span class="nf">ajaxFormValidation</span><span class="p">(</span><span class="nx">event</span><span class="p">)</span> <span class="p">{</span> - <span class="nx">event</span><span class="p">.</span><span class="nf">preventDefault</span><span class="p">();</span> - <span class="nf">_removeValidationErrors</span><span class="p">();</span> - <span class="kd">var</span> <span class="nx">_form</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="nx">event</span><span class="p">.</span><span class="nx">target</span><span class="p">);</span> - <span class="kd">var</span> <span class="nx">_formData</span> <span class="o">=</span> <span class="nx">_form</span><span class="p">.</span><span class="nf">serialize</span><span class="p">(</span><span class="kc">true</span><span class="p">);</span> +<span class="kd">function</span> <span class="nx">ajaxFormValidation</span><span class="p">(</span><span class="nx">event</span><span class="p">)</span> <span class="p">{</span> + <span class="nx">event</span><span class="p">.</span><span class="nx">preventDefault</span><span class="p">();</span> + <span class="nx">_removeValidationErrors</span><span class="p">();</span> + <span class="kd">var</span> <span class="nx">_form</span> <span class="o">=</span> <span class="nx">$</span><span class="p">(</span><span class="nx">event</span><span class="p">.</span><span class="nx">target</span><span class="p">);</span> + <span class="kd">var</span> <span class="nx">_formData</span> <span class="o">=</span> <span class="nx">_form</span><span class="p">.</span><span class="nx">serialize</span><span class="p">(</span><span class="kc">true</span><span class="p">);</span> <span class="c1">// prepare visual feedback</span> <span class="c1">// you may want to use other elements here</span> - <span class="kd">var</span> <span class="nx">originalButton</span> <span class="o">=</span> <span class="nx">_form</span><span class="p">.</span><span class="nf">find</span><span class="p">(</span><span class="dl">'</span><span class="s1">.btn-primary</span><span class="dl">'</span><span class="p">);</span> + <span class="kd">var</span> <span class="nx">originalButton</span> <span class="o">=</span> <span class="nx">_form</span><span class="p">.</span><span class="nx">find</span><span class="p">(</span><span class="dl">'</span><span class="s1">.btn-primary</span><span class="dl">'</span><span class="p">);</span> <span class="c1">// note: jQuery returns an array-like object</span> - <span class="k">if </span><span class="p">(</span><span class="nx">originalButton</span> <span class="o">&&</span> <span class="nx">originalButton</span><span class="p">.</span><span class="nx">length</span> <span class="o">&&</span> <span class="nx">originalButton</span><span class="p">.</span><span class="nx">length</span> <span class="o">></span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span> - <span class="nx">originalButton</span><span class="p">.</span><span class="nf">hide</span><span class="p">();</span> - <span class="kd">var</span> <span class="nx">feedbackElement</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1"><div class="ajaxVisualFeedback"></div></span><span class="dl">'</span><span class="p">).</span><span class="nf">insertAfter</span><span class="p">(</span><span class="nx">originalButton</span><span class="p">);</span> + <span class="k">if</span> <span class="p">(</span><span class="nx">originalButton</span> <span class="o">&&</span> <span class="nx">originalButton</span><span class="p">.</span><span class="nx">length</span> <span class="o">&&</span> <span class="nx">originalButton</span><span class="p">.</span><span class="nx">length</span> <span class="o">></span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span> + <span class="nx">originalButton</span><span class="p">.</span><span class="nx">hide</span><span class="p">();</span> + <span class="kd">var</span> <span class="nx">feedbackElement</span> <span class="o">=</span> <span class="nx">$</span><span class="p">(</span><span class="dl">'</span><span class="s1"><div class="ajaxVisualFeedback"></div></span><span class="dl">'</span><span class="p">).</span><span class="nx">insertAfter</span><span class="p">(</span><span class="nx">originalButton</span><span class="p">);</span> <span class="kd">var</span> <span class="nx">restoreFunction</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span> - <span class="nx">originalButton</span><span class="p">.</span><span class="nf">show</span><span class="p">();</span> - <span class="nx">feedbackElement</span><span class="p">.</span><span class="nf">remove</span><span class="p">();</span> + <span class="nx">originalButton</span><span class="p">.</span><span class="nx">show</span><span class="p">();</span> + <span class="nx">feedbackElement</span><span class="p">.</span><span class="nx">remove</span><span class="p">();</span> <span class="p">}</span> <span class="p">}</span> <span class="kd">var</span> <span class="nx">options</span> <span class="o">=</span> <span class="p">{</span> @@ -531,48 +531,48 @@ It takes care of hiding validation errors that might be present, submit the form <span class="na">async</span><span class="p">:</span> <span class="kc">true</span><span class="p">,</span> <span class="na">processData</span><span class="p">:</span> <span class="kc">false</span><span class="p">,</span> <span class="na">type</span><span class="p">:</span> <span class="dl">'</span><span class="s1">POST</span><span class="dl">'</span><span class="p">,</span> - <span class="na">success</span><span class="p">:</span> <span class="nf">function </span><span class="p">(</span><span class="nx">response</span><span class="p">,</span> <span class="nx">statusText</span><span class="p">,</span> <span class="nx">xhr</span><span class="p">)</span> <span class="p">{</span> - <span class="k">if </span><span class="p">(</span><span class="nx">response</span><span class="p">.</span><span class="nx">location</span><span class="p">)</span> <span class="p">{</span> + <span class="na">success</span><span class="p">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">response</span><span class="p">,</span> <span class="nx">statusText</span><span class="p">,</span> <span class="nx">xhr</span><span class="p">)</span> <span class="p">{</span> + <span class="k">if</span> <span class="p">(</span><span class="nx">response</span><span class="p">.</span><span class="nx">location</span><span class="p">)</span> <span class="p">{</span> <span class="c1">// no validation errors</span> <span class="c1">// action has been executed and sent a redirect URL wrapped as JSON</span> <span class="c1">// cannot use a normal http-redirect (status-code 3xx) as this would be followed by browsers and would not be available here</span> <span class="c1">// follow JSON-redirect</span> <span class="nb">window</span><span class="p">.</span><span class="nx">location</span><span class="p">.</span><span class="nx">href</span> <span class="o">=</span> <span class="nx">response</span><span class="p">.</span><span class="nx">location</span><span class="p">;</span> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span> - <span class="k">if </span><span class="p">(</span><span class="nx">restoreFunction</span><span class="p">)</span> <span class="p">{</span> - <span class="nf">restoreFunction</span><span class="p">();</span> + <span class="k">if</span> <span class="p">(</span><span class="nx">restoreFunction</span><span class="p">)</span> <span class="p">{</span> + <span class="nx">restoreFunction</span><span class="p">();</span> <span class="p">}</span> - <span class="nf">_handleValidationResult</span><span class="p">(</span><span class="nx">_form</span><span class="p">,</span> <span class="nx">response</span><span class="p">);</span> + <span class="nx">_handleValidationResult</span><span class="p">(</span><span class="nx">_form</span><span class="p">,</span> <span class="nx">response</span><span class="p">);</span> <span class="p">}</span> <span class="p">},</span> <span class="na">error</span><span class="p">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">xhr</span><span class="p">,</span> <span class="nx">textStatus</span><span class="p">,</span> <span class="nx">errorThrown</span><span class="p">)</span> <span class="p">{</span> - <span class="k">if </span><span class="p">(</span><span class="nx">restoreFunction</span><span class="p">)</span> <span class="p">{</span> - <span class="nf">restoreFunction</span><span class="p">();</span> + <span class="k">if</span> <span class="p">(</span><span class="nx">restoreFunction</span><span class="p">)</span> <span class="p">{</span> + <span class="nx">restoreFunction</span><span class="p">();</span> <span class="p">}</span> <span class="c1">// struts sends status code 400 when validation errors are present</span> - <span class="k">if </span><span class="p">(</span><span class="nx">xhr</span><span class="p">.</span><span class="nx">status</span> <span class="o">===</span> <span class="mi">400</span><span class="p">)</span> <span class="p">{</span> - <span class="nf">_handleValidationResult</span><span class="p">(</span><span class="nx">_form</span><span class="p">,</span> <span class="nx">JSON</span><span class="p">.</span><span class="nf">parse</span><span class="p">(</span><span class="nx">xhr</span><span class="p">.</span><span class="nx">responseText</span><span class="p">))</span> + <span class="k">if</span> <span class="p">(</span><span class="nx">xhr</span><span class="p">.</span><span class="nx">status</span> <span class="o">===</span> <span class="mi">400</span><span class="p">)</span> <span class="p">{</span> + <span class="nx">_handleValidationResult</span><span class="p">(</span><span class="nx">_form</span><span class="p">,</span> <span class="nx">JSON</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="nx">xhr</span><span class="p">.</span><span class="nx">responseText</span><span class="p">))</span> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span> <span class="c1">// a real error occurred -> show user an error message</span> - <span class="nf">_handleValidationResult</span><span class="p">(</span><span class="nx">_form</span><span class="p">,</span> <span class="p">{</span><span class="na">errors</span><span class="p">:</span> <span class="p">[</span><span class="dl">'</span><span class="s1">Network or server error!</span><span class="dl">'</span><span class="p">]})</span> + <span class="nx">_handleValidationResult</span><span class="p">(</span><span class="nx">_form</span><span class="p">,</span> <span class="p">{</span><span class="na">errors</span><span class="p">:</span> <span class="p">[</span><span class="dl">'</span><span class="s1">Network or server error!</span><span class="dl">'</span><span class="p">]})</span> <span class="p">}</span> <span class="p">}</span> <span class="p">}</span> <span class="c1">// send request, after delay to make sure everybody notices the visual feedback :)</span> - <span class="nb">window</span><span class="p">.</span><span class="nf">setTimeout</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span> + <span class="nb">window</span><span class="p">.</span><span class="nx">setTimeout</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span> <span class="kd">var</span> <span class="nx">url</span> <span class="o">=</span> <span class="nx">_form</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">action</span><span class="p">;</span> - <span class="nx">jQuery</span><span class="p">.</span><span class="nf">ajax</span><span class="p">(</span><span class="nx">url</span><span class="p">,</span> <span class="nx">options</span><span class="p">);</span> + <span class="nx">jQuery</span><span class="p">.</span><span class="nx">ajax</span><span class="p">(</span><span class="nx">url</span><span class="p">,</span> <span class="nx">options</span><span class="p">);</span> <span class="p">},</span> <span class="mi">1000</span><span class="p">);</span> <span class="p">}</span> <span class="cm">/** * Removes validation errors from HTML DOM. */</span> -<span class="kd">function</span> <span class="nf">_removeValidationErrors</span><span class="p">()</span> <span class="p">{</span> +<span class="kd">function</span> <span class="nx">_removeValidationErrors</span><span class="p">()</span> <span class="p">{</span> <span class="c1">// action errors</span> <span class="c1">// you might want to use a custom ID here</span> - <span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">ul.errorMessage li</span><span class="dl">'</span><span class="p">).</span><span class="nf">remove</span><span class="p">();</span> + <span class="nx">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">ul.errorMessage li</span><span class="dl">'</span><span class="p">).</span><span class="nx">remove</span><span class="p">();</span> <span class="c1">// field errors</span> - <span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">div.errorMessage</span><span class="dl">'</span><span class="p">).</span><span class="nf">remove</span><span class="p">();</span> + <span class="nx">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">div.errorMessage</span><span class="dl">'</span><span class="p">).</span><span class="nx">remove</span><span class="p">();</span> <span class="p">}</span> <span class="cm">/** * Incorporates validation errors in HTML DOM. @@ -580,32 +580,32 @@ It takes care of hiding validation errors that might be present, submit the form * @param form Form containing errors. * @param errors Errors from server. */</span> -<span class="kd">function</span> <span class="nf">_handleValidationResult</span><span class="p">(</span><span class="nx">form</span><span class="p">,</span> <span class="nx">errors</span><span class="p">)</span> <span class="p">{</span> +<span class="kd">function</span> <span class="nx">_handleValidationResult</span><span class="p">(</span><span class="nx">form</span><span class="p">,</span> <span class="nx">errors</span><span class="p">)</span> <span class="p">{</span> <span class="c1">// action errors</span> - <span class="k">if </span><span class="p">(</span><span class="nx">errors</span><span class="p">.</span><span class="nx">errors</span><span class="p">)</span> <span class="p">{</span> + <span class="k">if</span> <span class="p">(</span><span class="nx">errors</span><span class="p">.</span><span class="nx">errors</span><span class="p">)</span> <span class="p">{</span> <span class="c1">// you might want to use a custom ID here</span> - <span class="kd">var</span> <span class="nx">errorContainer</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">ul.errorMessage</span><span class="dl">'</span><span class="p">);</span> - <span class="nx">$</span><span class="p">.</span><span class="nf">each</span><span class="p">(</span><span class="nx">errors</span><span class="p">.</span><span class="nx">errors</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">index</span><span class="p">,</span> <span class="nx">errorMsg</span><span class="p">)</span> <span class="p">{</span> - <span class="kd">var</span> <span class="nx">li</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1"><li><span></span></li></span><span class="dl">'</span><span class="p">);</span> - <span class="nx">li</span><span class="p">.</span><span class="nf">text</span><span class="p">(</span><span class="nx">errorMsg</span><span class="p">);</span> <span class="c1">// use text() for security reasons</span> - <span class="nx">errorContainer</span><span class="p">.</span><span class="nf">append</span><span class="p">(</span><span class="nx">li</span><span class="p">);</span> + <span class="kd">var</span> <span class="nx">errorContainer</span> <span class="o">=</span> <span class="nx">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">ul.errorMessage</span><span class="dl">'</span><span class="p">);</span> + <span class="nx">$</span><span class="p">.</span><span class="nx">each</span><span class="p">(</span><span class="nx">errors</span><span class="p">.</span><span class="nx">errors</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">index</span><span class="p">,</span> <span class="nx">errorMsg</span><span class="p">)</span> <span class="p">{</span> + <span class="kd">var</span> <span class="nx">li</span> <span class="o">=</span> <span class="nx">$</span><span class="p">(</span><span class="dl">'</span><span class="s1"><li><span></span></li></span><span class="dl">'</span><span class="p">);</span> + <span class="nx">li</span><span class="p">.</span><span class="nx">text</span><span class="p">(</span><span class="nx">errorMsg</span><span class="p">);</span> <span class="c1">// use text() for security reasons</span> + <span class="nx">errorContainer</span><span class="p">.</span><span class="nx">append</span><span class="p">(</span><span class="nx">li</span><span class="p">);</span> <span class="p">});</span> <span class="p">}</span> <span class="c1">// field errors</span> - <span class="k">if </span><span class="p">(</span><span class="nx">errors</span><span class="p">.</span><span class="nx">fieldErrors</span><span class="p">)</span> <span class="p">{</span> - <span class="nx">$</span><span class="p">.</span><span class="nf">each</span><span class="p">(</span><span class="nx">errors</span><span class="p">.</span><span class="nx">fieldErrors</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">fieldName</span><span class="p">,</span> <span class="nx">errorMsg</span><span class="p">)</span> <span class="p">{</span> - <span class="kd">var</span> <span class="nx">td</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">td[data-error-for-fieldname="</span><span class="dl">'</span> <span class="o">+</span> <span class="nx">fieldName</span> <span class="o">+</span> <span class="dl">'</span><span class="s1">"]</span><span class="dl">'</span><span class="p">);</span> - <span class="k">if </span><span class="p">(</span><span class="nx">td</span><span class="p">)</span> <span class="p">{</span> - <span class="kd">var</span> <span class="nx">div</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1"><div class="errorMessage"></div></span><span class="dl">'</span><span class="p">);</span> - <span class="nx">div</span><span class="p">.</span><span class="nf">text</span><span class="p">(</span><span class="nx">errorMsg</span><span class="p">);</span> <span class="c1">// use text() for security reasons</span> - <span class="nx">td</span><span class="p">.</span><span class="nf">append</span><span class="p">(</span><span class="nx">div</span><span class="p">);</span> + <span class="k">if</span> <span class="p">(</span><span class="nx">errors</span><span class="p">.</span><span class="nx">fieldErrors</span><span class="p">)</span> <span class="p">{</span> + <span class="nx">$</span><span class="p">.</span><span class="nx">each</span><span class="p">(</span><span class="nx">errors</span><span class="p">.</span><span class="nx">fieldErrors</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">fieldName</span><span class="p">,</span> <span class="nx">errorMsg</span><span class="p">)</span> <span class="p">{</span> + <span class="kd">var</span> <span class="nx">td</span> <span class="o">=</span> <span class="nx">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">td[data-error-for-fieldname="</span><span class="dl">'</span> <span class="o">+</span> <span class="nx">fieldName</span> <span class="o">+</span> <span class="dl">'</span><span class="s1">"]</span><span class="dl">'</span><span class="p">);</span> + <span class="k">if</span> <span class="p">(</span><span class="nx">td</span><span class="p">)</span> <span class="p">{</span> + <span class="kd">var</span> <span class="nx">div</span> <span class="o">=</span> <span class="nx">$</span><span class="p">(</span><span class="dl">'</span><span class="s1"><div class="errorMessage"></div></span><span class="dl">'</span><span class="p">);</span> + <span class="nx">div</span><span class="p">.</span><span class="nx">text</span><span class="p">(</span><span class="nx">errorMsg</span><span class="p">);</span> <span class="c1">// use text() for security reasons</span> + <span class="nx">td</span><span class="p">.</span><span class="nx">append</span><span class="p">(</span><span class="nx">div</span><span class="p">);</span> <span class="p">}</span> <span class="p">});</span> <span class="p">}</span> <span class="p">}</span> <span class="c1">// register onSubmit handler</span> -<span class="nf">$</span><span class="p">(</span><span class="nb">window</span><span class="p">).</span><span class="nf">bind</span><span class="p">(</span><span class="dl">'</span><span class="s1">load</span><span class="dl">'</span><span class="p">,</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span> - <span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">form</span><span class="dl">'</span><span class="p">).</span><span class="nf">bind</span><span class="p">(</span><span class="dl">'</span><span class="s1">submit</span><span class="dl">'</span><span class="p">,</span> <span class="nx">ajaxFormValidation</span><span class="p">);</span> +<span class="nx">$</span><span class="p">(</span><span class="nb">window</span><span class="p">).</span><span class="nx">bind</span><span class="p">(</span><span class="dl">'</span><span class="s1">load</span><span class="dl">'</span><span class="p">,</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span> + <span class="nx">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">form</span><span class="dl">'</span><span class="p">).</span><span class="nx">bind</span><span class="p">(</span><span class="dl">'</span><span class="s1">submit</span><span class="dl">'</span><span class="p">,</span> <span class="nx">ajaxFormValidation</span><span class="p">);</span> <span class="p">});</span> </code></pre></div></div> diff --git a/content/download.html b/content/download.html index 8e1791630..70014e1de 100644 --- a/content/download.html +++ b/content/download.html @@ -203,26 +203,26 @@ <h2 id="struts-ga">Full Releases</h2> -<h3 id="struts6302">Struts 6.3.0.2</h3> +<h3 id="struts640">Struts 6.4.0</h3> <p> - The <a href="https://struts.apache.org/">Apache Struts 6.3.0.2</a> is an elegant, extensible + The <a href="https://struts.apache.org/">Apache Struts 6.4.0</a> is an elegant, extensible framework for creating enterprise-ready Java web applications. It is available in a full distribution, or as separate library, source, example and documentation distributions. - Struts 6.3.0.2 is the "best available" version of Struts in the 6.x series. + Struts 6.4.0 is the "best available" version of Struts in the 6.x series. </p> <ul> <li> - <a href="https://cwiki.apache.org/confluence/display/WW/Version+Notes+6.3.0.2">Version Notes</a> + <a href="https://cwiki.apache.org/confluence/display/WW/Version+Notes+6.4.0">Version Notes</a> </li> <li>Full Distribution: <ul> <li> - <a href="[preferred]struts/6.3.0.2/struts-6.3.0.2-all.zip">struts-6.3.0.2-all.zip</a> (73MB) - [<a href="https://downloads.apache.org/struts/6.3.0.2/struts-6.3.0.2-all.zip.asc">PGP</a>] - [<a href="https://downloads.apache.org/struts/6.3.0.2/struts-6.3.0.2-all.zip.sha256">SHA256</a>] + <a href="[preferred]struts/6.4.0/struts-6.4.0-all.zip">struts-6.4.0-all.zip</a> (73MB) + [<a href="https://downloads.apache.org/struts/6.4.0/struts-6.4.0-all.zip.asc">PGP</a>] + [<a href="https://downloads.apache.org/struts/6.4.0/struts-6.4.0-all.zip.sha256">SHA256</a>] </li> </ul> </li> @@ -230,9 +230,9 @@ <li>Example Applications: <ul> <li> - <a href="[preferred]struts/6.3.0.2/struts-6.3.0.2-apps.zip">struts-6.3.0.2-apps.zip</a> (32MB) - [<a href="https://downloads.apache.org/struts/6.3.0.2/struts-6.3.0.2-apps.zip.asc">PGP</a>] - [<a href="https://downloads.apache.org/struts/6.3.0.2/struts-6.3.0.2-apps.zip.sha256">SHA256</a>] + <a href="[preferred]struts/6.4.0/struts-6.4.0-apps.zip">struts-6.4.0-apps.zip</a> (32MB) + [<a href="https://downloads.apache.org/struts/6.4.0/struts-6.4.0-apps.zip.asc">PGP</a>] + [<a href="https://downloads.apache.org/struts/6.4.0/struts-6.4.0-apps.zip.sha256">SHA256</a>] </li> </ul> </li> @@ -240,9 +240,9 @@ <li>Essential Dependencies Only: <ul> <li> - <a href="[preferred]struts/6.3.0.2/struts-6.3.0.2-min-lib.zip">struts-6.3.0.2-min-lib.zip</a> (4MB) - [<a href="https://downloads.apache.org/struts/6.3.0.2/struts-6.3.0.2-min-lib.zip.asc">PGP</a>] - [<a href="https://downloads.apache.org/struts/6.3.0.2/struts-6.3.0.2-min-lib.zip.sha256">SHA256</a>] + <a href="[preferred]struts/6.4.0/struts-6.4.0-min-lib.zip">struts-6.4.0-min-lib.zip</a> (4MB) + [<a href="https://downloads.apache.org/struts/6.4.0/struts-6.4.0-min-lib.zip.asc">PGP</a>] + [<a href="https://downloads.apache.org/struts/6.4.0/struts-6.4.0-min-lib.zip.sha256">SHA256</a>] </li> </ul> </li> @@ -250,9 +250,9 @@ <li>All Dependencies: <ul> <li> - <a href="[preferred]struts/6.3.0.2/struts-6.3.0.2-lib.zip">struts-6.3.0.2-lib.zip</a> (24MB) - [<a href="https://downloads.apache.org/struts/6.3.0.2/struts-6.3.0.2-lib.zip.asc">PGP</a>] - [<a href="https://downloads.apache.org/struts/6.3.0.2/struts-6.3.0.2-lib.zip.sha256">SHA256</a>] + <a href="[preferred]struts/6.4.0/struts-6.4.0-lib.zip">struts-6.4.0-lib.zip</a> (24MB) + [<a href="https://downloads.apache.org/struts/6.4.0/struts-6.4.0-lib.zip.asc">PGP</a>] + [<a href="https://downloads.apache.org/struts/6.4.0/struts-6.4.0-lib.zip.sha256">SHA256</a>] </li> </ul> </li> @@ -260,9 +260,9 @@ <li>Documentation: <ul> <li> - <a href="[preferred]struts/6.3.0.2/struts-6.3.0.2-docs.zip">struts-6.3.0.2-docs.zip</a> (12MB) - [<a href="https://downloads.apache.org/struts/6.3.0.2/struts-6.3.0.2-docs.zip.asc">PGP</a>] - [<a href="https://downloads.apache.org/struts/6.3.0.2/struts-6.3.0.2-docs.zip.sha256">SHA256</a>] + <a href="[preferred]struts/6.4.0/struts-6.4.0-docs.zip">struts-6.4.0-docs.zip</a> (12MB) + [<a href="https://downloads.apache.org/struts/6.4.0/struts-6.4.0-docs.zip.asc">PGP</a>] + [<a href="https://downloads.apache.org/struts/6.4.0/struts-6.4.0-docs.zip.sha256">SHA256</a>] </li> </ul> </li> @@ -270,9 +270,9 @@ <li>Source: <ul> <li> - <a href="[preferred]struts/6.3.0.2/struts-6.3.0.2-src.zip">struts-6.3.0.2-src.zip</a> (6MB) - [<a href="https://downloads.apache.org/struts/6.3.0.2/struts-6.3.0.2-src.zip.asc">PGP</a>] - [<a href="https://downloads.apache.org/struts/6.3.0.2/struts-6.3.0.2-src.zip.sha256">SHA256</a>] + <a href="[preferred]struts/6.4.0/struts-6.4.0-src.zip">struts-6.4.0-src.zip</a> (6MB) + [<a href="https://downloads.apache.org/struts/6.4.0/struts-6.4.0-src.zip.asc">PGP</a>] + [<a href="https://downloads.apache.org/struts/6.4.0/struts-6.4.0-src.zip.sha256">SHA256</a>] </li> </ul> </li> diff --git a/content/index.html b/content/index.html index d85a68a98..e57027721 100644 --- a/content/index.html +++ b/content/index.html @@ -154,7 +154,7 @@ extensible using a plugin architecture, and ships with plugins to support REST, AJAX and JSON. </p> - <a href="download.cgi#struts6302" class="btn btn-primary btn-large"> + <a href="download.cgi#struts640" class="btn btn-primary btn-large"> <img src="img/download-icon.svg" alt="Download"> Download </a> <a href="primer.html" class="btn btn-info btn-large"> @@ -166,20 +166,20 @@ <div class="col-md-12"> <div class="row"> <div class="column col-md-4"> - <h2>Apache Struts 6.3.0.2 GA</h2> + <h2>Apache Struts 6.4.0 GA</h2> <p> - Apache Struts 6.3.0.2 GA has been released<br/>on 7 December 2023. + Apache Struts 6.4.0 GA has been released<br/>on 19 April 2024. </p> - Read more in <a href="announce-2023#a20231207-1">Announcement</a> or in - <a href="https://cwiki.apache.org/confluence/display/WW/Version+Notes+6.3.0.2">Version notes</a> + Read more in <a href="announce-2024#a20240419">Announcement</a> or in + <a href="https://cwiki.apache.org/confluence/display/WW/Version+Notes+6.4.0">Version notes</a> </div> <div class="column col-md-4"> - <h2>Apache Struts 6.3.0.1 GA</h2> + <h2>Apache Struts 6.3.0.2 GA</h2> <p> - Apache Struts 6.3.0.1 GA has been released<br/>on 13 September 2023. + Apache Struts 6.3.0.2 GA has been released<br/>on 7 December 2023. </p> - Read more in <a href="announce-2023#a20230913-1">Announcement</a> or in - <a href="https://cwiki.apache.org/confluence/display/WW/Version+Notes+6.3.0.1">Version notes</a> + Read more in <a href="announce-2023#a20231207-1">Announcement</a> or in + <a href="https://cwiki.apache.org/confluence/display/WW/Version+Notes+6.3.0.2">Version notes</a> </div> <div class="column col-md-4"> <h2>Apache Struts 2.5.33 GA</h2> @@ -192,12 +192,12 @@ </div> <div class="row"> <div class="column col-md-4"> - <h2>Apache Struts 6.3.0 GA</h2> + <h2>Apache Struts 7.0.0-M6</h2> <p> - Apache Struts 6.3.0 GA has been released<br/>on 4 September 2023. + Apache Struts 7.0.0-M6 test build is available as from 20 April 2024. </p> - Read more in <a href="announce-2023#a20230904">Announcement</a> or in - <a href="https://cwiki.apache.org/confluence/display/WW/Version+Notes+6.3.0">Version notes</a> + Read more in <a href="announce-2024#a20240420">Announcement</a> or in + <a href="https://cwiki.apache.org/confluence/display/WW/Version+Notes+7.0.0-M6">Version notes</a> </div> <div class="column col-md-4"> <h2>Google's Patch Reward program</h2> diff --git a/content/plugins/json/index.html b/content/plugins/json/index.html index 42afd9ed8..d51e5232a 100644 --- a/content/plugins/json/index.html +++ b/content/plugins/json/index.html @@ -417,7 +417,7 @@ Thanks to Douglas Crockford for the tip! Consider using <strong>prefix</strong> </span></code></pre></div></div> <p>To strip those comments use:</p> -<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">var</span> <span class="nx">responseObject</span> <span class="o">=</span> <span class="nf">eval</span><span class="p">(</span><span class="dl">"</span><span class="s2">(</span><span class="dl">"</span><span class="o">+</span><span class="nx">data</span><span class="p">.</span><span class="nf">substring</span><span class="p">(</span><span class="nx">data</span><span cla [...] +<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">var</span> <span class="nx">responseObject</span> <span class="o">=</span> <span class="nb">eval</span><span class="p">(</span><span class="dl">"</span><span class="s2">(</span><span class="dl">"</span><span class="o">+</span><span class="nx">data</span><span class="p">.</span><span class="nx">substring</span><span class="p">(</span><span class="nx">data</span><span cla [...] </code></pre></div></div> <h3 id="prefix">Prefix</h3> @@ -837,24 +837,24 @@ must be enabled for both.</p> <div class="language-jsp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt"><s:url </span><span class="na">id=</span><span class="s">"smdUrl"</span><span class="na"> namespace=</span><span class="s">"/nodecorate"</span><span class="na"> action=</span><span class="s">"SMDAction"</span> <span class="nt">/></span> <span class="nt"><script </span><span class="na">type=</span><span class="s">"text/javascript"</span><span class="nt">></span> <span class="c1">//load dojo RPC</span> - <span class="nx">dojo</span><span class="p">.</span><span class="nf">require</span><span class="p">(</span><span class="dl">"</span><span class="s2">dojo.rpc.*</span><span class="dl">"</span><span class="p">);</span> + <span class="nx">dojo</span><span class="p">.</span><span class="nx">require</span><span class="p">(</span><span class="dl">"</span><span class="s2">dojo.rpc.*</span><span class="dl">"</span><span class="p">);</span> <span class="c1">//create service object(proxy) using SMD (generated by the json result)</span> - <span class="kd">var</span> <span class="nx">service</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">dojo</span><span class="p">.</span><span class="nx">rpc</span><span class="p">.</span><span class="nc">JsonService</span><span class="p">(</span><span class="dl">"</span><span class="s2">${smdUrl}</span><span class="dl">"</span><span class="p">);</span> + <span class="kd">var</span> <span class="nx">service</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">dojo</span><span class="p">.</span><span class="nx">rpc</span><span class="p">.</span><span class="nx">JsonService</span><span class="p">(</span><span class="dl">"</span><span class="s2">${smdUrl}</span><span class="dl">"</span><span class="p">);</span> <span class="c1">//function called when remote method returns</span> <span class="kd">var</span> <span class="nx">callback</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">bean</span><span class="p">)</span> <span class="p">{</span> - <span class="nf">alert</span><span class="p">(</span><span class="dl">"</span><span class="s2">Price for </span><span class="dl">"</span> <span class="o">+</span> <span class="nx">bean</span><span class="p">.</span><span class="nx">type</span> <span class="o">+</span> <span class="dl">"</span><span class="s2"> is </span><span class="dl">"</span> <span class="o">+</span> <span class="nx">bean</span><span class="p">.</span><span class="nx">price</span><span class="p">);</span> + <span class="nx">alert</span><span class="p">(</span><span class="dl">"</span><span class="s2">Price for </span><span class="dl">"</span> <span class="o">+</span> <span class="nx">bean</span><span class="p">.</span><span class="nx">type</span> <span class="o">+</span> <span class="dl">"</span><span class="s2"> is </span><span class="dl">"</span> <span class="o">+</span> <span class="nx">bean</span><span class="p">.</span><span class="nx">price</span><span class="p">);</span> <span class="p">};</span> <span class="c1">//parameter</span> <span class="kd">var</span> <span class="nx">bean</span> <span class="o">=</span> <span class="p">{</span><span class="na">type</span><span class="p">:</span> <span class="dl">"</span><span class="s2">Mocca</span><span class="dl">"</span><span class="p">};</span> <span class="c1">//execute remote method</span> - <span class="kd">var</span> <span class="nx">defered</span> <span class="o">=</span> <span class="nx">service</span><span class="p">.</span><span class="nf">doSomething</span><span class="p">(</span><span class="nx">bean</span><span class="p">,</span> <span class="mi">5</span><span class="p">);</span> + <span class="kd">var</span> <span class="nx">defered</span> <span class="o">=</span> <span class="nx">service</span><span class="p">.</span><span class="nx">doSomething</span><span class="p">(</span><span class="nx">bean</span><span class="p">,</span> <span class="mi">5</span><span class="p">);</span> <span class="c1">//attach callback to defered object</span> - <span class="nx">defered</span><span class="p">.</span><span class="nf">addCallback</span><span class="p">(</span><span class="nx">callback</span><span class="p">);</span> + <span class="nx">defered</span><span class="p">.</span><span class="nx">addCallback</span><span class="p">(</span><span class="nx">callback</span><span class="p">);</span> <span class="nt"></script></span> </code></pre></div></div> diff --git a/content/plugins/json/json-ajax-validation.html b/content/plugins/json/json-ajax-validation.html index 2ce7fea86..2de5fef8f 100644 --- a/content/plugins/json/json-ajax-validation.html +++ b/content/plugins/json/json-ajax-validation.html @@ -479,7 +479,7 @@ ${parameters.labelseparator!":"?html}<span class="nt"><</span><span class="na <div class="language-js highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">.</span><span class="nx">ajaxVisualFeedback</span> <span class="p">{</span> <span class="nl">width</span><span class="p">:</span> <span class="mi">16</span><span class="nx">px</span><span class="p">;</span> <span class="nl">height</span><span class="p">:</span> <span class="mi">16</span><span class="nx">px</span><span class="p">;</span> - <span class="nx">background</span><span class="o">-</span><span class="nx">image</span><span class="p">:</span> <span class="nf">url</span><span class="p">(</span><span class="dl">'</span><span class="s1">../images/indicator.gif</span><span class="dl">'</span><span class="p">);</span> + <span class="nx">background</span><span class="o">-</span><span class="nx">image</span><span class="p">:</span> <span class="nx">url</span><span class="p">(</span><span class="dl">'</span><span class="s1">../images/indicator.gif</span><span class="dl">'</span><span class="p">);</span> <span class="nx">background</span><span class="o">-</span><span class="nx">repeat</span><span class="p">:</span> <span class="nx">no</span><span class="o">-</span><span class="nx">repeat</span><span class="p">;</span> <span class="nl">float</span><span class="p">:</span> <span class="nx">right</span><span class="p">;</span> <span class="p">}</span> @@ -495,21 +495,21 @@ care of hiding validation errors that might be present, submit the form via AJAX * * @param event onSubmit event */</span> -<span class="kd">function</span> <span class="nf">ajaxFormValidation</span><span class="p">(</span><span class="nx">event</span><span class="p">)</span> <span class="p">{</span> - <span class="nx">event</span><span class="p">.</span><span class="nf">preventDefault</span><span class="p">();</span> - <span class="nf">_removeValidationErrors</span><span class="p">();</span> - <span class="kd">var</span> <span class="nx">_form</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="nx">event</span><span class="p">.</span><span class="nx">target</span><span class="p">);</span> - <span class="kd">var</span> <span class="nx">_formData</span> <span class="o">=</span> <span class="nx">_form</span><span class="p">.</span><span class="nf">serialize</span><span class="p">(</span><span class="kc">true</span><span class="p">);</span> +<span class="kd">function</span> <span class="nx">ajaxFormValidation</span><span class="p">(</span><span class="nx">event</span><span class="p">)</span> <span class="p">{</span> + <span class="nx">event</span><span class="p">.</span><span class="nx">preventDefault</span><span class="p">();</span> + <span class="nx">_removeValidationErrors</span><span class="p">();</span> + <span class="kd">var</span> <span class="nx">_form</span> <span class="o">=</span> <span class="nx">$</span><span class="p">(</span><span class="nx">event</span><span class="p">.</span><span class="nx">target</span><span class="p">);</span> + <span class="kd">var</span> <span class="nx">_formData</span> <span class="o">=</span> <span class="nx">_form</span><span class="p">.</span><span class="nx">serialize</span><span class="p">(</span><span class="kc">true</span><span class="p">);</span> <span class="c1">// prepare visual feedback</span> <span class="c1">// you may want to use other elements here</span> - <span class="kd">var</span> <span class="nx">originalButton</span> <span class="o">=</span> <span class="nx">_form</span><span class="p">.</span><span class="nf">find</span><span class="p">(</span><span class="dl">'</span><span class="s1">.btn-primary</span><span class="dl">'</span><span class="p">);</span> + <span class="kd">var</span> <span class="nx">originalButton</span> <span class="o">=</span> <span class="nx">_form</span><span class="p">.</span><span class="nx">find</span><span class="p">(</span><span class="dl">'</span><span class="s1">.btn-primary</span><span class="dl">'</span><span class="p">);</span> <span class="c1">// note: jQuery returns an array-like object</span> - <span class="k">if </span><span class="p">(</span><span class="nx">originalButton</span> <span class="o">&&</span> <span class="nx">originalButton</span><span class="p">.</span><span class="nx">length</span> <span class="o">&&</span> <span class="nx">originalButton</span><span class="p">.</span><span class="nx">length</span> <span class="o">></span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span> - <span class="nx">originalButton</span><span class="p">.</span><span class="nf">hide</span><span class="p">();</span> - <span class="kd">var</span> <span class="nx">feedbackElement</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1"><div class="ajaxVisualFeedback"></div></span><span class="dl">'</span><span class="p">).</span><span class="nf">insertAfter</span><span class="p">(</span><span class="nx">originalButton</span><span class="p">);</span> + <span class="k">if</span> <span class="p">(</span><span class="nx">originalButton</span> <span class="o">&&</span> <span class="nx">originalButton</span><span class="p">.</span><span class="nx">length</span> <span class="o">&&</span> <span class="nx">originalButton</span><span class="p">.</span><span class="nx">length</span> <span class="o">></span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span> + <span class="nx">originalButton</span><span class="p">.</span><span class="nx">hide</span><span class="p">();</span> + <span class="kd">var</span> <span class="nx">feedbackElement</span> <span class="o">=</span> <span class="nx">$</span><span class="p">(</span><span class="dl">'</span><span class="s1"><div class="ajaxVisualFeedback"></div></span><span class="dl">'</span><span class="p">).</span><span class="nx">insertAfter</span><span class="p">(</span><span class="nx">originalButton</span><span class="p">);</span> <span class="kd">var</span> <span class="nx">restoreFunction</span> <span class="o">=</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span> - <span class="nx">originalButton</span><span class="p">.</span><span class="nf">show</span><span class="p">();</span> - <span class="nx">feedbackElement</span><span class="p">.</span><span class="nf">remove</span><span class="p">();</span> + <span class="nx">originalButton</span><span class="p">.</span><span class="nx">show</span><span class="p">();</span> + <span class="nx">feedbackElement</span><span class="p">.</span><span class="nx">remove</span><span class="p">();</span> <span class="p">}</span> <span class="p">}</span> <span class="kd">var</span> <span class="nx">options</span> <span class="o">=</span> <span class="p">{</span> @@ -517,48 +517,48 @@ care of hiding validation errors that might be present, submit the form via AJAX <span class="na">async</span><span class="p">:</span> <span class="kc">true</span><span class="p">,</span> <span class="na">processData</span><span class="p">:</span> <span class="kc">false</span><span class="p">,</span> <span class="na">type</span><span class="p">:</span> <span class="dl">'</span><span class="s1">POST</span><span class="dl">'</span><span class="p">,</span> - <span class="na">success</span><span class="p">:</span> <span class="nf">function </span><span class="p">(</span><span class="nx">response</span><span class="p">,</span> <span class="nx">statusText</span><span class="p">,</span> <span class="nx">xhr</span><span class="p">)</span> <span class="p">{</span> - <span class="k">if </span><span class="p">(</span><span class="nx">response</span><span class="p">.</span><span class="nx">location</span><span class="p">)</span> <span class="p">{</span> + <span class="na">success</span><span class="p">:</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">response</span><span class="p">,</span> <span class="nx">statusText</span><span class="p">,</span> <span class="nx">xhr</span><span class="p">)</span> <span class="p">{</span> + <span class="k">if</span> <span class="p">(</span><span class="nx">response</span><span class="p">.</span><span class="nx">location</span><span class="p">)</span> <span class="p">{</span> <span class="c1">// no validation errors</span> <span class="c1">// action has been executed and sent a redirect URL wrapped as JSON</span> <span class="c1">// cannot use a normal http-redirect (status-code 3xx) as this would be followed by browsers and would not be available here</span> <span class="c1">// follow JSON-redirect</span> <span class="nb">window</span><span class="p">.</span><span class="nx">location</span><span class="p">.</span><span class="nx">href</span> <span class="o">=</span> <span class="nx">response</span><span class="p">.</span><span class="nx">location</span><span class="p">;</span> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span> - <span class="k">if </span><span class="p">(</span><span class="nx">restoreFunction</span><span class="p">)</span> <span class="p">{</span> - <span class="nf">restoreFunction</span><span class="p">();</span> + <span class="k">if</span> <span class="p">(</span><span class="nx">restoreFunction</span><span class="p">)</span> <span class="p">{</span> + <span class="nx">restoreFunction</span><span class="p">();</span> <span class="p">}</span> - <span class="nf">_handleValidationResult</span><span class="p">(</span><span class="nx">_form</span><span class="p">,</span> <span class="nx">response</span><span class="p">);</span> + <span class="nx">_handleValidationResult</span><span class="p">(</span><span class="nx">_form</span><span class="p">,</span> <span class="nx">response</span><span class="p">);</span> <span class="p">}</span> <span class="p">},</span> <span class="na">error</span><span class="p">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">xhr</span><span class="p">,</span> <span class="nx">textStatus</span><span class="p">,</span> <span class="nx">errorThrown</span><span class="p">)</span> <span class="p">{</span> - <span class="k">if </span><span class="p">(</span><span class="nx">restoreFunction</span><span class="p">)</span> <span class="p">{</span> - <span class="nf">restoreFunction</span><span class="p">();</span> + <span class="k">if</span> <span class="p">(</span><span class="nx">restoreFunction</span><span class="p">)</span> <span class="p">{</span> + <span class="nx">restoreFunction</span><span class="p">();</span> <span class="p">}</span> <span class="c1">// struts sends status code 400 when validation errors are present</span> - <span class="k">if </span><span class="p">(</span><span class="nx">xhr</span><span class="p">.</span><span class="nx">status</span> <span class="o">===</span> <span class="mi">400</span><span class="p">)</span> <span class="p">{</span> - <span class="nf">_handleValidationResult</span><span class="p">(</span><span class="nx">_form</span><span class="p">,</span> <span class="nx">JSON</span><span class="p">.</span><span class="nf">parse</span><span class="p">(</span><span class="nx">xhr</span><span class="p">.</span><span class="nx">responseText</span><span class="p">))</span> + <span class="k">if</span> <span class="p">(</span><span class="nx">xhr</span><span class="p">.</span><span class="nx">status</span> <span class="o">===</span> <span class="mi">400</span><span class="p">)</span> <span class="p">{</span> + <span class="nx">_handleValidationResult</span><span class="p">(</span><span class="nx">_form</span><span class="p">,</span> <span class="nx">JSON</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="nx">xhr</span><span class="p">.</span><span class="nx">responseText</span><span class="p">))</span> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span> <span class="c1">// a real error occurred -> show user an error message</span> - <span class="nf">_handleValidationResult</span><span class="p">(</span><span class="nx">_form</span><span class="p">,</span> <span class="p">{</span><span class="na">errors</span><span class="p">:</span> <span class="p">[</span><span class="dl">'</span><span class="s1">Network or server error!</span><span class="dl">'</span><span class="p">]})</span> + <span class="nx">_handleValidationResult</span><span class="p">(</span><span class="nx">_form</span><span class="p">,</span> <span class="p">{</span><span class="na">errors</span><span class="p">:</span> <span class="p">[</span><span class="dl">'</span><span class="s1">Network or server error!</span><span class="dl">'</span><span class="p">]})</span> <span class="p">}</span> <span class="p">}</span> <span class="p">}</span> <span class="c1">// send request, after delay to make sure everybody notices the visual feedback :)</span> - <span class="nb">window</span><span class="p">.</span><span class="nf">setTimeout</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span> + <span class="nb">window</span><span class="p">.</span><span class="nx">setTimeout</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span> <span class="kd">var</span> <span class="nx">url</span> <span class="o">=</span> <span class="nx">_form</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="nx">action</span><span class="p">;</span> - <span class="nx">jQuery</span><span class="p">.</span><span class="nf">ajax</span><span class="p">(</span><span class="nx">url</span><span class="p">,</span> <span class="nx">options</span><span class="p">);</span> + <span class="nx">jQuery</span><span class="p">.</span><span class="nx">ajax</span><span class="p">(</span><span class="nx">url</span><span class="p">,</span> <span class="nx">options</span><span class="p">);</span> <span class="p">},</span> <span class="mi">1000</span><span class="p">);</span> <span class="p">}</span> <span class="cm">/** * Removes validation errors from HTML DOM. */</span> -<span class="kd">function</span> <span class="nf">_removeValidationErrors</span><span class="p">()</span> <span class="p">{</span> +<span class="kd">function</span> <span class="nx">_removeValidationErrors</span><span class="p">()</span> <span class="p">{</span> <span class="c1">// action errors</span> <span class="c1">// you might want to use a custom ID here</span> - <span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">ul.errorMessage li</span><span class="dl">'</span><span class="p">).</span><span class="nf">remove</span><span class="p">();</span> + <span class="nx">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">ul.errorMessage li</span><span class="dl">'</span><span class="p">).</span><span class="nx">remove</span><span class="p">();</span> <span class="c1">// field errors</span> - <span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">div.errorMessage</span><span class="dl">'</span><span class="p">).</span><span class="nf">remove</span><span class="p">();</span> + <span class="nx">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">div.errorMessage</span><span class="dl">'</span><span class="p">).</span><span class="nx">remove</span><span class="p">();</span> <span class="p">}</span> <span class="cm">/** * Incorporates validation errors in HTML DOM. @@ -566,32 +566,32 @@ care of hiding validation errors that might be present, submit the form via AJAX * @param form Form containing errors. * @param errors Errors from server. */</span> -<span class="kd">function</span> <span class="nf">_handleValidationResult</span><span class="p">(</span><span class="nx">form</span><span class="p">,</span> <span class="nx">errors</span><span class="p">)</span> <span class="p">{</span> +<span class="kd">function</span> <span class="nx">_handleValidationResult</span><span class="p">(</span><span class="nx">form</span><span class="p">,</span> <span class="nx">errors</span><span class="p">)</span> <span class="p">{</span> <span class="c1">// action errors</span> - <span class="k">if </span><span class="p">(</span><span class="nx">errors</span><span class="p">.</span><span class="nx">errors</span><span class="p">)</span> <span class="p">{</span> + <span class="k">if</span> <span class="p">(</span><span class="nx">errors</span><span class="p">.</span><span class="nx">errors</span><span class="p">)</span> <span class="p">{</span> <span class="c1">// you might want to use a custom ID here</span> - <span class="kd">var</span> <span class="nx">errorContainer</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">ul.errorMessage</span><span class="dl">'</span><span class="p">);</span> - <span class="nx">$</span><span class="p">.</span><span class="nf">each</span><span class="p">(</span><span class="nx">errors</span><span class="p">.</span><span class="nx">errors</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">index</span><span class="p">,</span> <span class="nx">errorMsg</span><span class="p">)</span> <span class="p">{</span> - <span class="kd">var</span> <span class="nx">li</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1"><li><span></span></li></span><span class="dl">'</span><span class="p">);</span> - <span class="nx">li</span><span class="p">.</span><span class="nf">text</span><span class="p">(</span><span class="nx">errorMsg</span><span class="p">);</span> <span class="c1">// use text() for security reasons</span> - <span class="nx">errorContainer</span><span class="p">.</span><span class="nf">append</span><span class="p">(</span><span class="nx">li</span><span class="p">);</span> + <span class="kd">var</span> <span class="nx">errorContainer</span> <span class="o">=</span> <span class="nx">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">ul.errorMessage</span><span class="dl">'</span><span class="p">);</span> + <span class="nx">$</span><span class="p">.</span><span class="nx">each</span><span class="p">(</span><span class="nx">errors</span><span class="p">.</span><span class="nx">errors</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">index</span><span class="p">,</span> <span class="nx">errorMsg</span><span class="p">)</span> <span class="p">{</span> + <span class="kd">var</span> <span class="nx">li</span> <span class="o">=</span> <span class="nx">$</span><span class="p">(</span><span class="dl">'</span><span class="s1"><li><span></span></li></span><span class="dl">'</span><span class="p">);</span> + <span class="nx">li</span><span class="p">.</span><span class="nx">text</span><span class="p">(</span><span class="nx">errorMsg</span><span class="p">);</span> <span class="c1">// use text() for security reasons</span> + <span class="nx">errorContainer</span><span class="p">.</span><span class="nx">append</span><span class="p">(</span><span class="nx">li</span><span class="p">);</span> <span class="p">});</span> <span class="p">}</span> <span class="c1">// field errors</span> - <span class="k">if </span><span class="p">(</span><span class="nx">errors</span><span class="p">.</span><span class="nx">fieldErrors</span><span class="p">)</span> <span class="p">{</span> - <span class="nx">$</span><span class="p">.</span><span class="nf">each</span><span class="p">(</span><span class="nx">errors</span><span class="p">.</span><span class="nx">fieldErrors</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">fieldName</span><span class="p">,</span> <span class="nx">errorMsg</span><span class="p">)</span> <span class="p">{</span> - <span class="kd">var</span> <span class="nx">td</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">td[data-error-for-fieldname="</span><span class="dl">'</span> <span class="o">+</span> <span class="nx">fieldName</span> <span class="o">+</span> <span class="dl">'</span><span class="s1">"]</span><span class="dl">'</span><span class="p">);</span> - <span class="k">if </span><span class="p">(</span><span class="nx">td</span><span class="p">)</span> <span class="p">{</span> - <span class="kd">var</span> <span class="nx">div</span> <span class="o">=</span> <span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1"><div class="errorMessage"></div></span><span class="dl">'</span><span class="p">);</span> - <span class="nx">div</span><span class="p">.</span><span class="nf">text</span><span class="p">(</span><span class="nx">errorMsg</span><span class="p">);</span> <span class="c1">// use text() for security reasons</span> - <span class="nx">td</span><span class="p">.</span><span class="nf">append</span><span class="p">(</span><span class="nx">div</span><span class="p">);</span> + <span class="k">if</span> <span class="p">(</span><span class="nx">errors</span><span class="p">.</span><span class="nx">fieldErrors</span><span class="p">)</span> <span class="p">{</span> + <span class="nx">$</span><span class="p">.</span><span class="nx">each</span><span class="p">(</span><span class="nx">errors</span><span class="p">.</span><span class="nx">fieldErrors</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">fieldName</span><span class="p">,</span> <span class="nx">errorMsg</span><span class="p">)</span> <span class="p">{</span> + <span class="kd">var</span> <span class="nx">td</span> <span class="o">=</span> <span class="nx">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">td[data-error-for-fieldname="</span><span class="dl">'</span> <span class="o">+</span> <span class="nx">fieldName</span> <span class="o">+</span> <span class="dl">'</span><span class="s1">"]</span><span class="dl">'</span><span class="p">);</span> + <span class="k">if</span> <span class="p">(</span><span class="nx">td</span><span class="p">)</span> <span class="p">{</span> + <span class="kd">var</span> <span class="nx">div</span> <span class="o">=</span> <span class="nx">$</span><span class="p">(</span><span class="dl">'</span><span class="s1"><div class="errorMessage"></div></span><span class="dl">'</span><span class="p">);</span> + <span class="nx">div</span><span class="p">.</span><span class="nx">text</span><span class="p">(</span><span class="nx">errorMsg</span><span class="p">);</span> <span class="c1">// use text() for security reasons</span> + <span class="nx">td</span><span class="p">.</span><span class="nx">append</span><span class="p">(</span><span class="nx">div</span><span class="p">);</span> <span class="p">}</span> <span class="p">});</span> <span class="p">}</span> <span class="p">}</span> <span class="c1">// register onSubmit handler</span> -<span class="nf">$</span><span class="p">(</span><span class="nb">window</span><span class="p">).</span><span class="nf">bind</span><span class="p">(</span><span class="dl">'</span><span class="s1">load</span><span class="dl">'</span><span class="p">,</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span> - <span class="nf">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">form</span><span class="dl">'</span><span class="p">).</span><span class="nf">bind</span><span class="p">(</span><span class="dl">'</span><span class="s1">submit</span><span class="dl">'</span><span class="p">,</span> <span class="nx">ajaxFormValidation</span><span class="p">);</span> +<span class="nx">$</span><span class="p">(</span><span class="nb">window</span><span class="p">).</span><span class="nx">bind</span><span class="p">(</span><span class="dl">'</span><span class="s1">load</span><span class="dl">'</span><span class="p">,</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span> + <span class="nx">$</span><span class="p">(</span><span class="dl">'</span><span class="s1">form</span><span class="dl">'</span><span class="p">).</span><span class="nx">bind</span><span class="p">(</span><span class="dl">'</span><span class="s1">submit</span><span class="dl">'</span><span class="p">,</span> <span class="nx">ajaxFormValidation</span><span class="p">);</span> <span class="p">});</span> </code></pre></div></div> diff --git a/content/releases.html b/content/releases.html index 66c380adc..67f338ebe 100644 --- a/content/releases.html +++ b/content/releases.html @@ -168,7 +168,7 @@ <ul> <li> <a href="download.cgi#struts-ga"> - Struts 6.3.0.2 + Struts 6.4.0 </a> ("best available") </li> </ul> @@ -245,12 +245,36 @@ </tr> </thead> <tbody> + <tr> + <td class="no-wrap"> + Struts 6.3.0.2 + </td> + <td class="no-wrap">7 December September 2023</td> + <td> + </td> + <td> + <a href="https://cwiki.apache.org/confluence/display/WW/Version+Notes+6.3.0.2">Version notes</a> + </td> + </tr> + <tr> + <td class="no-wrap"> + Struts 6.3.0.1 + </td> + <td class="no-wrap">13 September 2023</td> + <td> + <a href="https://cwiki.apache.org/confluence/display/WW/S2-066">S2-066</a> + </td> + <td> + <a href="https://cwiki.apache.org/confluence/display/WW/Version+Notes+6.3.0.1">Version notes</a> + </td> + </tr> <tr> <td class="no-wrap"> Struts 6.3.0 </td> <td class="no-wrap">4 September 2023</td> <td> + <a href="https://cwiki.apache.org/confluence/display/WW/S2-066">S2-066</a>, <a href="https://cwiki.apache.org/confluence/display/WW/S2-065">S2-065</a> </td> <td> @@ -263,6 +287,7 @@ </td> <td class="no-wrap">10 July 2023</td> <td> + <a href="https://cwiki.apache.org/confluence/display/WW/S2-066">S2-066</a>, <a href="https://cwiki.apache.org/confluence/display/WW/S2-065">S2-065</a> </td> <td> @@ -275,6 +300,7 @@ </td> <td class="no-wrap">13 June 2023</td> <td> + <a href="https://cwiki.apache.org/confluence/display/WW/S2-066">S2-066</a>, <a href="https://cwiki.apache.org/confluence/display/WW/S2-065">S2-065</a> </td> <td> @@ -287,6 +313,7 @@ </td> <td class="no-wrap">13 June 2023</td> <td> + <a href="https://cwiki.apache.org/confluence/display/WW/S2-066">S2-066</a>, <a href="https://cwiki.apache.org/confluence/display/WW/S2-065">S2-065</a> </td> <td> @@ -299,6 +326,8 @@ </td> <td class="no-wrap">10 March 2023</td> <td> + <a href="https://cwiki.apache.org/confluence/display/WW/S2-066">S2-066</a>, + <a href="https://cwiki.apache.org/confluence/display/WW/S2-065">S2-065</a>, <a href="https://cwiki.apache.org/confluence/display/WW/S2-064">S2-064</a>, <a href="https://cwiki.apache.org/confluence/display/WW/S2-063">S2-063</a> </td> @@ -312,6 +341,8 @@ </td> <td class="no-wrap">28 November 2022</td> <td> + <a href="https://cwiki.apache.org/confluence/display/WW/S2-066">S2-066</a>, + <a href="https://cwiki.apache.org/confluence/display/WW/S2-065">S2-065</a>, <a href="https://cwiki.apache.org/confluence/display/WW/S2-064">S2-064</a>, <a href="https://cwiki.apache.org/confluence/display/WW/S2-063">S2-063</a> </td> @@ -325,6 +356,8 @@ </td> <td class="no-wrap">15 September 2022</td> <td> + <a href="https://cwiki.apache.org/confluence/display/WW/S2-066">S2-066</a>, + <a href="https://cwiki.apache.org/confluence/display/WW/S2-065">S2-065</a>, <a href="https://cwiki.apache.org/confluence/display/WW/S2-064">S2-064</a>, <a href="https://cwiki.apache.org/confluence/display/WW/S2-063">S2-063</a> </td> @@ -338,6 +371,8 @@ </td> <td class="no-wrap">6 June 2022</td> <td> + <a href="https://cwiki.apache.org/confluence/display/WW/S2-066">S2-066</a>, + <a href="https://cwiki.apache.org/confluence/display/WW/S2-065">S2-065</a>, <a href="https://cwiki.apache.org/confluence/display/WW/S2-064">S2-064</a>, <a href="https://cwiki.apache.org/confluence/display/WW/S2-063">S2-063</a> </td> @@ -351,6 +386,8 @@ </td> <td class="no-wrap">4 April 2022</td> <td> + <a href="https://cwiki.apache.org/confluence/display/WW/S2-066">S2-066</a>, + <a href="https://cwiki.apache.org/confluence/display/WW/S2-065">S2-065</a>, <a href="https://cwiki.apache.org/confluence/display/WW/S2-064">S2-064</a>, <a href="https://cwiki.apache.org/confluence/display/WW/S2-063">S2-063</a> </td> @@ -364,6 +401,8 @@ </td> <td class="no-wrap">22 January 2022</td> <td> + <a href="https://cwiki.apache.org/confluence/display/WW/S2-066">S2-066</a>, + <a href="https://cwiki.apache.org/confluence/display/WW/S2-065">S2-065</a>, <a href="https://cwiki.apache.org/confluence/display/WW/S2-064">S2-064</a>, <a href="https://cwiki.apache.org/confluence/display/WW/S2-063">S2-063</a> </td> @@ -377,6 +416,8 @@ </td> <td class="no-wrap">02 January 2022</td> <td> + <a href="https://cwiki.apache.org/confluence/display/WW/S2-066">S2-066</a>, + <a href="https://cwiki.apache.org/confluence/display/WW/S2-065">S2-065</a>, <a href="https://cwiki.apache.org/confluence/display/WW/S2-064">S2-064</a>, <a href="https://cwiki.apache.org/confluence/display/WW/S2-063">S2-063</a> </td> @@ -390,6 +431,8 @@ </td> <td class="no-wrap">23 December 2021</td> <td> + <a href="https://cwiki.apache.org/confluence/display/WW/S2-066">S2-066</a>, + <a href="https://cwiki.apache.org/confluence/display/WW/S2-065">S2-065</a>, <a href="https://cwiki.apache.org/confluence/display/WW/S2-064">S2-064</a>, <a href="https://cwiki.apache.org/confluence/display/WW/S2-063">S2-063</a> </td> @@ -403,6 +446,8 @@ </td> <td class="no-wrap">17 December 2021</td> <td> + <a href="https://cwiki.apache.org/confluence/display/WW/S2-066">S2-066</a>, + <a href="https://cwiki.apache.org/confluence/display/WW/S2-065">S2-065</a>, <a href="https://cwiki.apache.org/confluence/display/WW/S2-064">S2-064</a>, <a href="https://cwiki.apache.org/confluence/display/WW/S2-063">S2-063</a> </td> diff --git a/content/security/index.html b/content/security/index.html index 2f6061c83..edb42891b 100644 --- a/content/security/index.html +++ b/content/security/index.html @@ -608,16 +608,10 @@ with other known dangerous classes or packages in your application.</p> <p>We additionally recommend enabling the following options (enabled by default in 7.0).</p> <ul> - <li><code class="language-plaintext highlighter-rouge">struts.ognl.allowStaticFieldAccess=false</code> - static field values which aren’t a primitive type can be used to access -classes that wouldn’t otherwise be accessible</li> - <li><code class="language-plaintext highlighter-rouge">struts.disallowProxyObjectAccess=true</code> - disallow proxied objects from being used in OGNL expressions as these often -represent application beans or database entities which are sensitive</li> - <li><code class="language-plaintext highlighter-rouge">struts.disallowDefaultPackageAccess=true</code> - disallow access to classes in the default package which should not be -used in production</li> - <li><code class="language-plaintext highlighter-rouge">struts.ognl.disallowCustomOgnlMap=true</code> - disallow construction of custom OGNL maps which can be used to bypass the -SecurityMemberAccess policy</li> - <li><code class="language-plaintext highlighter-rouge">struts.actionConfig.fallbackToEmptyNamespace=false</code> - prevent Actions in the empty namespace from being accessed from -alternative endpoints</li> + <li><code class="language-plaintext highlighter-rouge">struts.ognl.allowStaticFieldAccess=false</code> - static methods are always blocked, but static fields can also optionally be blocked</li> + <li><code class="language-plaintext highlighter-rouge">struts.disallowProxyMemberAccess=true</code> - disallow proxied objects from being used in OGNL expressions as they may present a security risk</li> + <li><code class="language-plaintext highlighter-rouge">struts.disallowDefaultPackageAccess=true</code> - disallow access to classes in the default package which should not be used in production</li> + <li><code class="language-plaintext highlighter-rouge">struts.ognl.disallowCustomOgnlMap=true</code> - disallow construction of custom OGNL maps which can be used to bypass the SecurityMemberAccess policy</li> </ul> <h4 id="allowlist-capability">Allowlist Capability</h4> diff --git a/content/tag-developers/ajax-and-javascript-recipes.html b/content/tag-developers/ajax-and-javascript-recipes.html index c865b3e65..f162a0c2c 100644 --- a/content/tag-developers/ajax-and-javascript-recipes.html +++ b/content/tag-developers/ajax-and-javascript-recipes.html @@ -386,8 +386,8 @@ dojo.event.topic.subscribe("/before", function(event, widget){ <h3 id="publish-a-topic-after-the-request">Publish a topic after the request</h3> <div class="language-jsp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt"><script </span><span class="na">type=</span><span class="s">"text/javascript"</span><span class="nt">></span> -<span class="nx">dojo</span><span class="p">.</span><span class="nx">event</span><span class="p">.</span><span class="nx">topic</span><span class="p">.</span><span class="nf">subscribe</span><span class="p">(</span><span class="dl">"</span><span class="s2">/after</span><span class="dl">"</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">data</span><span class="p">,</span> <span class="nx">request</span><span class="p">,</span> <span c [...] - <span class="nf">alert</span><span class="p">(</span><span class="dl">'</span><span class="s1">inside a topic event. after request</span><span class="dl">'</span><span class="p">);</span> +<span class="nx">dojo</span><span class="p">.</span><span class="nx">event</span><span class="p">.</span><span class="nx">topic</span><span class="p">.</span><span class="nx">subscribe</span><span class="p">(</span><span class="dl">"</span><span class="s2">/after</span><span class="dl">"</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">data</span><span class="p">,</span> <span class="nx">request</span><span class="p">,</span> <span c [...] + <span class="nx">alert</span><span class="p">(</span><span class="dl">'</span><span class="s1">inside a topic event. after request</span><span class="dl">'</span><span class="p">);</span> <span class="c1">//data : text returned from request</span> <span class="c1">//request: XMLHttpRequest object</span> <span class="c1">//widget: widget that published the topic</span> @@ -408,8 +408,8 @@ dojo.event.topic.subscribe("/before", function(event, widget){ <h3 id="publish-a-topic-on-error">Publish a topic on error</h3> <div class="language-jsp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt"><script </span><span class="na">type=</span><span class="s">"text/javascript"</span><span class="nt">></span> -<span class="nx">dojo</span><span class="p">.</span><span class="nx">event</span><span class="p">.</span><span class="nx">topic</span><span class="p">.</span><span class="nf">subscribe</span><span class="p">(</span><span class="dl">"</span><span class="s2">/error</span><span class="dl">"</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">error</span><span class="p">,</span> <span class="nx">request</span><span class="p">,</span> <span [...] - <span class="nf">alert</span><span class="p">(</span><span class="dl">'</span><span class="s1">inside a topic event. on error</span><span class="dl">'</span><span class="p">);</span> +<span class="nx">dojo</span><span class="p">.</span><span class="nx">event</span><span class="p">.</span><span class="nx">topic</span><span class="p">.</span><span class="nx">subscribe</span><span class="p">(</span><span class="dl">"</span><span class="s2">/error</span><span class="dl">"</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">error</span><span class="p">,</span> <span class="nx">request</span><span class="p">,</span> <span [...] + <span class="nx">alert</span><span class="p">(</span><span class="dl">'</span><span class="s1">inside a topic event. on error</span><span class="dl">'</span><span class="p">);</span> <span class="c1">//error : error object (error.message has the error message)</span> <span class="c1">//request: XMLHttpRequest object</span> <span class="c1">//widget: widget that published the topic</span> @@ -445,8 +445,8 @@ dojo.event.topic.subscribe("/before", function(event, widget){ <h3 id="prevent-a-request">Prevent a request</h3> <div class="language-jsp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt"><script </span><span class="na">type=</span><span class="s">"text/javascript"</span><span class="nt">></span> -<span class="nx">dojo</span><span class="p">.</span><span class="nx">event</span><span class="p">.</span><span class="nx">topic</span><span class="p">.</span><span class="nf">subscribe</span><span class="p">(</span><span class="dl">"</span><span class="s2">/before</span><span class="dl">"</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">event</span><span class="p">,</span> <span class="nx">widget</span><span class="p">){</span> - <span class="nf">alert</span><span class="p">(</span><span class="dl">'</span><span class="s1">I will stop this request</span><span class="dl">'</span><span class="p">);</span> +<span class="nx">dojo</span><span class="p">.</span><span class="nx">event</span><span class="p">.</span><span class="nx">topic</span><span class="p">.</span><span class="nx">subscribe</span><span class="p">(</span><span class="dl">"</span><span class="s2">/before</span><span class="dl">"</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">event</span><span class="p">,</span> <span class="nx">widget</span><span class="p">){</span> + <span class="nx">alert</span><span class="p">(</span><span class="dl">'</span><span class="s1">I will stop this request</span><span class="dl">'</span><span class="p">);</span> <span class="nx">event</span><span class="p">.</span><span class="nx">cancel</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span> <span class="p">});</span> <span class="nt"></script></span> @@ -589,26 +589,26 @@ dojo.event.topic.subscribe("/before", function(event, widget){ <h3 id="setget-value-using-javascript">Set/Get value using JavaScript</h3> <div class="language-jsp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt"><script </span><span class="na">type=</span><span class="s">"text/javascript"</span><span class="nt">></span> - <span class="kd">function</span> <span class="nf">setValue</span><span class="p">()</span> <span class="p">{</span> - <span class="kd">var</span> <span class="nx">picker</span> <span class="o">=</span> <span class="nx">dojo</span><span class="p">.</span><span class="nx">widget</span><span class="p">.</span><span class="nf">byId</span><span class="p">(</span><span class="dl">"</span><span class="s2">picker</span><span class="dl">"</span><span class="p">);</span> + <span class="kd">function</span> <span class="nx">setValue</span><span class="p">()</span> <span class="p">{</span> + <span class="kd">var</span> <span class="nx">picker</span> <span class="o">=</span> <span class="nx">dojo</span><span class="p">.</span><span class="nx">widget</span><span class="p">.</span><span class="nx">byId</span><span class="p">(</span><span class="dl">"</span><span class="s2">picker</span><span class="dl">"</span><span class="p">);</span> <span class="c1">//string value</span> - <span class="nx">picker</span><span class="p">.</span><span class="nf">setValue</span><span class="p">(</span><span class="dl">'</span><span class="s1">2007-01-01</span><span class="dl">'</span><span class="p">);</span> + <span class="nx">picker</span><span class="p">.</span><span class="nx">setValue</span><span class="p">(</span><span class="dl">'</span><span class="s1">2007-01-01</span><span class="dl">'</span><span class="p">);</span> <span class="c1">//Date value</span> - <span class="nx">picker</span><span class="p">.</span><span class="nf">setValue</span><span class="p">(</span><span class="k">new</span> <span class="nc">Date</span><span class="p">());</span> + <span class="nx">picker</span><span class="p">.</span><span class="nx">setValue</span><span class="p">(</span><span class="k">new</span> <span class="nb">Date</span><span class="p">());</span> <span class="p">}</span> - <span class="kd">function</span> <span class="nf">showValue</span><span class="p">()</span> <span class="p">{</span> - <span class="kd">var</span> <span class="nx">picker</span> <span class="o">=</span> <span class="nx">dojo</span><span class="p">.</span><span class="nx">widget</span><span class="p">.</span><span class="nf">byId</span><span class="p">(</span><span class="dl">"</span><span class="s2">picker</span><span class="dl">"</span><span class="p">);</span> + <span class="kd">function</span> <span class="nx">showValue</span><span class="p">()</span> <span class="p">{</span> + <span class="kd">var</span> <span class="nx">picker</span> <span class="o">=</span> <span class="nx">dojo</span><span class="p">.</span><span class="nx">widget</span><span class="p">.</span><span class="nx">byId</span><span class="p">(</span><span class="dl">"</span><span class="s2">picker</span><span class="dl">"</span><span class="p">);</span> <span class="c1">//string value</span> - <span class="kd">var</span> <span class="nx">stringValue</span> <span class="o">=</span> <span class="nx">picker</span><span class="p">.</span><span class="nf">getValue</span><span class="p">();</span> - <span class="nf">alert</span><span class="p">(</span><span class="nx">stringValue</span><span class="p">);</span> + <span class="kd">var</span> <span class="nx">stringValue</span> <span class="o">=</span> <span class="nx">picker</span><span class="p">.</span><span class="nx">getValue</span><span class="p">();</span> + <span class="nx">alert</span><span class="p">(</span><span class="nx">stringValue</span><span class="p">);</span> <span class="c1">//date value</span> - <span class="kd">var</span> <span class="nx">dateValue</span> <span class="o">=</span> <span class="nx">picker</span><span class="p">.</span><span class="nf">getDate</span><span class="p">();</span> - <span class="nf">alert</span><span class="p">(</span><span class="nx">dateValue</span><span class="p">);</span> + <span class="kd">var</span> <span class="nx">dateValue</span> <span class="o">=</span> <span class="nx">picker</span><span class="p">.</span><span class="nx">getDate</span><span class="p">();</span> + <span class="nx">alert</span><span class="p">(</span><span class="nx">dateValue</span><span class="p">);</span> <span class="p">}</span> <span class="nt"></script></span> @@ -623,8 +623,8 @@ dojo.event.topic.subscribe("/before", function(event, widget){ <h3 id="publish-topic-when-value-changes">Publish topic when value changes</h3> <div class="language-jsp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt"><script </span><span class="na">type=</span><span class="s">"text/javascript"</span><span class="nt">></span> - <span class="nx">dojo</span><span class="p">.</span><span class="nx">event</span><span class="p">.</span><span class="nx">topic</span><span class="p">.</span><span class="nf">subscribe</span><span class="p">(</span><span class="dl">"</span><span class="s2">/value</span><span class="dl">"</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">text</span><span class="p">,</span> <span class="nx">date</span><span class="p">,</span> <span cl [...] - <span class="nf">alert</span><span class="p">(</span><span class="dl">'</span><span class="s1">value changed</span><span class="dl">'</span><span class="p">);</span> + <span class="nx">dojo</span><span class="p">.</span><span class="nx">event</span><span class="p">.</span><span class="nx">topic</span><span class="p">.</span><span class="nx">subscribe</span><span class="p">(</span><span class="dl">"</span><span class="s2">/value</span><span class="dl">"</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">text</span><span class="p">,</span> <span class="nx">date</span><span class="p">,</span> <span cl [...] + <span class="nx">alert</span><span class="p">(</span><span class="dl">'</span><span class="s1">value changed</span><span class="dl">'</span><span class="p">);</span> <span class="c1">//textEntered: String entered in the textbox</span> <span class="c1">//date: JavaScript Date object with the value selected</span> <span class="c1">//widget: widget that published the topic </span> @@ -721,15 +721,15 @@ dojo.event.topic.subscribe("/before", function(event, widget){ <h3 id="enabledisable-tabs-using-javascript">Enable/Disable tabs using JavaScript</h3> <div class="language-jsp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt"><script </span><span class="na">type=</span><span class="s">"text/javascript"</span><span class="nt">></span> - <span class="kd">function</span> <span class="nf">enableTab</span><span class="p">(</span><span class="nx">param</span><span class="p">)</span> <span class="p">{</span> - <span class="kd">var</span> <span class="nx">tabContainer</span> <span class="o">=</span> <span class="nx">dojo</span><span class="p">.</span><span class="nx">widget</span><span class="p">.</span><span class="nf">byId</span><span class="p">(</span><span class="dl">'</span><span class="s1">tabContainer</span><span class="dl">'</span><span class="p">);</span> - <span class="nx">tabContainer</span><span class="p">.</span><span class="nf">enableTab</span><span class="p">(</span><span class="nx">param</span><span class="p">);</span> + <span class="kd">function</span> <span class="nx">enableTab</span><span class="p">(</span><span class="nx">param</span><span class="p">)</span> <span class="p">{</span> + <span class="kd">var</span> <span class="nx">tabContainer</span> <span class="o">=</span> <span class="nx">dojo</span><span class="p">.</span><span class="nx">widget</span><span class="p">.</span><span class="nx">byId</span><span class="p">(</span><span class="dl">'</span><span class="s1">tabContainer</span><span class="dl">'</span><span class="p">);</span> + <span class="nx">tabContainer</span><span class="p">.</span><span class="nx">enableTab</span><span class="p">(</span><span class="nx">param</span><span class="p">);</span> <span class="p">}</span> - <span class="kd">function</span> <span class="nf">disableTab</span><span class="p">(</span><span class="nx">param</span><span class="p">)</span> <span class="p">{</span> - <span class="kd">var</span> <span class="nx">tabContainer</span> <span class="o">=</span> <span class="nx">dojo</span><span class="p">.</span><span class="nx">widget</span><span class="p">.</span><span class="nf">byId</span><span class="p">(</span><span class="dl">'</span><span class="s1">tabContainer</span><span class="dl">'</span><span class="p">);</span> - <span class="nx">tabContainer</span><span class="p">.</span><span class="nf">disableTab</span><span class="p">(</span><span class="nx">param</span><span class="p">);</span> + <span class="kd">function</span> <span class="nx">disableTab</span><span class="p">(</span><span class="nx">param</span><span class="p">)</span> <span class="p">{</span> + <span class="kd">var</span> <span class="nx">tabContainer</span> <span class="o">=</span> <span class="nx">dojo</span><span class="p">.</span><span class="nx">widget</span><span class="p">.</span><span class="nx">byId</span><span class="p">(</span><span class="dl">'</span><span class="s1">tabContainer</span><span class="dl">'</span><span class="p">);</span> + <span class="nx">tabContainer</span><span class="p">.</span><span class="nx">disableTab</span><span class="p">(</span><span class="nx">param</span><span class="p">);</span> <span class="p">}</span> <span class="nt"></script></span> @@ -782,12 +782,12 @@ dojo.event.topic.subscribe("/before", function(event, widget){ <h3 id="publish-topics-when-tab-is-selected">Publish topics when tab is selected</h3> <div class="language-jsp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt"><script </span><span class="na">type=</span><span class="s">"text/javascript"</span><span class="nt">></span> - <span class="nx">dojo</span><span class="p">.</span><span class="nx">event</span><span class="p">.</span><span class="nx">topic</span><span class="p">.</span><span class="nf">subscribe</span><span class="p">(</span><span class="dl">'</span><span class="s1">/before</span><span class="dl">'</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">event</span><span class="p">,</span> <span class="nx">tab</span><span class="p">,</span> <span [...] - <span class="nf">alert</span><span class="p">(</span><span class="dl">"</span><span class="s2">Before selecting tab</span><span class="dl">"</span><span class="p">);</span> + <span class="nx">dojo</span><span class="p">.</span><span class="nx">event</span><span class="p">.</span><span class="nx">topic</span><span class="p">.</span><span class="nx">subscribe</span><span class="p">(</span><span class="dl">'</span><span class="s1">/before</span><span class="dl">'</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">event</span><span class="p">,</span> <span class="nx">tab</span><span class="p">,</span> <span [...] + <span class="nx">alert</span><span class="p">(</span><span class="dl">"</span><span class="s2">Before selecting tab</span><span class="dl">"</span><span class="p">);</span> <span class="p">});</span> - <span class="nx">dojo</span><span class="p">.</span><span class="nx">event</span><span class="p">.</span><span class="nx">topic</span><span class="p">.</span><span class="nf">subscribe</span><span class="p">(</span><span class="dl">'</span><span class="s1">/after</span><span class="dl">'</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">tab</span><span class="p">,</span> <span class="nx">tabContainer</span><span class="p">)</span> [...] - <span class="nf">alert</span><span class="p">(</span><span class="dl">"</span><span class="s2">After tab was selected</span><span class="dl">"</span><span class="p">);</span> + <span class="nx">dojo</span><span class="p">.</span><span class="nx">event</span><span class="p">.</span><span class="nx">topic</span><span class="p">.</span><span class="nx">subscribe</span><span class="p">(</span><span class="dl">'</span><span class="s1">/after</span><span class="dl">'</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">tab</span><span class="p">,</span> <span class="nx">tabContainer</span><span class="p">)</span> [...] + <span class="nx">alert</span><span class="p">(</span><span class="dl">"</span><span class="s2">After tab was selected</span><span class="dl">"</span><span class="p">);</span> <span class="p">});</span> <span class="nt"></script></span> <span class="nt"><sx:tabbedpanel </span><span class="na">beforeSelectTabNotifyTopics=</span><span class="s">"/before"</span><span class="na"> afterSelectTabNotifyTopics=</span><span class="s">"/after"</span><span class="na"> id=</span><span class="s">"tabContainer"</span><span class="nt">></span> @@ -803,9 +803,9 @@ dojo.event.topic.subscribe("/before", function(event, widget){ <h3 id="select-tab-using-javascript">Select tab using JavaScript</h3> <div class="language-jsp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt"><script </span><span class="na">type=</span><span class="s">"text/javascript"</span><span class="nt">></span> - <span class="kd">function</span> <span class="nf">selectTab</span><span class="p">(</span><span class="nx">id</span><span class="p">)</span> <span class="p">{</span> - <span class="kd">var</span> <span class="nx">tabContainer</span> <span class="o">=</span> <span class="nx">dojo</span><span class="p">.</span><span class="nx">widget</span><span class="p">.</span><span class="nf">byId</span><span class="p">(</span><span class="dl">"</span><span class="s2">tabContainer</span><span class="dl">"</span><span class="p">);</span> - <span class="nx">tabContainer</span><span class="p">.</span><span class="nf">selectTab</span><span class="p">(</span><span class="nx">id</span><span class="p">);</span> + <span class="kd">function</span> <span class="nx">selectTab</span><span class="p">(</span><span class="nx">id</span><span class="p">)</span> <span class="p">{</span> + <span class="kd">var</span> <span class="nx">tabContainer</span> <span class="o">=</span> <span class="nx">dojo</span><span class="p">.</span><span class="nx">widget</span><span class="p">.</span><span class="nx">byId</span><span class="p">(</span><span class="dl">"</span><span class="s2">tabContainer</span><span class="dl">"</span><span class="p">);</span> + <span class="nx">tabContainer</span><span class="p">.</span><span class="nx">selectTab</span><span class="p">(</span><span class="nx">id</span><span class="p">);</span> <span class="p">}</span> <span class="nt"></script></span> <span class="nt"><sx:tabbedpanel </span><span class="na">id=</span><span class="s">"tabContainer"</span><span class="nt">></span> @@ -824,7 +824,7 @@ dojo.event.topic.subscribe("/before", function(event, widget){ <h3 id="prevent-tab-2-from-being-selected">Prevent tab 2 from being selected</h3> <div class="language-jsp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt"><script </span><span class="na">type=</span><span class="s">"text/javascript"</span><span class="nt">></span> - <span class="nx">dojo</span><span class="p">.</span><span class="nx">event</span><span class="p">.</span><span class="nx">topic</span><span class="p">.</span><span class="nf">subscribe</span><span class="p">(</span><span class="dl">'</span><span class="s1">/before</span><span class="dl">'</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">event</span><span class="p">,</span> <span class="nx">tab</span><span class="p">,</span> <span [...] + <span class="nx">dojo</span><span class="p">.</span><span class="nx">event</span><span class="p">.</span><span class="nx">topic</span><span class="p">.</span><span class="nx">subscribe</span><span class="p">(</span><span class="dl">'</span><span class="s1">/before</span><span class="dl">'</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">event</span><span class="p">,</span> <span class="nx">tab</span><span class="p">,</span> <span [...] <span class="nx">event</span><span class="p">.</span><span class="nx">cancel</span> <span class="o">=</span> <span class="nx">tab</span><span class="p">.</span><span class="nx">widgetId</span> <span class="o">==</span> <span class="dl">"</span><span class="s2">tab2</span><span class="dl">"</span> <span class="p">;</span> <span class="p">});</span> <span class="nt"></script></span> @@ -1058,14 +1058,14 @@ one for the selected value, and one for its associated key.</p> <h3 id="disable-itenable-it-using-javascript">Disable it/enable it using JavaScript</h3> <div class="language-jsp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt"><script </span><span class="na">type=</span><span class="s">"text/javascript"</span><span class="nt">></span> - <span class="kd">function</span> <span class="nf">enableit</span><span class="p">()</span> <span class="p">{</span> - <span class="kd">var</span> <span class="nx">autoCompleter</span> <span class="o">=</span> <span class="nx">dojo</span><span class="p">.</span><span class="nx">widget</span><span class="p">.</span><span class="nf">byId</span><span class="p">(</span><span class="dl">"</span><span class="s2">auto</span><span class="dl">"</span><span class="p">);</span> - <span class="nx">autoCompleter</span><span class="p">.</span><span class="nf">enable</span><span class="p">();</span> + <span class="kd">function</span> <span class="nx">enableit</span><span class="p">()</span> <span class="p">{</span> + <span class="kd">var</span> <span class="nx">autoCompleter</span> <span class="o">=</span> <span class="nx">dojo</span><span class="p">.</span><span class="nx">widget</span><span class="p">.</span><span class="nx">byId</span><span class="p">(</span><span class="dl">"</span><span class="s2">auto</span><span class="dl">"</span><span class="p">);</span> + <span class="nx">autoCompleter</span><span class="p">.</span><span class="nx">enable</span><span class="p">();</span> <span class="p">}</span> - <span class="kd">function</span> <span class="nf">disableit</span><span class="p">()</span> <span class="p">{</span> - <span class="kd">var</span> <span class="nx">autoCompleter</span> <span class="o">=</span> <span class="nx">dojo</span><span class="p">.</span><span class="nx">widget</span><span class="p">.</span><span class="nf">byId</span><span class="p">(</span><span class="dl">"</span><span class="s2">auto</span><span class="dl">"</span><span class="p">);</span> - <span class="nx">autoCompleter</span><span class="p">.</span><span class="nf">disable</span><span class="p">();</span> + <span class="kd">function</span> <span class="nx">disableit</span><span class="p">()</span> <span class="p">{</span> + <span class="kd">var</span> <span class="nx">autoCompleter</span> <span class="o">=</span> <span class="nx">dojo</span><span class="p">.</span><span class="nx">widget</span><span class="p">.</span><span class="nx">byId</span><span class="p">(</span><span class="dl">"</span><span class="s2">auto</span><span class="dl">"</span><span class="p">);</span> + <span class="nx">autoCompleter</span><span class="p">.</span><span class="nx">disable</span><span class="p">();</span> <span class="p">}</span> <span class="nt"></script></span> @@ -1089,7 +1089,7 @@ one for the selected value, and one for its associated key.</p> <h3 id="filter-fields-top-be-submitted-when-options-are-loaded-return-true-to-include">Filter fields top be submitted when options are loaded (return true to include)</h3> <div class="language-jsp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt"><script </span><span class="na">type=</span><span class="s">"text/javascript"</span><span class="nt">></span> - <span class="kd">function</span> <span class="nf">filter</span><span class="p">(</span><span class="nx">input</span><span class="p">)</span> <span class="p">{</span> + <span class="kd">function</span> <span class="nx">filter</span><span class="p">(</span><span class="nx">input</span><span class="p">)</span> <span class="p">{</span> <span class="k">return</span> <span class="nx">input</span><span class="p">.</span><span class="nx">name</span> <span class="o">==</span> <span class="dl">"</span><span class="s2">data1</span><span class="dl">"</span><span class="p">;</span> <span class="p">}</span> <span class="nt"></script></span> diff --git a/content/tag-developers/ajax-div-template.html b/content/tag-developers/ajax-div-template.html index 9a2ceceee..189b48f10 100644 --- a/content/tag-developers/ajax-div-template.html +++ b/content/tag-developers/ajax-div-template.html @@ -259,15 +259,15 @@ For the remote div with the component id <code class="language-plaintext highlig <p>To start refreshing use the javascript:</p> -<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nx">remotediv1</span><span class="p">.</span><span class="nf">startTimer</span><span class="p">();</span> +<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nx">remotediv1</span><span class="p">.</span><span class="nx">startTimer</span><span class="p">();</span> </code></pre></div></div> <p>To stop refreshing use the javascript:</p> -<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nx">remotediv1</span><span class="p">.</span><span class="nf">stopTimer</span><span class="p">();</span> +<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nx">remotediv1</span><span class="p">.</span><span class="nx">stopTimer</span><span class="p">();</span> </code></pre></div></div> <p>To refresh the content use the javascript:</p> -<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nx">remotediv1</span><span class="p">.</span><span class="nf">refresh</span><span class="p">();</span> +<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nx">remotediv1</span><span class="p">.</span><span class="nx">refresh</span><span class="p">();</span> </code></pre></div></div> <h2 id="javascript-examples">JavaScript Examples</h2> @@ -282,12 +282,12 @@ the AJAX div so it refreshes.</p> <div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt"><saf:head</span> <span class="na">theme=</span><span class="s">"ajax"</span> <span class="nt">/></span> <span class="nt"><script </span><span class="na">type=</span><span class="s">"text/javascript"</span><span class="nt">></span> - <span class="kd">function</span> <span class="nf">updateReports</span><span class="p">(</span><span class="nx">id</span><span class="p">)</span> <span class="p">{</span> + <span class="kd">function</span> <span class="nx">updateReports</span><span class="p">(</span><span class="nx">id</span><span class="p">)</span> <span class="p">{</span> <span class="kd">var</span> <span class="nx">reportDiv</span><span class="o">=</span> <span class="nb">window</span><span class="p">[</span><span class="dl">'</span><span class="s1">reportDivId</span><span class="dl">'</span><span class="p">];</span> <span class="nx">reportDiv</span><span class="p">.</span><span class="nx">href</span> <span class="o">=</span> <span class="dl">'</span><span class="s1">/../reportListRemote.action?selectedId=</span><span class="dl">'</span><span class="o">+</span><span class="nx">id</span><span class="p">;</span> - <span class="nx">reportDiv</span><span class="p">.</span><span class="nf">refresh</span><span class="p">();</span> + <span class="nx">reportDiv</span><span class="p">.</span><span class="nx">refresh</span><span class="p">();</span> <span class="p">}</span> - <span class="nx">dojo</span><span class="p">.</span><span class="nx">event</span><span class="p">.</span><span class="nx">topic</span><span class="p">.</span><span class="nf">getTopic</span><span class="p">(</span><span class="dl">"</span><span class="s2">updateReportsListTopic</span><span class="dl">"</span><span class="p">).</span><span class="nf">subscribe</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="dl">"</span><span class="s2">u [...] + <span class="nx">dojo</span><span class="p">.</span><span class="nx">event</span><span class="p">.</span><span class="nx">topic</span><span class="p">.</span><span class="nx">getTopic</span><span class="p">(</span><span class="dl">"</span><span class="s2">updateReportsListTopic</span><span class="dl">"</span><span class="p">).</span><span class="nx">subscribe</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="dl">"</span><span class="s2">u [...] <span class="nt"></script></span> <span class="nt"><form</span> <span class="err">...</span> <span class="nt">></span> diff --git a/content/tag-developers/ajax-event-system.html b/content/tag-developers/ajax-event-system.html index ba01d552e..7d114b8c6 100644 --- a/content/tag-developers/ajax-event-system.html +++ b/content/tag-developers/ajax-event-system.html @@ -176,11 +176,11 @@ attribute. See the <a href="ajax-div-template">ajax div template</a> for an exam <p>To subscribe to the <code class="language-plaintext highlighter-rouge">topic_name</code> topic:</p> -<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">function</span> <span class="nf">doSomethingWithEvent</span><span class="p">(</span><span class="nx">data</span><span class="p">)</span> <span class="p">{</span> +<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">function</span> <span class="nx">doSomethingWithEvent</span><span class="p">(</span><span class="nx">data</span><span class="p">)</span> <span class="p">{</span> <span class="p">...</span> <span class="p">}</span> -<span class="nx">dojo</span><span class="p">.</span><span class="nx">event</span><span class="p">.</span><span class="nx">topic</span><span class="p">.</span><span class="nf">getTopic</span><span class="p">(</span><span class="dl">"</span><span class="s2">topic_name</span><span class="dl">"</span><span class="p">).</span><span class="nf">subscribe</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="dl">"</span><span class="s2">doSomethingWithEv [...] +<span class="nx">dojo</span><span class="p">.</span><span class="nx">event</span><span class="p">.</span><span class="nx">topic</span><span class="p">.</span><span class="nx">getTopic</span><span class="p">(</span><span class="dl">"</span><span class="s2">topic_name</span><span class="dl">"</span><span class="p">).</span><span class="nx">subscribe</span><span class="p">(</span><span class="kc">null</span><span class="p">,</span> <span class="dl">"</span><span class="s2">doSomethingWithEv [...] </code></pre></div></div> <p>The <code class="language-plaintext highlighter-rouge">subscribe</code> method takes 2 parameters, the first is the JavaScript object variable (or null if the function is not