Modified: websites/production/tapestry/content/injection-faq.html
==============================================================================
--- websites/production/tapestry/content/injection-faq.html (original)
+++ websites/production/tapestry/content/injection-faq.html Wed Feb 12 18:18:20 
2025
@@ -155,11 +155,11 @@
             <!-- /// Content Start -->
             <div id="content">
                             <div id="ConfluenceContent"><h1 
id="InjectionFAQ-Injection">Injection</h1><p>Main article:&#160; <a 
href="injection.html">Injection</a></p><h2 
id="InjectionFAQ-Contents">Contents</h2><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1739297714696 {padding: 0px;}
-div.rbtoc1739297714696 ul {margin-left: 0px;}
-div.rbtoc1739297714696 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1739384115912 {padding: 0px;}
+div.rbtoc1739384115912 ul {margin-left: 0px;}
+div.rbtoc1739384115912 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1739297714696">
+/*]]>*/</style></p><div class="toc-macro rbtoc1739384115912">
 <ul class="toc-indentation"><li><a 
href="#InjectionFAQ-What'sthedifferencebetweenthe@Componentand@InjectComponentannotations?">What's
 the difference between the @Component and @InjectComponent 
annotations?</a></li><li><a 
href="#InjectionFAQ-What'sthedifferencebetweenthe@InjectPageand@InjectContainerannotations?">What's
 the difference between the @InjectPage and @InjectContainer 
annotations?</a></li><li><a 
href="#InjectionFAQ-IgetanexceptionbecauseIhavetwoserviceswiththesameinterface,howdoIhandlethis?">I
 get an exception because I have two services with the same interface, how do I 
handle this?</a></li><li><a 
href="#InjectionFAQ-What'sthedifferencebetween@Injectand@Environmental?">What's 
the difference between @Inject and @Environmental?</a></li><li><a 
href="#InjectionFAQ-Butwait...IseeIusedthe@Injectannotationanditstillworked.Whatgives?">But
 wait ... I see I used the @Inject annotation and it still worked. What 
gives?</a></li><li><a href="#InjectionFAQ-Ok,butRequestisasingletonservi
 ce,notanenvironmental,andIcaninjectthat.IsTapestryreallythreadsafe?">Ok, but 
Request is a singleton service, not an environmental, and I can inject that. Is 
Tapestry really thread safe?</a></li><li><a 
href="#InjectionFAQ-Iuse@Injectonafieldtoinjectaservice,butthefieldisstillnull,whathappened?">I
 use @Inject on a field to inject a service, but the field is still null, what 
happened?</a></li></ul>
 </div><h2 
id="InjectionFAQ-What'sthedifferencebetweenthe@Componentand@InjectComponentannotations?">What's
 the difference between the <code>@Component</code> and 
<code>@InjectComponent</code> annotations?</h2><p>The <code>@Component</code> 
annotation is used to define the <em>type</em> of component, and its parameter 
bindings. When using <code>@Component</code>, the template must not define the 
type, and any parameter bindings are merged in:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <pre><code class="language-java">  &lt;a t:id="home" class="nav"&gt;Back to 
home&lt;/a&gt;

Modified: websites/production/tapestry/content/integrating-with-jpa.html
==============================================================================
--- websites/production/tapestry/content/integrating-with-jpa.html (original)
+++ websites/production/tapestry/content/integrating-with-jpa.html Wed Feb 12 
18:18:20 2025
@@ -162,11 +162,11 @@
     <div class="param-body"></div>
 
 </div><p>Tapestry provides a built-in integration with the Java Persistence 
API (JPA) through the <strong>Tapestry-jpa</strong> module. This module 
supersedes the 3rd-party <a class="external-link" 
href="http://www.tynamo.org/tapestry-jpa+guide/"; rel="nofollow">Tynamo JPA 
module</a>.</p><p><strong>Contents</strong></p><p><style 
type="text/css">/*<![CDATA[*/
-div.rbtoc1739297630530 {padding: 0px;}
-div.rbtoc1739297630530 ul {margin-left: 0px;}
-div.rbtoc1739297630530 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1739384031370 {padding: 0px;}
+div.rbtoc1739384031370 ul {margin-left: 0px;}
+div.rbtoc1739384031370 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1739297630530">
+/*]]>*/</style></p><div class="toc-macro rbtoc1739384031370">
 <ul class="toc-indentation"><li><a 
href="#IntegratingwithJPA-Downloading">Downloading</a>
 <ul class="toc-indentation"><li><a 
href="#IntegratingwithJPA-SelectingaJPAImplementation">Selecting a JPA 
Implementation</a></li></ul>
 </li><li><a href="#IntegratingwithJPA-ConfiguringJPA">Configuring JPA</a>

Modified: 
websites/production/tapestry/content/integrating-with-spring-framework.html
==============================================================================
--- websites/production/tapestry/content/integrating-with-spring-framework.html 
(original)
+++ websites/production/tapestry/content/integrating-with-spring-framework.html 
Wed Feb 12 18:18:20 2025
@@ -190,11 +190,11 @@
 
 
 <p>For integrating Spring Security into your application, see <a 
href="security.html">Security</a>.</p><p><strong>Contents</strong></p><p><style 
type="text/css">/*<![CDATA[*/
-div.rbtoc1739297636496 {padding: 0px;}
-div.rbtoc1739297636496 ul {margin-left: 0px;}
-div.rbtoc1739297636496 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1739384037347 {padding: 0px;}
+div.rbtoc1739384037347 ul {margin-left: 0px;}
+div.rbtoc1739384037347 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1739297636496">
+/*]]>*/</style></p><div class="toc-macro rbtoc1739384037347">
 <ul class="toc-indentation"><li>Related Articles</li></ul>
 <ul><li><a href="#IntegratingwithSpringFramework-SpringVersion">Spring 
Version</a></li><li><a href="#IntegratingwithSpringFramework-Usage">Usage</a>
 <ul class="toc-indentation"><li><a 
href="#IntegratingwithSpringFramework-Requireddependency">Required 
dependency</a></li><li><a 
href="#IntegratingwithSpringFramework-Updateyourweb.xmlfile">Update your 
web.xml file</a></li><li><a 
href="#IntegratingwithSpringFramework-AccessingtheSpringApplicationContext">Accessing
 the Spring Application Context</a></li><li><a 
href="#IntegratingwithSpringFramework-Injectingbeans">Injecting 
beans</a></li><li><a 
href="#IntegratingwithSpringFramework-InjectingTapestryservicesinSpringbeans">Injecting
 Tapestry services in Spring beans</a></li></ul>

Modified: 
websites/production/tapestry/content/integration-with-existing-applications.html
==============================================================================
--- 
websites/production/tapestry/content/integration-with-existing-applications.html
 (original)
+++ 
websites/production/tapestry/content/integration-with-existing-applications.html
 Wed Feb 12 18:18:20 2025
@@ -155,11 +155,11 @@
             <!-- /// Content Start -->
             <div id="content">
                             <div id="ConfluenceContent"><h1 
id="Integrationwithexistingapplications-Integrationwithexistingapplications">Integration
 with existing applications</h1><h2 
id="Integrationwithexistingapplications-Contents">Contents</h2><p><style 
type="text/css">/*<![CDATA[*/
-div.rbtoc1739297821707 {padding: 0px;}
-div.rbtoc1739297821707 ul {margin-left: 0px;}
-div.rbtoc1739297821707 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1739384223308 {padding: 0px;}
+div.rbtoc1739384223308 ul {margin-left: 0px;}
+div.rbtoc1739384223308 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1739297821707">
+/*]]>*/</style></p><div class="toc-macro rbtoc1739384223308">
 <ul class="toc-indentation"><li><a 
href="#Integrationwithexistingapplications-HowdoImakeaformonaJSPsubmitintoTapestry?">How
 do I make a form on a JSP submit into Tapestry?</a></li><li><a 
href="#Integrationwithexistingapplications-HowdoIshareinformationbetweenaJSPapplicationandtheTapestryapplication?">How
 do I share information between a JSP application and the Tapestry 
application?</a></li><li><a 
href="#Integrationwithexistingapplications-HowdoIputtheTapestryapplicationinsideafolder,toavoidconflicts?">How
 do I put the Tapestry application inside a folder, to avoid 
conflicts?</a></li></ul>
 </div><p>You may have an existing JSP (or Struts, Spring MVC, etc.) 
application that you want to migrate to Tapestry. It's quite common to do this 
in stages, moving some functionality into Tapestry and leaving other parts, 
initially, in the other system. <a href="request-processing-faq.html">You may 
need to prevent Tapestry from handling certain requests</a>.</p><h2 
id="Integrationwithexistingapplications-HowdoImakeaformonaJSPsubmitintoTapestry?">How
 do I make a form on a JSP submit into Tapestry?</h2><p>Tapestry's Form 
component does a lot of work while an HTML form is rendering to store all the 
information needed to handle the form submission in a later request; this is 
all very specific to Tapestry and the particular construction of your pages and 
forms; it can't be reproduced from a JSP.</p><p>Fortunately, that isn't 
necessary: you can have a standard HTML Form submit to a Tapestry page, you 
just don't get to use all of Tapestry's built in conversion and validation 
logic.</p><p>
 All you need to know is how Tapestry converts page class names to page names 
(that appear in the URL). It's basically a matter of stripping off the 
<em>root-package</em>.<code>pages</code> prefix from the fully qualified class 
name. So, for example, if you are building a login screen as a JSP, you might 
want to have a Tapestry page to receive the user name and password. Let's 
assume the Tapestry page class is 
<code>com.example.myapp.pages.LoginForm</code>; the page name will be 
<code>loginform (although, since&#160;</code><span>Tapestry is case 
insensitive, LoginForm would work just as well)</span><span>, and the URL will 
be </span><code>/loginform</code><span>.</span></p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeHeader panelHeader pdl" 
style="border-bottom-width: 1px;"><b>LoginForm.tml</b></div><div 
class="codeContent panelContent pdl">
 <pre><code class="language-xml">&lt;form method="post" action="/loginform"&gt;

Modified: websites/production/tapestry/content/javascript-faq.html
==============================================================================
--- websites/production/tapestry/content/javascript-faq.html (original)
+++ websites/production/tapestry/content/javascript-faq.html Wed Feb 12 
18:18:20 2025
@@ -155,11 +155,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.rbtoc1739297823556 {padding: 0px;}
-div.rbtoc1739297823556 ul {margin-left: 0px;}
-div.rbtoc1739297823556 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1739384225403 {padding: 0px;}
+div.rbtoc1739384225403 ul {margin-left: 0px;}
+div.rbtoc1739384225403 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1739297823556">
+/*]]>*/</style></p><div class="toc-macro rbtoc1739384225403">
 <ul class="toc-indentation"><li><a 
href="#JavaScriptFAQ-WhydoIgeta&quot;Tapestryisundefined&quot;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&quot;Tapestryisundefined&quot;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/javascript-rewrite-in-54.html
==============================================================================
--- websites/production/tapestry/content/javascript-rewrite-in-54.html 
(original)
+++ websites/production/tapestry/content/javascript-rewrite-in-54.html Wed Feb 
12 18:18:20 2025
@@ -155,11 +155,11 @@
             <!-- /// Content Start -->
             <div id="content">
                             <div id="ConfluenceContent"><div 
class="confluence-information-macro 
confluence-information-macro-information"><span class="aui-icon aui-icon-small 
aui-iconfont-info confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>This is a historical document in 
which Tapestry's Howard Lewis Ship describes the motivations and plan for 
significantly changing Tapestry's client-side functionality starting in 
Tapestry 5.4. This plan closely matches the actual results delivered in 
Tapestry 5.4, but this document is mostly kept for historical 
reference.</p></div></div><h2 
id="JavaScriptRewritein5.4-Contents">Contents</h2><p><style 
type="text/css">/*<![CDATA[*/
-div.rbtoc1739297634453 {padding: 0px;}
-div.rbtoc1739297634453 ul {margin-left: 0px;}
-div.rbtoc1739297634453 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1739384035248 {padding: 0px;}
+div.rbtoc1739384035248 ul {margin-left: 0px;}
+div.rbtoc1739384035248 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1739297634453">
+/*]]>*/</style></p><div class="toc-macro rbtoc1739384035248">
 <ul class="toc-indentation"><li><a 
href="#JavaScriptRewritein5.4-TapestryandJavaScript">Tapestry and 
JavaScript</a></li><li><a 
href="#JavaScriptRewritein5.4-TapestryJavaScriptLimitations(through5.3)">Tapestry
 JavaScript Limitations (through 5.3)</a>
 <ul class="toc-indentation"><li><a 
href="#JavaScriptRewritein5.4-DependenceonPrototype/Scriptaculous">Dependence 
on Prototype/Scriptaculous</a></li><li><a 
href="#JavaScriptRewritein5.4-LackofDocumentation">Lack of 
Documentation</a></li><li><a 
href="#JavaScriptRewritein5.4-LackofModuleStructure">Lack of Module 
Structure</a></li><li><a 
href="#JavaScriptRewritein5.4-ComplexInitialization">Complex 
Initialization</a></li></ul>
 </li><li><a 
href="#JavaScriptRewritein5.4-JavaScriptImprovementsfor5.4">JavaScript 
Improvements for 5.4</a>

Modified: websites/production/tapestry/content/limitations.html
==============================================================================
--- websites/production/tapestry/content/limitations.html (original)
+++ websites/production/tapestry/content/limitations.html Wed Feb 12 18:18:20 
2025
@@ -155,11 +155,11 @@
             <!-- /// Content Start -->
             <div id="content">
                             <div id="ConfluenceContent"><h1 
id="Limitations-Limitations">Limitations</h1><h2 
id="Limitations-Contents">Contents</h2><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1739297678340 {padding: 0px;}
-div.rbtoc1739297678340 ul {margin-left: 0px;}
-div.rbtoc1739297678340 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1739384079428 {padding: 0px;}
+div.rbtoc1739384079428 ul {margin-left: 0px;}
+div.rbtoc1739384079428 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1739297678340">
+/*]]>*/</style></p><div class="toc-macro rbtoc1739384079428">
 <ul class="toc-indentation"><li><a 
href="#Limitations-HowdoIaddnewcomponentstoanexistingpagedynamically?">How do I 
add new components to an existing page dynamically?</a></li><li><a 
href="#Limitations-Whydoesn'tmyserviceimplementationreloadwhenIchangeit?">Why 
doesn't my service implementation reload when I change it?</a></li><li><a 
href="#Limitations-HowdoIrunmultipleTapestryapplicationsinthesamewebapplication?">How
 do I run multiple Tapestry applications in the same web 
application?</a></li></ul>
 </div><h2 
id="Limitations-HowdoIaddnewcomponentstoanexistingpagedynamically?">How do I 
add new components to an existing page dynamically?</h2><p>The short answer 
here is: <strong>you don't</strong>. The long answer here is <strong>you don't 
have to, to get the behavior you desire</strong>.</p><p>One of Tapestry basic 
values is high scalability: this is expressed in a number of ways, reflecting 
scalability concerns within a single server, and within a cluster of 
servers.</p><p>Although you code Tapestry pages and components as if they were 
ordinary POJOs (<span>Plain Old Java Objects -- Tapestry does not require you 
to extend any base classes or implement any special interfaces)</span><span>, 
as deployed by Tapestry they are closer to a traditional servlet: a single 
instance of each page services requests from multiple threads. Behind the 
scenes, Tapestry transforms you code, rewriting it on the 
fly.</span></p><p>What this means is that <em>any</em> incoming request must be 
handled 
 by a <em>single page instance</em>. Therefore, Tapestry enforces the concept 
of <strong>static structure, dynamic behavior</strong>.</p><p>Tapestry provides 
quite a number of ways to vary what content is rendered, well beyond simple 
conditionals and loops. It is possible to "drag in" components from other pages 
when rendering a page (other FAQs will expand on this concept). The point is, 
that although a Tapestry page's structure is very rigid, the order in which the 
components of the page render does not have to be top to bottom.</p><h2 
id="Limitations-Whydoesn'tmyserviceimplementationreloadwhenIchangeit?">Why 
doesn't my service implementation reload when I change it?</h2><p>Main article: 
<a href="service-implementation-reloading.html">Service Implementation 
Reloading</a></p><p>Live service reloading has some limitations:</p><ul><li>The 
service must define a service interface.</li><li>The service implementation 
must be on the file system (not inside a JAR).</li><li>The implementatio
 n must be instantiated by Tapestry, not inside code (even code inside a module 
class).</li><li>The service must use the default <a 
href="limitations.html">scope</a> (reloading of perthread scopes is not 
supported).</li></ul><p>Consider the following example module:</p><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
 <pre><code class="language-java">public static void bind(ServiceBinder binder)

Modified: websites/production/tapestry/content/link-components-faq.html
==============================================================================
--- websites/production/tapestry/content/link-components-faq.html (original)
+++ websites/production/tapestry/content/link-components-faq.html Wed Feb 12 
18:18:20 2025
@@ -155,11 +155,11 @@
             <!-- /// Content Start -->
             <div id="content">
                             <div id="ConfluenceContent"><h1 
id="LinkComponentsFAQ-LinkComponents">Link Components</h1><p>Main Articles: <a 
href="page-navigation.html">Page Navigation</a>, <a 
href="component-parameters.html">Component Parameters</a></p><h2 
id="LinkComponentsFAQ-Contents">Contents</h2><p><style 
type="text/css">/*<![CDATA[*/
-div.rbtoc1739297642839 {padding: 0px;}
-div.rbtoc1739297642839 ul {margin-left: 0px;}
-div.rbtoc1739297642839 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1739384043716 {padding: 0px;}
+div.rbtoc1739384043716 ul {margin-left: 0px;}
+div.rbtoc1739384043716 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1739297642839">
+/*]]>*/</style></p><div class="toc-macro rbtoc1739384043716">
 <ul class="toc-indentation"><li><a 
href="#LinkComponentsFAQ-HowdoIaddqueryparameterstoaPageLinkorActionLink?">How 
do I add query parameters to a PageLink or ActionLink?</a></li><li><a 
href="#LinkComponentsFAQ-HowdoIcreateaLinkbacktothecurrentpagefromacomponent?">How
 do I create a Link back to the current page from a component?</a></li></ul>
 </div><h2 
id="LinkComponentsFAQ-HowdoIaddqueryparameterstoaPageLinkorActionLink?">How do 
I add query parameters to a PageLink or ActionLink?</h2><p>These components do 
not have parameters to allow you to specify query parameters for the link; they 
both allow you to specify a <em>context</em> (one or more values to encode into 
the request path).</p><p>However, you can accomplish the same thing with a 
little code and markup. For example, to create a link to another page and pass 
a query parameter, you can replace your PageLink component with a standard 
<code>&lt;a&gt;</code> tag:</p><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
 <pre><code class="language-xml">&lt;a href="${profilePageLink}"&gt;Display 
Profile (w/ full details)&lt;/a&gt;

Modified: websites/production/tapestry/content/maven-support-faq.html
==============================================================================
--- websites/production/tapestry/content/maven-support-faq.html (original)
+++ websites/production/tapestry/content/maven-support-faq.html Wed Feb 12 
18:18:20 2025
@@ -155,11 +155,11 @@
             <!-- /// Content Start -->
             <div id="content">
                             <div id="ConfluenceContent"><h1 
id="MavenSupportFAQ-MavenSupport">Maven Support</h1><h2 
id="MavenSupportFAQ-Contents">Contents</h2><p><style 
type="text/css">/*<![CDATA[*/
-div.rbtoc1739297791310 {padding: 0px;}
-div.rbtoc1739297791310 ul {margin-left: 0px;}
-div.rbtoc1739297791310 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1739384192756 {padding: 0px;}
+div.rbtoc1739384192756 ul {margin-left: 0px;}
+div.rbtoc1739384192756 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1739297791310">
+/*]]>*/</style></p><div class="toc-macro rbtoc1739384192756">
 <ul class="toc-indentation"><li><a 
href="#MavenSupportFAQ-WhydoMavenprojectnamesandotherdetailsshowupinmypages?">Why
 do Maven project names and other details show up in my pages?</a></li></ul>
 </div><h2 
id="MavenSupportFAQ-WhydoMavenprojectnamesandotherdetailsshowupinmypages?">Why 
do Maven project names and other details show up in my pages?</h2><p>Tapestry 
and maven both use the same syntax for dynamic portions of files: the 
<code>${...</code>} syntax. When Maven is copying resources from 
<code>src/main/resources</code>, and when filtering is <em>enabled</em> (which 
is not the default), then any expansions in <em>Tapestry templates</em> that 
match against Maven project properties are substituted. If you look at the 
deployed application you'll see that <code>${name</code>} is gone, replaced 
with your project's name!</p><p>The solution is to update your 
<code>pom.xml</code> and ignore any .tml files when copying and 
filtering:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>pom.xml 
(partial)</b></div><div class="codeContent panelContent pdl">
 <pre><code class="language-xml">  &lt;resource&gt;

Modified: 
websites/production/tapestry/content/page-and-component-classes-faq.html
==============================================================================
--- websites/production/tapestry/content/page-and-component-classes-faq.html 
(original)
+++ websites/production/tapestry/content/page-and-component-classes-faq.html 
Wed Feb 12 18:18:20 2025
@@ -155,11 +155,11 @@
             <!-- /// Content Start -->
             <div id="content">
                             <div id="ConfluenceContent"><h1 
id="PageAndComponentClassesFAQ-PageAndComponentClasses">Page And Component 
Classes</h1><p>Main article: <a href="component-classes.html">Component 
Classes</a></p><h2 
id="PageAndComponentClassesFAQ-Contents">Contents</h2><p><style 
type="text/css">/*<![CDATA[*/
-div.rbtoc1739297577326 {padding: 0px;}
-div.rbtoc1739297577326 ul {margin-left: 0px;}
-div.rbtoc1739297577326 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1739383976925 {padding: 0px;}
+div.rbtoc1739383976925 ul {margin-left: 0px;}
+div.rbtoc1739383976925 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1739297577326">
+/*]]>*/</style></p><div class="toc-macro rbtoc1739383976925">
 <ul class="toc-indentation"><li><a 
href="#PageAndComponentClassesFAQ-What'sthedifferencebetweenapageandacomponent?">What's
 the difference between a page and a component?</a></li><li><a 
href="#PageAndComponentClassesFAQ-HowdoIstoremypageclassesinadifferentpackage?">How
 do I store my page classes in a different package?</a></li><li><a 
href="#PageAndComponentClassesFAQ-Whydomyinstancevariableshavetobeprivate?">Why 
do my instance variables have to be private?</a></li><li><a 
href="#PageAndComponentClassesFAQ-Whydon'tmyinformalparametersshowupintherenderedmarkup?">Why
 don't my informal parameters show up in the rendered markup?</a></li><li><a 
href="#PageAndComponentClassesFAQ-WhydoIgetjava.lang.LinkageErrorwhenIinvokepublicmethodsofmypageclasses?">Why
 do I get java.lang.LinkageError when I invoke public methods of my page 
classes?</a></li><li><a 
href="#PageAndComponentClassesFAQ-Whichisbetter,usingmagicmethodnames(i.e.,beginRender())orannotations(i.e.BeginRender)?">Which
 is better, using 
 magic method names (i.e., beginRender()) or annotations (i.e. 
BeginRender)?</a></li><li><a 
href="#PageAndComponentClassesFAQ-WhydoIhavetoinjectapage?Whycan'tIjustcreateoneusingnew?">Why
 do I have to inject a page? Why can't I just create one using 
new?</a></li></ul>
 </div><h2 
id="PageAndComponentClassesFAQ-What'sthedifferencebetweenapageandacomponent?">What's
 the difference between a page and a component?</h2><p>There's very little 
difference between the two. Pages classes must be in the 
<em>root-package</em>.<code>pages</code> package; components must be in the 
<em>root-package</em>.<code>components</code>. Pages may provide event handlers 
for certain page-specific events (such as activate and passivate). Components 
may have parameters.</p><p>Other than that, they are more equal than they are 
different. They may have templates or may render themselves in code (pages 
usually have a template, components are more likely to render only in 
code).</p><p>The major difference is that Tapestry page templates may be stored 
in the web context directory, as if they were static files (they can't be 
accessed from the client however; a specific rule prevents access to files with 
the <code>.tml</code> extension).</p><div class="confluence-information-macro co
 nfluence-information-macro-warning"><span class="aui-icon aui-icon-small 
aui-iconfont-error confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>It is possible that this feature 
may be removed in a later release. It is preferred that page templates be 
stored on the classpath, like component templates.</p></div></div><h2 
id="PageAndComponentClassesFAQ-HowdoIstoremypageclassesinadifferentpackage?">How
 do I store my page classes in a different package?</h2><p>Tapestry is very 
rigid here; you can't. Page classes must go in 
<em>root-package</em>.<code>pages</code>, component classes in 
<em>root-package</em>.<code>components</code>, etc.</p><p>You are allowed to 
create sub-packages, to help organize your code better and more logically. For 
example, you might have 
<em>root-package</em>.<code>pages.account.ViewAccount</code>, which would have 
the page name "account/viewaccount". (<span>Tapestry would also create an alias 
"account/view", by stripping of
 f the redundant "account" suffix. Either name is equally valid in your code, 
and Tapestry will use the shorter name, "account/view" in 
URLs.)</span></p><p>In addition, it is possible to define additional root 
packages for the application:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <pre><code class="language-java">public static void 
contributeComponentClassResolver(Configuration&lt;LibraryMapping&gt; 
configuration) {
@@ -194,13 +194,13 @@ public class DBImage
 
 
 
-<span class="gliffy-container" id="gliffy-container-23527573-5988" 
data-fullwidth="750" data-size="L" data-ceoid="23335008" 
data-edit="${diagramEditLink.getLinkUrl()}" 
data-full="${diagramZoomLink.getLinkUrl()}" data-filename="Class Loaders">
+<span class="gliffy-container" id="gliffy-container-23527573-566" 
data-fullwidth="750" data-size="L" data-ceoid="23335008" 
data-edit="${diagramEditLink.getLinkUrl()}" 
data-full="${diagramZoomLink.getLinkUrl()}" data-filename="Class Loaders">
 
-    <map id="gliffy-map-23527573-2485" name="gliffy-map-23527573-2485"></map>
+    <map id="gliffy-map-23527573-4182" name="gliffy-map-23527573-4182"></map>
 
-    <img class="gliffy-image" id="gliffy-image-23527573-5988" width="750" 
height="425" data-full-width="750" data-full-height="425" 
src="https://cwiki.apache.org/confluence/download/attachments/23335008/Class%20Loaders.png?version=4&amp;modificationDate=1283534469000&amp;api=v2";
 alt="Class Loaders" usemap="#gliffy-map-23527573-2485">
+    <img class="gliffy-image" id="gliffy-image-23527573-566" width="750" 
height="425" data-full-width="750" data-full-height="425" 
src="https://cwiki.apache.org/confluence/download/attachments/23335008/Class%20Loaders.png?version=4&amp;modificationDate=1283534469000&amp;api=v2";
 alt="Class Loaders" usemap="#gliffy-map-23527573-4182">
 
-    <map class="gliffy-dynamic" id="gliffy-dynamic-map-23527573-5988" 
name="gliffy-dynamic-map-23527573-5988"></map>
+    <map class="gliffy-dynamic" id="gliffy-dynamic-map-23527573-566" 
name="gliffy-dynamic-map-23527573-566"></map>
 </span>
 
 </p><p>In a Tapestry application, most application classes are loaded from the 
middle class loader. Additional class loaders are used to support live service 
reloading, and live component reloading (along with component class 
transformation).</p><p>When a page or component is passed as a parameter to a 
service, a failure occurs (how it is reported varies in different JDK releases) 
because of the class mismatch.</p><p>The solution is to define an interface 
with the methods that the service will invoke on the page or component 
instance. The service will expect an object implementing the interface (and 
doesn't care what class loader loaded the implementing class).</p><p>Just be 
sure to put the interface class in a non-controlled package, such as your 
application's <em>root-package</em> (and <strong>not</strong> 
<em>root-package</em>.<code>pages</code>).</p><h2 
id="PageAndComponentClassesFAQ-Whichisbetter,usingmagicmethodnames(i.e.,beginRender())orannotations(i.e.BeginRender)?">Which
 is
  better, using magic method names (i.e., <code>beginRender()</code>) or 
annotations (i.e. <code>BeginRender</code>)?</h2><p>There is no single best 
way; this is where your taste may vary. Historically, the annotations came 
first, and the method naming conventions came later.</p><p>The advantage of 
using the method naming conventions is that the method names are more concise, 
which fewer characters to type, and fewer classes to import.</p><p>The main 
disadvantage of the method naming conventions is that the method names are not 
meaningful. <code>onSuccessFromLoginForm()</code> is a less meaningful name 
than <code>storeUserCredentialsAndReturnToProductsPage()</code>, for 
example.</p><p>The second disadvantage is you are more susceptible to 
off-by-a-character errors. For example, <code>onSucessFromLoginForm()</code> 
will <em>never</em> be called because the event name is misspelled; this would 
not happen using the annotation approach:</p><div class="code panel pdl" 
style="border-width:
  1px;"><div class="codeContent panelContent pdl">

Modified: websites/production/tapestry/content/page-navigation.html
==============================================================================
--- websites/production/tapestry/content/page-navigation.html (original)
+++ websites/production/tapestry/content/page-navigation.html Wed Feb 12 
18:18:20 2025
@@ -244,11 +244,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:&#160;</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.rbtoc1739297859483 {padding: 0px;}
-div.rbtoc1739297859483 ul {margin-left: 0px;}
-div.rbtoc1739297859483 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1739384261487 {padding: 0px;}
+div.rbtoc1739384261487 ul {margin-left: 0px;}
+div.rbtoc1739384261487 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></h2><div class="toc-macro rbtoc1739297859483">
+/*]]>*/</style></h2><div class="toc-macro rbtoc1739384261487">
 <ul class="toc-indentation"><li><a 
href="#PageNavigation-Contents|RelatedArticlesLogicalPageNameShortening">Logical
 Page Name Shortening</a></li><li><a 
href="#PageNavigation-ComponentEventRequests&amp;Responses">Component Event 
Requests &amp; 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 Wed Feb 12 
18:18:20 2025
@@ -155,11 +155,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&#160;<a href="how-to-upgrade.html">How to 
Upgrade</a> instructions.</p><p><strong>Contents</strong></p><p><style 
type="text/css">/*<![CDATA[*/
-div.rbtoc1739297615190 {padding: 0px;}
-div.rbtoc1739297615190 ul {margin-left: 0px;padding-left: 5px;}
-div.rbtoc1739297615190 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1739384016058 {padding: 0px;}
+div.rbtoc1739384016058 ul {margin-left: 0px;padding-left: 5px;}
+div.rbtoc1739384016058 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1739297615190">
+/*]]>*/</style></p><div class="toc-macro rbtoc1739384016058">
 <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 ...]


Reply via email to