Author: buildbot Date: Sat Dec 2 20:12:19 2023 New Revision: 1084889 Log: Production update by buildbot for tapestry
Modified: websites/production/tapestry/content/ajax-and-zones.html websites/production/tapestry/content/beaneditform-faq.html websites/production/tapestry/content/cache/main.pageCache websites/production/tapestry/content/component-events-faq.html websites/production/tapestry/content/component-parameters.html websites/production/tapestry/content/forms-and-validation.html websites/production/tapestry/content/injection.html websites/production/tapestry/content/javascript-faq.html websites/production/tapestry/content/page-navigation.html websites/production/tapestry/content/release-notes-50.html websites/production/tapestry/content/release-notes-51.html websites/production/tapestry/content/release-notes-52.html websites/production/tapestry/content/release-notes-53.html websites/production/tapestry/content/release-upgrade-faq.html websites/production/tapestry/content/request-processing-faq.html websites/production/tapestry/content/security-faq.html websites/production/tapestry/content/session-storage.html websites/production/tapestry/content/templating-and-markup-faq.html Modified: websites/production/tapestry/content/ajax-and-zones.html ============================================================================== --- websites/production/tapestry/content/ajax-and-zones.html (original) +++ websites/production/tapestry/content/ajax-and-zones.html Sat Dec 2 20:12:19 2023 @@ -274,7 +274,7 @@ void onUpdateTime() } </code></pre> </div></div><p>That <code>onUpdateTime</code> method is just an ordinary Tapestry event handler, except that it uses an injected <code>AjaxResponseRenderer</code> to tell Tapestry what zone to update when the link is clicked.</p><p>Since Tapestry 5.4.2, you can also easily invoke server-side event handlers using the <code>@PublishEvents</code> annotation and the <code>t5/core/ajax</code> JavaScript function, as explained in the <a href="ajax-and-zones.html">Invoking server-side event handler methods from JavaScript</a> section below.</p><h3 id="AjaxandZones-Zones">Zones</h3><p>Zones are Tapestry's approach to performing partial page updates. A <a class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/corelib/components/Zone.html">Zone component</a> renders as an HTML element, typically a <div>, and serves as a marker for where dynamically-updated content should be replaced. A zone is recognizable in the DOM because it will ha ve the attribute <code>data-container-type=zone</code>. The client-side support for Zones is keyed off of this attribute and value.</p><p>Starting in Tapestry 5.4 you can use any HTML element in your template as a zone marker, by passing its client-side id to the two-argument version of the addRender method.</p><p><span>A Zone updated can be triggered by an EventLink, ActionLink or Select component, or by a Form. All of these components support the <code>async</code> and/or <code>zone</code> parameters. Clicking such a link will invoke an event handler method on the server as normal ... except that a </span> <em>partial page response</em> <span> is sent to the client, and the content of that response is used to update the Zone's <div> in place.</span></p><div class="navmenu" style="float:right; background:#eee; margin:3px; padding:0 1em"> <p> <strong>JumpStart Demo:</strong> - <span class="nobr"><a class="external-link" href="https://tapestry-jumpstart.org/jumpstart/examples/ajax/actionlink" rel="nofollow">AJAX ActionLink<sup><img align="middle" class="rendericon" src="/images/confluence/icons/linkext7.gif" height="7" width="7" alt="" border="0"></sup></a></span></p></div><h3 id="AjaxandZones-EventHandlerReturnTypes">Event Handler Return Types</h3><p>In a traditional request, the return value of an event handler method may used to determine which page will render a <em>complete</em> response, and a <em>redirect</em> may sent to the client to render the new page (as a new request).</p><p>In contrast, with a Zone update, the return value may used to render a <em>partial response</em> within the <em>same request</em>.</p><div class="confluence-information-macro confluence-information-macro-note"><span class="aui-icon aui-icon-small aui-iconfont-warning confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>Starting in Tapestry 5.3, Ajax event handlers typically have a void return type and use AjaxResponseRenderer to indicate which zone to update. The AjaxResponseRender approach means that the <code>zone</code> parameter's value (oridinarily indicating which zone to update) is no longer needed. Tapestry 5.4 introduced the <code>async="true"</code> parameter to avoid having to redundantly indicate which zone to update.</p></div></div><p>If you only have one zone to update and don't want to use AjaxResponseRenderer, you can instead return a value from your event handler method. The simplest case is just to return the zone's own body:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> + <span class="nobr"><a class="external-link" href="https://tapestry-jumpstart.org/jumpstart/examples/ajax/actionlink" rel="nofollow">AJAX ActionLink<sup><img align="middle" class="rendericon" src="/images/confluence/icons/linkext7.gif" height="7" width="7" alt="" border="0"></sup></a></span></p></div><p></p><h3 id="AjaxandZones-EventHandlerReturnTypes">Event Handler Return Types</h3><p>In a traditional request, the return value of an event handler method may used to determine which page will render a <em>complete</em> response, and a <em>redirect</em> may sent to the client to render the new page (as a new request).</p><p>In contrast, with a Zone update, the return value may used to render a <em>partial response</em> within the <em>same request</em>.</p><div class="confluence-information-macro confluence-information-macro-note"><span class="aui-icon aui-icon-small aui-iconfont-warning confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>Star ting in Tapestry 5.3, Ajax event handlers typically have a void return type and use AjaxResponseRenderer to indicate which zone to update. The AjaxResponseRender approach means that the <code>zone</code> parameter's value (oridinarily indicating which zone to update) is no longer needed. Tapestry 5.4 introduced the <code>async="true"</code> parameter to avoid having to redundantly indicate which zone to update.</p></div></div><p>If you only have one zone to update and don't want to use AjaxResponseRenderer, you can instead return a value from your event handler method. The simplest case is just to return the zone's own body:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> <pre><code class="language-java">@Inject private Request request; @@ -300,7 +300,7 @@ Object onActionFromSomeLink() </code></pre> </div></div><h3 id="AjaxandZones-MultipleZoneUpdates">Multiple Zone Updates</h3><p></p><div class="navmenu" style="float:right; background:#eee; margin:3px; padding:0 1em"> <p> <strong>JumpStart Demo:</strong> - <span class="nobr"><a class="external-link" href="https://tapestry-jumpstart.org/jumpstart/examples/ajax/multiplezoneupdate" rel="nofollow">AJAX Multiple Zone Update<sup><img align="middle" class="rendericon" src="/images/confluence/icons/linkext7.gif" height="7" width="7" alt="" border="0"></sup></a></span></p></div>An event handler often needs to update multiple zones on the client side. To accomplish this, use an <a class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/ajax/AjaxResponseRenderer.html">AjaxResponseRenderer</a>, indicating the zones to update. You must know the client-side id for each zone to update (the best way for this is to lock down the zone's id using the id parameter of the Zone component).<p></p><p><em>AjaxResponseRenderer was introduced in Tapestry 5.3. For Tapestry 5.2 and earlier, return a <a class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ajax/MultiZoneUpdate.h tml">MultiZoneUpdate</a> object instead.</em></p><p>The renderer for each zone can be the zone itself, a block, a component, a <a class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/Renderable.html">Renderable</a> or a <a class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/runtime/RenderCommand.html">RenderCommand</a> ... or an object, such as String, that can be coerced to either of these.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>For Tapestry 5.3 and later</b></div><div class="codeContent panelContent pdl"> + <span class="nobr"><a class="external-link" href="https://tapestry-jumpstart.org/jumpstart/examples/ajax/multiplezoneupdate" rel="nofollow">AJAX Multiple Zone Update<sup><img align="middle" class="rendericon" src="/images/confluence/icons/linkext7.gif" height="7" width="7" alt="" border="0"></sup></a></span></p></div><p>An event handler often needs to update multiple zones on the client side. To accomplish this, use an <a class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/ajax/AjaxResponseRenderer.html">AjaxResponseRenderer</a>, indicating the zones to update. You must know the client-side id for each zone to update (the best way for this is to lock down the zone's id using the id parameter of the Zone component).</p><p></p><p><em>AjaxResponseRenderer was introduced in Tapestry 5.3. For Tapestry 5.2 and earlier, return a <a class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ajax/MultiZoneU pdate.html">MultiZoneUpdate</a> object instead.</em></p><p>The renderer for each zone can be the zone itself, a block, a component, a <a class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/Renderable.html">Renderable</a> or a <a class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/runtime/RenderCommand.html">RenderCommand</a> ... or an object, such as String, that can be coerced to either of these.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>For Tapestry 5.3 and later</b></div><div class="codeContent panelContent pdl"> <pre><code class="language-java">@InjectComponent private Zone userInput; @@ -328,7 +328,7 @@ void onActionFromRegister() <pre><code class="language-xml"><t:zone t:id="myzone" id="prop:componentResources.id"></code></pre> </div></div><p></p><p>See <a class="external-link" href="https://tapestry-jumpstart.org/jumpstart/examples/ajax/components1" rel="nofollow">this JumpStart Example</a> for details.</p><p>The show and update function names (Tapestry 5.3 and earlier only) are converted to lower case; all the methods of Tapestry.ElementEffect should have all lower-case names. Because client-side JavaScript is so fluid (new methods may be added to existing objects), Tapestry makes no attempt to validate the function names ... however, if the names are not valid, then the default show and highlight methods will be used.</p><p>Zones may only be used inside the <em>body</em> of a page, not the head<em>.</em></p><h3 id="AjaxandZones-MoreInformation">More Information</h3><p>For examples of extending a Form with a Zone and updating multiple zones at once, see the <a href="ajax-components-faq.html">Ajax Components FAQ</a>.</p><p>There are also a number of Ajax-related examples at the  <a class="extern al-link" href="https://tapestry-jumpstart.org/jumpstart/" rel="nofollow"> <span class="confluence-link">Tapestry JumpStart</span> </a> site.</p><p><span class="confluence-anchor-link" id="AjaxandZones-autocomplete"></span></p><h2 id="AjaxandZones-AutocompleteMixin">Autocomplete Mixin</h2><p></p><div class="navmenu" style="float:right; background:#eee; margin:3px; padding:0 1em"> <p> <strong>JumpStart Demo:</strong> - <span class="nobr"><a class="external-link" href="https://tapestry-jumpstart.org/jumpstart/examples/ajax/autocompletemixin" rel="nofollow">Autocomplete Mixin<sup><img align="middle" class="rendericon" src="/images/confluence/icons/linkext7.gif" height="7" width="7" alt="" border="0"></sup></a></span></p></div>The <a class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/corelib/mixins/Autocomplete.html">Autocomplete</a> mixin exists to allow a text field to query the server for completions for a partially entered phrase. It is often used in situations where the field exists to select a single value from a large set, too large to successfully download to the client as a drop down list; for example, when the number of values to select from is numbered in the thousands.<p></p><p>Autocomplete can be added to an existing text field:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> + <span class="nobr"><a class="external-link" href="https://tapestry-jumpstart.org/jumpstart/examples/ajax/autocompletemixin" rel="nofollow">Autocomplete Mixin<sup><img align="middle" class="rendericon" src="/images/confluence/icons/linkext7.gif" height="7" width="7" alt="" border="0"></sup></a></span></p></div><p>The <a class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/corelib/mixins/Autocomplete.html">Autocomplete</a> mixin exists to allow a text field to query the server for completions for a partially entered phrase. It is often used in situations where the field exists to select a single value from a large set, too large to successfully download to the client as a drop down list; for example, when the number of values to select from is numbered in the thousands.</p><p></p><p>Autocomplete can be added to an existing text field:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> <pre><code class="language-java"> <t:textfield t:id="accountName" t:mixins="autocomplete" size="100"/> </code></pre> </div></div><p>The mixin can be configured in a number of ways, see the <a href="component-reference.html">component reference</a>.</p><p>When the user types into the field, the client-side JavaScript will send a request to the server to get completions.</p><p>You must write an event handler to provide these completions. The name of the event is "providecompletions". The context is the partial input value, and the return value will be converted into the selections for the user.</p><p>For example:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> Modified: websites/production/tapestry/content/beaneditform-faq.html ============================================================================== --- websites/production/tapestry/content/beaneditform-faq.html (original) +++ websites/production/tapestry/content/beaneditform-faq.html Sat Dec 2 20:12:19 2023 @@ -143,11 +143,11 @@ <!-- /// Content Start --> <div id="content"> <div id="ConfluenceContent"><h1 id="BeanEditFormFAQ-BeanEditForm">BeanEditForm</h1><p>Main Article: <a href="beaneditform-guide.html">BeanEditForm Guide</a></p><h2 id="BeanEditFormFAQ-Contents">Contents</h2><p><style type="text/css">/*<![CDATA[*/ -div.rbtoc1698747128593 {padding: 0px;} -div.rbtoc1698747128593 ul {margin-left: 0px;} -div.rbtoc1698747128593 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1701547924479 {padding: 0px;} +div.rbtoc1701547924479 ul {margin-left: 0px;} +div.rbtoc1701547924479 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></p><div class="toc-macro rbtoc1698747128593"> +/*]]>*/</style></p><div class="toc-macro rbtoc1701547924479"> <ul class="toc-indentation"><li><a href="#BeanEditFormFAQ-WhydoIgetexceptionsaboutinstantiatingabeanwhenusingBeanEditForm?">Why do I get exceptions about instantiating a bean when using BeanEditForm?</a></li><li><a href="#BeanEditFormFAQ-What'sthedifferencebetweenBeanEditorandBeanEditForm?">What's the difference between BeanEditor and BeanEditForm?</a></li><li><a href="#BeanEditFormFAQ-HowdoIcustomizethelayoutoftheBeanEditForm?">How do I customize the layout of the BeanEditForm?</a></li></ul> </div><h2 id="BeanEditFormFAQ-WhydoIgetexceptionsaboutinstantiatingabeanwhenusingBeanEditForm?">Why do I get exceptions about instantiating a bean when using BeanEditForm?</h2><p>When you render a BeanEditForm, or when the rendered form is submitted, Tapestry must instantiate an instance of the object to be edited. This occurs when the BeanEditForm's <code>object</code> parameter is bound to null: Tapestry instantiates an instance of the property type so that the BeanEditForm has an object to read default values from, or to push submitted values into.</p><p>By default, this uses the standard <a href="injection-in-detail.html">injection mechanism</a>, which means that Tapestry will identify the public constructor with the most parameters, and attempt to find objects and other objects for each constructor parameter.</p><p>There's two ways to fine tune this so you don't get errors:</p><ul><li>Place an @<a class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache /tapestry5/ioc/annotations/Inject.html">Inject</a> annotation on the correct constructor to use (often, the constructor with no parameters).</li></ul><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> <pre><code class="language-java">public class MyBean { Modified: websites/production/tapestry/content/cache/main.pageCache ============================================================================== Binary files - no diff available. Modified: websites/production/tapestry/content/component-events-faq.html ============================================================================== --- websites/production/tapestry/content/component-events-faq.html (original) +++ websites/production/tapestry/content/component-events-faq.html Sat Dec 2 20:12:19 2023 @@ -143,11 +143,11 @@ <!-- /// Content Start --> <div id="content"> <div id="ConfluenceContent"><h1 id="ComponentEventsFAQ-ComponentEvents">Component Events</h1><p>Main Article: <a href="component-events.html">Component Events</a></p><h2 id="ComponentEventsFAQ-Contents">Contents</h2><p><style type="text/css">/*<![CDATA[*/ -div.rbtoc1698747127770 {padding: 0px;} -div.rbtoc1698747127770 ul {margin-left: 0px;} -div.rbtoc1698747127770 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1701547923588 {padding: 0px;} +div.rbtoc1701547923588 ul {margin-left: 0px;} +div.rbtoc1701547923588 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></p><div class="toc-macro rbtoc1698747127770"> +/*]]>*/</style></p><div class="toc-macro rbtoc1701547923588"> <ul class="toc-indentation"><li><a href="#ComponentEventsFAQ-WhydoesTapestrysendaredirectafteraformissubmitted?">Why does Tapestry send a redirect after a form is submitted?</a></li><li><a href="#ComponentEventsFAQ-IspecifiedazoneinmyActionLink/EventLink,sowhydoesn'tmyeventfireviaajax(request.isXHR()isfalse)?">I specified a zone in my ActionLink/EventLink, so why doesn't my event fire via ajax (request.isXHR() is false)?</a></li></ul> </div><h2 id="ComponentEventsFAQ-WhydoesTapestrysendaredirectafteraformissubmitted?">Why does Tapestry send a redirect after a form is submitted?</h2><p>This is an extension of the <a class="external-link" href="http://en.wikipedia.org/wiki/Post/Redirect/Get" rel="nofollow">Post/Redirect/Get</a> approach. It ensures that after an operation that updates server-side state, such as a form submission, if the user resubmits the resulting page, the operation is <strong>not</strong> performed a second time; instead just the results of the operation, reflecting the changed server-side state, is re-rendered.</p><p>This has the unwanted requirement that any data needed to render the response must persist between the event request (the form submission) and the render request; this often means that fields must be annotated with @<a class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/annotations/Persist.html">Persist</a>. Modified: websites/production/tapestry/content/component-parameters.html ============================================================================== --- websites/production/tapestry/content/component-parameters.html (original) +++ websites/production/tapestry/content/component-parameters.html Sat Dec 2 20:12:19 2023 @@ -187,7 +187,7 @@ <span class="icon aui-icon content-type-page" title="Page">Page:</span> </div> <div class="details"> - <a href="default-parameter.html">Default Parameter</a> + <a href="component-classes.html">Component Classes</a> </div> @@ -196,7 +196,7 @@ <span class="icon aui-icon content-type-page" title="Page">Page:</span> </div> <div class="details"> - <a href="supporting-informal-parameters.html">Supporting Informal Parameters</a> + <a href="templating-and-markup-faq.html">Templating and Markup FAQ</a> </div> @@ -205,7 +205,7 @@ <span class="icon aui-icon content-type-page" title="Page">Page:</span> </div> <div class="details"> - <a href="component-classes.html">Component Classes</a> + <a href="default-parameter.html">Default Parameter</a> </div> @@ -214,7 +214,7 @@ <span class="icon aui-icon content-type-page" title="Page">Page:</span> </div> <div class="details"> - <a href="enum-parameter-recipe.html">Enum Parameter Recipe</a> + <a href="supporting-informal-parameters.html">Supporting Informal Parameters</a> </div> @@ -223,7 +223,7 @@ <span class="icon aui-icon content-type-page" title="Page">Page:</span> </div> <div class="details"> - <a href="templating-and-markup-faq.html">Templating and Markup FAQ</a> + <a href="enum-parameter-recipe.html">Enum Parameter Recipe</a> </div> @@ -247,11 +247,11 @@ </div></div><p>A component may have any number of parameters. Each parameter has a specific name, a specific Java type (which may be a primitive value), and may be <em>optional</em> or <em>required</em>.</p><p>Within a component class, parameters are declared by using the @<a class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/annotations/Parameter.html">Parameter</a> annotation on a private field, as we'll see below.</p><p><span class="confluence-anchor-link" id="ComponentParameters-bindingparameters"></span></p><h1 id="ComponentParameters-ParameterBindings">Parameter Bindings</h1><p>In Tapestry, a parameter is not a slot into which data is pushed: it is a <em>connection</em> between a field of the component (marked with the @Parameter annotation) and a property or resource of the component's container. (Components can be nested, so the container can be either the page or another component.)</p><div class="navmenu" style="float:right; backgro und:white; margin:3px; padding:3px"> <div class="panel" style="border-width: 1px;"><div class="panelHeader" style="border-bottom-width: 1px;"><b>Contents</b></div><div class="panelContent"> <style type="text/css">/*<![CDATA[*/ -div.rbtoc1698747106825 {padding: 0px;} -div.rbtoc1698747106825 ul {margin-left: 0px;} -div.rbtoc1698747106825 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1701547901637 {padding: 0px;} +div.rbtoc1701547901637 ul {margin-left: 0px;} +div.rbtoc1701547901637 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style><div class="toc-macro rbtoc1698747106825"> +/*]]>*/</style><div class="toc-macro rbtoc1701547901637"> <ul class="toc-indentation"><li><a href="#ComponentParameters-ParameterBindings">Parameter Bindings</a></li><li><a href="#ComponentParameters-BindingExpressions">Binding Expressions</a></li><li><a href="#ComponentParameters-@Parameterannotation">@Parameter annotation</a></li><li><a href="#ComponentParameters-Don'tusethe${...}syntax!">Don't use the ${...} syntax!</a></li><li><a href="#ComponentParameters-InformalParameters">Informal Parameters</a></li><li><a href="#ComponentParameters-ParametersAreBi-Directional">Parameters Are Bi-Directional</a></li><li><a href="#ComponentParameters-InheritedParameterBindings">Inherited Parameter Bindings</a></li><li><a href="#ComponentParameters-ComputedParameterBindingDefaults">Computed Parameter Binding Defaults</a></li><li><a href="#ComponentParameters-UnboundParameters">Unbound Parameters</a></li><li><a href="#ComponentParameters-ParameterTypeCoercion">Parameter Type Coercion</a></li><li><a href="#ComponentParameters-ParameterNames">Parameter N ames</a></li><li><a href="#ComponentParameters-DeterminingifBound">Determining if Bound</a></li><li><a href="#ComponentParameters-PublishingParameters">Publishing Parameters</a></li></ul> </div> </div></div></div> <p>The connection between a component and a property (or resource) of its container is called a <em>binding</em>. The binding is two-way: the component can read the bound property by reading its parameter field. Likewise, a component that updates its parameter field will update the bound property.</p><p>This is important in a lot of cases; for example a TextField component can read <em>and update</em> the property bound to its value parameter. It reads the value when rendering, but updates the value when the form is submitted.</p><p>The component listed below is a looping component; it renders its body a number of times, defined by its <code>start</code> and <code>end</code> parameters (which set the boundaries of the loop). The component can update a <code>result</code> parameter bound to a property of its container; it will automatically count up or down depending on whether <code>start</code> or <code>end</code> is larger.</p><div class="code panel pdl" st yle="border-width: 1px;"><div class="codeContent panelContent pdl"> Modified: websites/production/tapestry/content/forms-and-validation.html ============================================================================== --- websites/production/tapestry/content/forms-and-validation.html (original) +++ websites/production/tapestry/content/forms-and-validation.html Sat Dec 2 20:12:19 2023 @@ -187,11 +187,11 @@ <p></p><p>Tapestry provides support for creating and rendering forms, populating their fields, and validating user input. For simple cases, input validation is declarative, meaning you simply tell Tapestry what validations to apply to a given field, and it takes care of it on the server and (optionally) on the client as well. In addition, you can provide event handler methods in your page or component classes to handle more complex validation scenarios.</p><p>Finally, Tapestry not only makes it easy to present errors messages to the user, but it can also automatically highlight form fields when validation fails.</p><p><strong>Contents</strong></p><p><style type="text/css">/*<![CDATA[*/ -div.rbtoc1698747112948 {padding: 0px;} -div.rbtoc1698747112948 ul {margin-left: 0px;} -div.rbtoc1698747112948 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1701547908083 {padding: 0px;} +div.rbtoc1701547908083 ul {margin-left: 0px;} +div.rbtoc1701547908083 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></p><div class="toc-macro rbtoc1698747112948"> +/*]]>*/</style></p><div class="toc-macro rbtoc1701547908083"> <ul class="toc-indentation"><li>Related Articles</li></ul> <ul><li><a href="#FormsandValidation-TheFormComponent">The Form Component</a> <ul class="toc-indentation"><li><a href="#FormsandValidation-FormEvents">Form Events</a></li><li><a href="#FormsandValidation-HandlingEvents">Handling Events</a></li><li><a href="#FormsandValidation-TrackingValidationErrors">Tracking Validation Errors</a></li><li><a href="#FormsandValidation-StoringDataBetweenRequests">Storing Data Between Requests</a></li><li><a href="#FormsandValidation-ConfiguringFieldsandLabels">Configuring Fields and Labels</a></li></ul> Modified: websites/production/tapestry/content/injection.html ============================================================================== --- websites/production/tapestry/content/injection.html (original) +++ websites/production/tapestry/content/injection.html Sat Dec 2 20:12:19 2023 @@ -178,7 +178,7 @@ <span class="icon aui-icon content-type-page" title="Page">Page:</span> </div> <div class="details"> - <a href="injection.html">Injection</a> + <a href="environmental-services.html">Environmental Services</a> </div> @@ -187,7 +187,7 @@ <span class="icon aui-icon content-type-page" title="Page">Page:</span> </div> <div class="details"> - <a href="environmental-services.html">Environmental Services</a> + <a href="injection.html">Injection</a> </div> Modified: websites/production/tapestry/content/javascript-faq.html ============================================================================== --- websites/production/tapestry/content/javascript-faq.html (original) +++ websites/production/tapestry/content/javascript-faq.html Sat Dec 2 20:12:19 2023 @@ -143,11 +143,11 @@ <!-- /// Content Start --> <div id="content"> <div id="ConfluenceContent"><h1 id="JavaScriptFAQ-JavaScript">JavaScript</h1><p>Main articles: <a href="client-side-javascript.html">Client-Side JavaScript</a>, <a href="legacy-javascript.html">Legacy JavaScript</a></p><h2 id="JavaScriptFAQ-Contents">Contents</h2><p><style type="text/css">/*<![CDATA[*/ -div.rbtoc1698747120547 {padding: 0px;} -div.rbtoc1698747120547 ul {margin-left: 0px;} -div.rbtoc1698747120547 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1701547915900 {padding: 0px;} +div.rbtoc1701547915900 ul {margin-left: 0px;} +div.rbtoc1701547915900 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></p><div class="toc-macro rbtoc1698747120547"> +/*]]>*/</style></p><div class="toc-macro rbtoc1701547915900"> <ul class="toc-indentation"><li><a href="#JavaScriptFAQ-WhydoIgeta"Tapestryisundefined"erroronformsubmit?(5.3andearlier)">Why do I get a "Tapestry is undefined" error on form submit? (5.3 and earlier)</a></li><li><a href="#JavaScriptFAQ-What'sthedifferencebetweentheT5objectandtheTapestryobjectinthebrowser?(5.3andearlier)">What's the difference between the T5 object and the Tapestry object in the browser? (5.3 and earlier)</a></li></ul> </div><h2 id="JavaScriptFAQ-WhydoIgeta"Tapestryisundefined"erroronformsubmit?(5.3andearlier)">Why do I get a "Tapestry is undefined" error on form submit? (5.3 and earlier)</h2><p>This client-side error is clear but can be awkward to solve. It means your browser has not been able to load the tapestry.js file properly. The question is, why? It can be due to multiple reasons, some of them below:</p><ul><li>First, check if 'tapestry.js' is present in the head part of your resulting HTML page.</li><li><p>If you have set the <a href="configuration.html">tapestry.combine-scripts</a> configuration symbol to true, Tapestry generates one single URL to retrieve all the JS files. Sometimes, this can produce long URLs that browsers are unable to retrieve. Try setting the symbol to false.</p><div class="confluence-information-macro confluence-information-macro-note"><span class="aui-icon aui-icon-small aui-iconfont-warning confluence-information-macro-icon"></span><div class="confluenc e-information-macro-body"><p>This only applies to Tapestry 5.1.</p></div></div></li><li>If you have included jQuery in conjunction with Tapestry's prototype, that will cause a conflict with the '$' selector used by both. In this case, you should put jQuery on top of the stack and turn on the <a class="external-link" href="http://api.jquery.com/jQuery.noConflict/" rel="nofollow">jQuery.noConflict</a> mode.</li><li>Also, if you have included a custom or third-party JS library on top of the stack that causes the JavaScript parsing to fail, then check the JavaScript syntax in that library.</li><li>If you have used a tool to minimize your JavaScript libraries, this can lead to JavaScript syntax errors, so check if it works with all the JavaScript files unpacked.</li></ul><h2 id="JavaScriptFAQ-What'sthedifferencebetweentheT5objectandtheTapestryobjectinthebrowser?(5.3andearlier)">What's the difference between the <code>T5</code> object and the <code>Tapestry</code> object in the browser? ( 5.3 and earlier)</h2><p>Both of these objects are <em>namespaces</em>: containers of functions, constants, and nested namespaces.</p><p>The <code>T5</code> object is a replacement for the <code>Tapestry</code> object, starting in release 5.3. Increasingly, functions defined by the <code>Tapestry</code> object are being replaced with similar or equivalent functions in the <code>T5</code> object.</p><p>This is part of an overall goal, spanning at least two releases of Tapestry, to make Tapestry JavaScript framework agnostic; which is to say, not depend specifically on Prototype or jQuery. Much of the code in the <code>Tapestry</code> object is specifically linked to Prototype and Scriptaculous.</p><p>The <code>T5</code> object represents a stable, documented, set of APIs that are preferred when building components for maximum portability between underlying JavaScript frameworks. In other words, when building component libraries, coding to the <code>T5</code> object ensures that your c omponent will be useful regardless of whether the final application is built using Prototype, jQuery or something else.</p></div> </div> Modified: websites/production/tapestry/content/page-navigation.html ============================================================================== --- websites/production/tapestry/content/page-navigation.html (original) +++ websites/production/tapestry/content/page-navigation.html Sat Dec 2 20:12:19 2023 @@ -232,11 +232,11 @@ <p>In essence, a Tapestry application is a number of related pages, working together. To some degree, each page is like an application unto itself.</p><p>Any individual request will be targeted at a single page. Requests come in two forms: </p><ul><li><em>component event</em> requests target a specific component on a specific page, triggering an event within that component</li><li><em>render</em> requests target a specific page, and stream the HTML markup for that page back to the client</li></ul><p>This dichotomy between component event requests and render requests alleviates a number of problems in traditional web applications related to the browser back button, or to the user hitting the refresh button in their browser.</p><h3 id="PageNavigation-Contents">Contents</h3><h2 id="PageNavigation-Contents|RelatedArticlesLogicalPageNameShortening"><style type="text/css">/*<![CDATA[*/ -div.rbtoc1698747115042 {padding: 0px;} -div.rbtoc1698747115042 ul {margin-left: 0px;} -div.rbtoc1698747115042 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1701547910304 {padding: 0px;} +div.rbtoc1701547910304 ul {margin-left: 0px;} +div.rbtoc1701547910304 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></h2><div class="toc-macro rbtoc1698747115042"> +/*]]>*/</style></h2><div class="toc-macro rbtoc1701547910304"> <ul class="toc-indentation"><li><a href="#PageNavigation-Contents|RelatedArticlesLogicalPageNameShortening">Logical Page Name Shortening</a></li><li><a href="#PageNavigation-ComponentEventRequests&Responses">Component Event Requests & Responses</a> <ul class="toc-indentation"><li><a href="#PageNavigation-1.Nullresponse">1. Null response</a></li><li><a href="#PageNavigation-2.Stringresponse">2. String response</a></li><li><a href="#PageNavigation-3.Classresponse">3. Class response</a></li><li><a href="#PageNavigation-4.Pageresponse">4. Page response</a></li><li><a href="#PageNavigation-5.HttpError">5. HttpError</a></li><li><a href="#PageNavigation-6.Linkresponse">6. Link response</a></li><li><a href="#PageNavigation-7.Streamresponse">7. Stream response</a></li><li><a href="#PageNavigation-8.URLresponse">8. URL response</a></li><li><a href="#PageNavigation-9.Objectresponse">9. Object response</a></li></ul> </li><li><a href="#PageNavigation-PageRenderRequests">Page Render Requests</a></li><li><a href="#PageNavigation-PageActivation">Page Activation</a></li><li><a href="#PageNavigation-PageNavigationPatterns">Page Navigation Patterns</a> Modified: websites/production/tapestry/content/release-notes-50.html ============================================================================== --- websites/production/tapestry/content/release-notes-50.html (original) +++ websites/production/tapestry/content/release-notes-50.html Sat Dec 2 20:12:19 2023 @@ -143,11 +143,11 @@ <!-- /// Content Start --> <div id="content"> <div id="ConfluenceContent"><p>This is the consolidated list of changes between Tapestry versions 5.0.3 and 5.0.19. Before upgrading, be sure to review the <a href="how-to-upgrade.html">How to Upgrade</a> instructions.</p><p><strong>Contents</strong></p><p><style type="text/css">/*<![CDATA[*/ -div.rbtoc1698747124448 {padding: 0px;} -div.rbtoc1698747124448 ul {margin-left: 0px;padding-left: 5px;} -div.rbtoc1698747124448 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1701547922171 {padding: 0px;} +div.rbtoc1701547922171 ul {margin-left: 0px;padding-left: 5px;} +div.rbtoc1701547922171 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></p><div class="toc-macro rbtoc1698747124448"> +/*]]>*/</style></p><div class="toc-macro rbtoc1701547922171"> <ul class="toc-indentation"><li><a href="#ReleaseNotes5.0-TapestryVersion5.0.19">Tapestry Version 5.0.19</a></li><li><a href="#ReleaseNotes5.0-TapestryVersion5.0.18">Tapestry Version 5.0.18</a></li><li><a href="#ReleaseNotes5.0-TapestryVersion5.0.17">Tapestry Version 5.0.17</a></li><li><a href="#ReleaseNotes5.0-TapestryVersion5.0.16">Tapestry Version 5.0.16</a></li><li><a href="#ReleaseNotes5.0-TapestryVersion5.0.15">Tapestry Version 5.0.15</a></li><li><a href="#ReleaseNotes5.0-TapestryVersion5.0.14">Tapestry Version 5.0.14</a></li><li><a href="#ReleaseNotes5.0-TapestryVersion5.0.13">Tapestry Version 5.0.13</a></li><li><a href="#ReleaseNotes5.0-TapestryVersion5.0.12">Tapestry Version 5.0.12</a></li><li><a href="#ReleaseNotes5.0-TapestryVersion5.0.11">Tapestry Version 5.0.11</a></li><li><a href="#ReleaseNotes5.0-TapestryVersion5.0.10">Tapestry Version 5.0.10</a></li><li><a href="#ReleaseNotes5.0-TapestryVersion5.0.9">Tapestry Version 5.0.9</a></li><li><a href="#ReleaseNotes5.0-Tapest ryVersion5.0.8">Tapestry Version 5.0.8</a></li><li><a href="#ReleaseNotes5.0-TapestryVersion5.0.7">Tapestry Version 5.0.7</a></li><li><a href="#ReleaseNotes5.0-TapestryVersion5.0.6">Tapestry Version 5.0.6</a></li><li><a href="#ReleaseNotes5.0-TapestryVersion5.0.5">Tapestry Version 5.0.5</a></li><li><a href="#ReleaseNotes5.0-TapestryVersion5.0.4">Tapestry Version 5.0.4</a></li><li><a href="#ReleaseNotes5.0-TapestryVersion5.0.3">Tapestry Version 5.0.3</a></li></ul> [... 3 lines stripped ...]