Modified: websites/production/tapestry/content/hibernate-support-faq.html
==============================================================================
--- websites/production/tapestry/content/hibernate-support-faq.html (original)
+++ websites/production/tapestry/content/hibernate-support-faq.html Mon Aug 26 
21:20:28 2019
@@ -77,21 +77,77 @@
       </div>
 
       <div id="content">
-                <div id="ConfluenceContent"><h1 
id="HibernateSupportFAQ-HibernateSupport">Hibernate Support</h1><p>Main 
article: <a  href="hibernate.html">Hibernate</a></p><h2 
id="HibernateSupportFAQ-Contents">Contents</h2><p><style 
type="text/css">/*<![CDATA[*/
-div.rbtoc1566728401911 {padding: 0px;}
-div.rbtoc1566728401911 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1566728401911 li {margin-left: 0px;padding-left: 0px;}
+                <div id="ConfluenceContent"><p>    
+</p><div class="atb-scrollbar-macro">
+    <div class="prev">
+        <a  href="specific-errors-faq.html" rel="prev">
+                                    <span class="aui-icon aui-icon-small 
atb-icon-arrow-left">Previous</span>
+                                <span class="title">Specific Errors FAQ</span>
+            </a>
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1566728401911">
+    </div>
+    <div class="parent">
+                    <a  href="frequently-asked-questions.html" rel="parent">
+                                            <span class="aui-icon 
aui-icon-small atb-icon-arrow-up">Up</span>
+                                        <span class="title">Frequently Asked 
Questions</span>
+                </a>
+
+            </div>
+    <div class="next">
+        <a  href="maven-support-faq.html" rel="next">
+                <span class="title">Maven Support FAQ</span>
+                                    <span class="aui-icon aui-icon-small 
atb-icon-arrow-right">Next</span>
+                            </a>
+
+    </div>
+</div><h1 id="HibernateSupportFAQ-HibernateSupport">Hibernate 
Support</h1><p>Main article: <a  href="hibernate.html">Hibernate</a></p><h2 
id="HibernateSupportFAQ-Contents">Contents</h2><p><style 
type="text/css">/*<![CDATA[*/
+div.rbtoc1566854387878 {padding: 0px;}
+div.rbtoc1566854387878 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1566854387878 li {margin-left: 0px;padding-left: 0px;}
+
+/*]]>*/</style></p><div class="toc-macro rbtoc1566854387878">
 <ul class="toc-indentation"><li><a  
href="#HibernateSupportFAQ-HowdoIgetHibernatetostartupupwhentheapplicationstartsup,ratherthanlazilywiththefirstrequestfortheapplication?">How
 do I get Hibernate to startup up when the application starts up, rather than 
lazily with the first request for the application?</a></li></ul>
-</div><h2 
id="HibernateSupportFAQ-HowdoIgetHibernatetostartupupwhentheapplicationstartsup,ratherthanlazilywiththefirstrequestfortheapplication?">How
 do I get Hibernate to startup up when the application starts up, rather than 
lazily with the first request for the application?</h2><p>This was a minor 
problem in 5.0; by 5.1 it is just a matter of overriding the configuration 
system <code>tapestry.hibernate-early-startup</code> to "true".</p></div>
+</div><h2 
id="HibernateSupportFAQ-HowdoIgetHibernatetostartupupwhentheapplicationstartsup,ratherthanlazilywiththefirstrequestfortheapplication?">How
 do I get Hibernate to startup up when the application starts up, rather than 
lazily with the first request for the application?</h2><p>This was a minor 
problem in 5.0; by 5.1 it is just a matter of overriding the configuration 
system <code>tapestry.hibernate-early-startup</code> to "true".    
+</p><div class="atb-scrollbar-macro">
+    <div class="prev">
+        <a  href="specific-errors-faq.html" rel="prev">
+                                    <span class="aui-icon aui-icon-small 
atb-icon-arrow-left">Previous</span>
+                                <span class="title">Specific Errors FAQ</span>
+            </a>
+
+    </div>
+    <div class="parent">
+                    <a  href="frequently-asked-questions.html" rel="parent">
+                                            <span class="aui-icon 
aui-icon-small atb-icon-arrow-up">Up</span>
+                                        <span class="title">Frequently Asked 
Questions</span>
+                </a>
+
+            </div>
+    <div class="next">
+        <a  href="maven-support-faq.html" rel="next">
+                <span class="title">Maven Support FAQ</span>
+                                    <span class="aui-icon aui-icon-small 
atb-icon-arrow-right">Next</span>
+                            </a>
+
+    </div>
+</div></div>
       </div>
 
       <div class="clearer"></div>
     
     <div id="footer">
             <div id="footer"><p>Apache Tapestry, Tapestry, Apache, the Apache 
feather logo, and the Apache Tapestry project logo are trademarks of The Apache 
Software Foundation.<br clear="none">
-</p><p></p><div class="aui-message aui-message-error"><p 
class="title"><strong>Error rendering macro 'html'</strong></p><p>Your 
Confluence administrator has disallowed the use of Javascript in the HTML 
macro.  This setting can be changed using  HTML for Confluence Configuration.  
Please see your administrator for details.</p></div><p></p></div>
+</p><p><script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-400821-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; 
ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 
'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(ga, s);
+  })();
+</script></p><p></p></div>
     </div>
 
     <div id="comments_thread"></div>

Modified: websites/production/tapestry/content/injection-faq.html
==============================================================================
--- websites/production/tapestry/content/injection-faq.html (original)
+++ websites/production/tapestry/content/injection-faq.html Mon Aug 26 21:20:28 
2019
@@ -77,12 +77,35 @@
       </div>
 
       <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.rbtoc1566728397349 {padding: 0px;}
-div.rbtoc1566728397349 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1566728397349 li {margin-left: 0px;padding-left: 0px;}
+                <div id="ConfluenceContent"><p>    
+</p><div class="atb-scrollbar-macro">
+    <div class="prev">
+        <a  href="ajax-components-faq.html" rel="prev">
+                                    <span class="aui-icon aui-icon-small 
atb-icon-arrow-left">Previous</span>
+                                <span class="title">Ajax Components FAQ</span>
+            </a>
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1566728397349">
+    </div>
+    <div class="parent">
+                    <a  href="frequently-asked-questions.html" rel="parent">
+                                            <span class="aui-icon 
aui-icon-small atb-icon-arrow-up">Up</span>
+                                        <span class="title">Frequently Asked 
Questions</span>
+                </a>
+
+            </div>
+    <div class="next">
+        <a  href="tapestry-inversion-of-control-faq.html" rel="next">
+                <span class="title">Tapestry Inversion of Control FAQ</span>
+                                    <span class="aui-icon aui-icon-small 
atb-icon-arrow-right">Next</span>
+                            </a>
+
+    </div>
+</div><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.rbtoc1566854382052 {padding: 0px;}
+div.rbtoc1566854382052 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1566854382052 li {margin-left: 0px;padding-left: 0px;}
+
+/*]]>*/</style></p><div class="toc-macro rbtoc1566854382052">
 <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,butRequestisasingleto
 nservice,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 class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; 
gutter: true; theme: Default" data-theme="Default">  &lt;a t:id="home" 
class="nav"&gt;Back to home&lt;/a&gt;
@@ -149,14 +172,47 @@ div.rbtoc1566728397349 li {margin-left:
         return shadowBuilder.build(requestGlobals, "request", Request.class);
     }
 </pre>
-</div></div><p><a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/RequestGlobals.html";>RequestGlobals</a>
 is a per-thread service. The Request service is a global singleton created by 
the <a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/services/PropertyShadowBuilder.html";>PropertyShadowBuilder</a>
 service, but is just a proxy. It has no internal state; invoking a method on 
the Request service just turns around and extracts the Request object from the 
per-thread RequestGlobals and invokes the same method there.</p><h2 
id="InjectionFAQ-Iuse@Injectonafieldtoinjectaservice,butthefieldisstillnull,whathappened?">I
 use <code>@Inject</code> on a field to inject a service, but the field is 
still null, what happened?</h2><p>This can happen when you use the wrong 
<code>@Inject</code> annotation; for example, com.google.inject.Inject instead 
of org.apache.tapestry5.ioc.annotations.Inject. T
 his can occur when you have TestNG on the classpath, for example, and your IDE 
is too helpful. Double check your imports when things seem weird.</p><p>Also 
remember that <code>@Inject</code> on fields works for components and for 
service implementations or other objects that Tapestry instantiates, but not on 
arbitrary objects (that are created via Java's new keyword).</p></div>
+</div></div><p><a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/RequestGlobals.html";>RequestGlobals</a>
 is a per-thread service. The Request service is a global singleton created by 
the <a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/services/PropertyShadowBuilder.html";>PropertyShadowBuilder</a>
 service, but is just a proxy. It has no internal state; invoking a method on 
the Request service just turns around and extracts the Request object from the 
per-thread RequestGlobals and invokes the same method there.</p><h2 
id="InjectionFAQ-Iuse@Injectonafieldtoinjectaservice,butthefieldisstillnull,whathappened?">I
 use <code>@Inject</code> on a field to inject a service, but the field is 
still null, what happened?</h2><p>This can happen when you use the wrong 
<code>@Inject</code> annotation; for example, com.google.inject.Inject instead 
of org.apache.tapestry5.ioc.annotations.Inject. T
 his can occur when you have TestNG on the classpath, for example, and your IDE 
is too helpful. Double check your imports when things seem weird.</p><p>Also 
remember that <code>@Inject</code> on fields works for components and for 
service implementations or other objects that Tapestry instantiates, but not on 
arbitrary objects (that are created via Java's new keyword).    
+</p><div class="atb-scrollbar-macro">
+    <div class="prev">
+        <a  href="ajax-components-faq.html" rel="prev">
+                                    <span class="aui-icon aui-icon-small 
atb-icon-arrow-left">Previous</span>
+                                <span class="title">Ajax Components FAQ</span>
+            </a>
+
+    </div>
+    <div class="parent">
+                    <a  href="frequently-asked-questions.html" rel="parent">
+                                            <span class="aui-icon 
aui-icon-small atb-icon-arrow-up">Up</span>
+                                        <span class="title">Frequently Asked 
Questions</span>
+                </a>
+
+            </div>
+    <div class="next">
+        <a  href="tapestry-inversion-of-control-faq.html" rel="next">
+                <span class="title">Tapestry Inversion of Control FAQ</span>
+                                    <span class="aui-icon aui-icon-small 
atb-icon-arrow-right">Next</span>
+                            </a>
+
+    </div>
+</div></div>
       </div>
 
       <div class="clearer"></div>
     
     <div id="footer">
             <div id="footer"><p>Apache Tapestry, Tapestry, Apache, the Apache 
feather logo, and the Apache Tapestry project logo are trademarks of The Apache 
Software Foundation.<br clear="none">
-</p><p></p><div class="aui-message aui-message-error"><p 
class="title"><strong>Error rendering macro 'html'</strong></p><p>Your 
Confluence administrator has disallowed the use of Javascript in the HTML 
macro.  This setting can be changed using  HTML for Confluence Configuration.  
Please see your administrator for details.</p></div><p></p></div>
+</p><p><script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-400821-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; 
ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 
'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(ga, s);
+  })();
+</script></p><p></p></div>
     </div>
 
     <div id="comments_thread"></div>

Modified: websites/production/tapestry/content/injection.html
==============================================================================
--- websites/production/tapestry/content/injection.html (original)
+++ websites/production/tapestry/content/injection.html Mon Aug 26 21:20:28 2019
@@ -104,7 +104,7 @@
                 <span class="icon aui-icon content-type-page" 
title="Page">Page:</span>        </div>
 
         <div class="details">
-                        <a  href="injection-faq.html">Injection FAQ</a>
+                        <a  href="injection.html">Injection</a>
                 
                         
                     </div>
@@ -113,7 +113,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="injection-faq.html">Injection FAQ</a>
                 
                         
                     </div>
@@ -163,7 +163,17 @@ private Request request;
     
     <div id="footer">
             <div id="footer"><p>Apache Tapestry, Tapestry, Apache, the Apache 
feather logo, and the Apache Tapestry project logo are trademarks of The Apache 
Software Foundation.<br clear="none">
-</p><p></p><div class="aui-message aui-message-error"><p 
class="title"><strong>Error rendering macro 'html'</strong></p><p>Your 
Confluence administrator has disallowed the use of Javascript in the HTML 
macro.  This setting can be changed using  HTML for Confluence Configuration.  
Please see your administrator for details.</p></div><p></p></div>
+</p><p><script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-400821-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; 
ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 
'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(ga, s);
+  })();
+</script></p><p></p></div>
     </div>
 
     <div id="comments_thread"></div>

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
 Mon Aug 26 21:20:28 2019
@@ -77,12 +77,35 @@
       </div>
 
       <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.rbtoc1566728391103 {padding: 0px;}
-div.rbtoc1566728391103 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1566728391103 li {margin-left: 0px;padding-left: 0px;}
+                <div id="ConfluenceContent"><p>    
+</p><div class="atb-scrollbar-macro">
+    <div class="prev">
+        <a  href="security-faq.html" rel="prev">
+                                    <span class="aui-icon aui-icon-small 
atb-icon-arrow-left">Previous</span>
+                                <span class="title">Security FAQ</span>
+            </a>
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1566728391103">
+    </div>
+    <div class="parent">
+                    <a  href="frequently-asked-questions.html" rel="parent">
+                                            <span class="aui-icon 
aui-icon-small atb-icon-arrow-up">Up</span>
+                                        <span class="title">Frequently Asked 
Questions</span>
+                </a>
+
+            </div>
+    <div class="next">
+        <a  href="request-processing-faq.html" rel="next">
+                <span class="title">Request Processing FAQ</span>
+                                    <span class="aui-icon aui-icon-small 
atb-icon-arrow-right">Next</span>
+                            </a>
+
+    </div>
+</div><h1 
id="Integrationwithexistingapplications-Integrationwithexistingapplications">Integration
 with existing applications</h1><h2 
id="Integrationwithexistingapplications-Contents">Contents</h2><p><style 
type="text/css">/*<![CDATA[*/
+div.rbtoc1566854380689 {padding: 0px;}
+div.rbtoc1566854380689 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1566854380689 li {margin-left: 0px;padding-left: 0px;}
+
+/*]]>*/</style></p><div class="toc-macro rbtoc1566854380689">
 <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><p>&#160;</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 class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: xml; 
gutter: false; theme: Default" data-theme="Default">&lt;form method="post" 
action="/loginform"&gt;
@@ -111,14 +134,47 @@ div.rbtoc1566728391103 li {margin-left:
   private SearchResults searchResults;
 }
 </pre>
-</div></div><p>Reading the instance variable <code>searchResults</code> is 
instrumented to instead read the corresponding HttpSession attribute named 
"searchResults". You can also specify the <code>value</code> attribute of the 
SessionAttribute annotation to override the default attribute 
name.</p><p>Writing to the field causes the corresponding HttpSession attribute 
to be modified.</p><p>The session is automatically created as needed.</p><h2 
id="Integrationwithexistingapplications-HowdoIputtheTapestryapplicationinsideafolder,toavoidconflicts?">How
 do I put the Tapestry application inside a folder, to avoid 
conflicts?</h2><p>Support for this was added in 5.3; see the notes on the <a  
href="configuration.html">configuration 
page</a>.&#160;</p><p>&#160;</p><p>&#160;</p></div>
+</div></div><p>Reading the instance variable <code>searchResults</code> is 
instrumented to instead read the corresponding HttpSession attribute named 
"searchResults". You can also specify the <code>value</code> attribute of the 
SessionAttribute annotation to override the default attribute 
name.</p><p>Writing to the field causes the corresponding HttpSession attribute 
to be modified.</p><p>The session is automatically created as needed.</p><h2 
id="Integrationwithexistingapplications-HowdoIputtheTapestryapplicationinsideafolder,toavoidconflicts?">How
 do I put the Tapestry application inside a folder, to avoid 
conflicts?</h2><p>Support for this was added in 5.3; see the notes on the <a  
href="configuration.html">configuration page</a>.    
+</p><div class="atb-scrollbar-macro">
+    <div class="prev">
+        <a  href="security-faq.html" rel="prev">
+                                    <span class="aui-icon aui-icon-small 
atb-icon-arrow-left">Previous</span>
+                                <span class="title">Security FAQ</span>
+            </a>
+
+    </div>
+    <div class="parent">
+                    <a  href="frequently-asked-questions.html" rel="parent">
+                                            <span class="aui-icon 
aui-icon-small atb-icon-arrow-up">Up</span>
+                                        <span class="title">Frequently Asked 
Questions</span>
+                </a>
+
+            </div>
+    <div class="next">
+        <a  href="request-processing-faq.html" rel="next">
+                <span class="title">Request Processing FAQ</span>
+                                    <span class="aui-icon aui-icon-small 
atb-icon-arrow-right">Next</span>
+                            </a>
+
+    </div>
+</div>&#160;<p>&#160;</p><p>&#160;</p></div>
       </div>
 
       <div class="clearer"></div>
     
     <div id="footer">
             <div id="footer"><p>Apache Tapestry, Tapestry, Apache, the Apache 
feather logo, and the Apache Tapestry project logo are trademarks of The Apache 
Software Foundation.<br clear="none">
-</p><p></p><div class="aui-message aui-message-error"><p 
class="title"><strong>Error rendering macro 'html'</strong></p><p>Your 
Confluence administrator has disallowed the use of Javascript in the HTML 
macro.  This setting can be changed using  HTML for Confluence Configuration.  
Please see your administrator for details.</p></div><p></p></div>
+</p><p><script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-400821-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; 
ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 
'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(ga, s);
+  })();
+</script></p><p></p></div>
     </div>
 
     <div id="comments_thread"></div>

Modified: 
websites/production/tapestry/content/ioc-cookbook-basic-services-and-injection.html
==============================================================================
--- 
websites/production/tapestry/content/ioc-cookbook-basic-services-and-injection.html
 (original)
+++ 
websites/production/tapestry/content/ioc-cookbook-basic-services-and-injection.html
 Mon Aug 26 21:20:28 2019
@@ -77,7 +77,26 @@
       </div>
 
       <div id="content">
-                <div id="ConfluenceContent"><p>The starting point for Tapestry 
IOC services and injection is knowing a few conventions: what to name your 
classes, what packages to put them in and so forth.</p><p>In many cases, these 
conventions are just a little stronger: you may have to do some amount of extra 
configuration if you choose to go your own way.</p><h1 
id="IoCCookbook-BasicServicesandInjection-GettingStarted">Getting 
Started</h1><p>As always, you'll first need to choose a package for your 
application, such as org.example.myapp.</p><p>By convention, services go in a 
sub-package named "services". Tapestry IOC Module class names have a "Module" 
suffix. Thus, you might start with a module class 
org.example.myapp.services.MyAppModule.</p><h1 
id="IoCCookbook-BasicServicesandInjection-SimpleServices">Simple 
Services</h1><p>The simplest services don't have any special configuration or 
dependencies. They are defined as services so that they can be 
shared.</p><p>For example, the 
 <a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/services/PropertyAccess.html";>PropertyAccess</a>
 service is used in multiple places around the framework to access properties 
of objects (its a wrapper around the Java Beans Introspector and a bit of 
reflection). This is defined in the <a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/services/TapestryIOCModule.html";>TapestryIOCModule</a>.</p><p>It's
 useful to share PropertyAccess, because it does a lot of useful caching 
internally.</p><p>The PropertyAccess service is defined inside 
TapestryIOCModule's bind() method:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+                <div id="ConfluenceContent"><p>    
+</p><div class="atb-scrollbar-macro">
+    <div class="prev">
+        
+    </div>
+    <div class="parent">
+                    <a  href="ioc-cookbook.html" rel="parent">
+                                            <span class="aui-icon 
aui-icon-small atb-icon-arrow-up">Up</span>
+                                        <span class="title">IoC cookbook</span>
+                </a>
+
+            </div>
+    <div class="next">
+        <a  href="ioc-cookbook-overriding-ioc-services.html" rel="next">
+                <span class="title">IoC Cookbook - Overriding IoC 
Services</span>
+                                    <span class="aui-icon aui-icon-small 
atb-icon-arrow-right">Next</span>
+                            </a>
+
+    </div>
+</div>The starting point for Tapestry IOC services and injection is knowing a 
few conventions: what to name your classes, what packages to put them in and so 
forth.<p>In many cases, these conventions are just a little stronger: you may 
have to do some amount of extra configuration if you choose to go your own 
way.</p><h1 id="IoCCookbook-BasicServicesandInjection-GettingStarted">Getting 
Started</h1><p>As always, you'll first need to choose a package for your 
application, such as org.example.myapp.</p><p>By convention, services go in a 
sub-package named "services". Tapestry IOC Module class names have a "Module" 
suffix. Thus, you might start with a module class 
org.example.myapp.services.MyAppModule.</p><h1 
id="IoCCookbook-BasicServicesandInjection-SimpleServices">Simple 
Services</h1><p>The simplest services don't have any special configuration or 
dependencies. They are defined as services so that they can be 
shared.</p><p>For example, the <a  class="external-link" href="http://tapest
 
ry.apache.org/current/apidocs/org/apache/tapestry5/ioc/services/PropertyAccess.html">PropertyAccess</a>
 service is used in multiple places around the framework to access properties 
of objects (its a wrapper around the Java Beans Introspector and a bit of 
reflection). This is defined in the <a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/services/TapestryIOCModule.html";>TapestryIOCModule</a>.</p><p>It's
 useful to share PropertyAccess, because it does a lot of useful caching 
internally.</p><p>The PropertyAccess service is defined inside 
TapestryIOCModule's bind() method:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; 
gutter: false; theme: Default" data-theme="Default">  public static void 
bind(ServiceBinder binder)
   {
     . . .
@@ -125,14 +144,43 @@
     configuration.add("context", contextAssetFactory);
     configuration.add("classpath", classpathAssetFactory);
   }</pre>
-</div></div><p>This is far from the final word on injection and 
disambiguation; we'll be coming back to this concept repeatedly. And in later 
chapters of the cookbook, we'll also go into more detail about the many other 
concepts present in this example. The important part is that Tapestry 
<em>primarily</em> works off the parameter type (at the point of injection), 
but when that is insufficient (you'll know ... there will be an error) you can 
provide additional information, in the form of annotations, to straighten 
things out.</p></div>
+</div></div><p>This is far from the final word on injection and 
disambiguation; we'll be coming back to this concept repeatedly. And in later 
chapters of the cookbook, we'll also go into more detail about the many other 
concepts present in this example. The important part is that Tapestry 
<em>primarily</em> works off the parameter type (at the point of injection), 
but when that is insufficient (you'll know ... there will be an error) you can 
provide additional information, in the form of annotations, to straighten 
things out.    
+</p><div class="atb-scrollbar-macro">
+    <div class="prev">
+        
+    </div>
+    <div class="parent">
+                    <a  href="ioc-cookbook.html" rel="parent">
+                                            <span class="aui-icon 
aui-icon-small atb-icon-arrow-up">Up</span>
+                                        <span class="title">IoC cookbook</span>
+                </a>
+
+            </div>
+    <div class="next">
+        <a  href="ioc-cookbook-overriding-ioc-services.html" rel="next">
+                <span class="title">IoC Cookbook - Overriding IoC 
Services</span>
+                                    <span class="aui-icon aui-icon-small 
atb-icon-arrow-right">Next</span>
+                            </a>
+
+    </div>
+</div></div>
       </div>
 
       <div class="clearer"></div>
     
     <div id="footer">
             <div id="footer"><p>Apache Tapestry, Tapestry, Apache, the Apache 
feather logo, and the Apache Tapestry project logo are trademarks of The Apache 
Software Foundation.<br clear="none">
-</p><p></p><div class="aui-message aui-message-error"><p 
class="title"><strong>Error rendering macro 'html'</strong></p><p>Your 
Confluence administrator has disallowed the use of Javascript in the HTML 
macro.  This setting can be changed using  HTML for Confluence Configuration.  
Please see your administrator for details.</p></div><p></p></div>
+</p><p><script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-400821-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; 
ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 
'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(ga, s);
+  })();
+</script></p><p></p></div>
     </div>
 
     <div id="comments_thread"></div>

Modified: 
websites/production/tapestry/content/ioc-cookbook-overriding-ioc-services.html
==============================================================================
--- 
websites/production/tapestry/content/ioc-cookbook-overriding-ioc-services.html 
(original)
+++ 
websites/production/tapestry/content/ioc-cookbook-overriding-ioc-services.html 
Mon Aug 26 21:20:28 2019
@@ -77,7 +77,30 @@
       </div>
 
       <div id="content">
-                <div id="ConfluenceContent"><h1 
id="IoCCookbook-OverridingIoCServices-OverridingTapestryIoCServices">Overriding 
Tapestry IoC Services</h1><p>Tapestry is designed to be easy to customize, and 
the IoC container is the key to that customizability.</p><p>One of Tapestry's 
most important activities is resolving injected objects; that is, when Tapestry 
is building an object or service and sees a constructor parameter or a field, 
it must decide what value to plug in. Most of the time, the injected object is 
a service defined elsewhere within the Tapestry IoC container.</p><p>However, 
there are cases where you might want to override how Tapestry operates in some 
specific way.</p><p>The strategy used to determine what object gets injected is 
<a  href="injection-in-detail.html">defined inside Tapestry IoC itself</a>; 
thus we can take advantage of several features of the Tapestry IoC container in 
order to take control over specific injections.</p><h2 
id="IoCCookbook-OverridingI
 oCServices-ContributingaServiceOverride">Contributing a Service 
Override</h2><p>In most cases, services are injected by matching just the type; 
there is no @<a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/annotations/InjectService.html";>InjectService</a>
 annotation, just a method or constructor parameter whose type matches the 
service's interface.</p><p>In this case, it is very easy to supply your own 
alternate implementation of a service, by <em>contributing</em><em> a Service 
Override</em> in your module class (usually AppModule.java), like this:</p><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeHeader 
panelHeader pdl" style="border-bottom-width: 1px;"><b>AppModule.java 
(partial)</b></div><div class="codeContent panelContent pdl">
+                <div id="ConfluenceContent"><p>    
+</p><div class="atb-scrollbar-macro">
+    <div class="prev">
+        <a  href="ioc-cookbook-basic-services-and-injection.html" rel="prev">
+                                    <span class="aui-icon aui-icon-small 
atb-icon-arrow-left">Previous</span>
+                                <span class="title">IoC Cookbook - Basic 
Services and Injection</span>
+            </a>
+
+    </div>
+    <div class="parent">
+                    <a  href="ioc-cookbook.html" rel="parent">
+                                            <span class="aui-icon 
aui-icon-small atb-icon-arrow-up">Up</span>
+                                        <span class="title">IoC cookbook</span>
+                </a>
+
+            </div>
+    <div class="next">
+        <a  href="ioc-cookbook-patterns.html" rel="next">
+                <span class="title">IoC Cookbook - Patterns</span>
+                                    <span class="aui-icon aui-icon-small 
atb-icon-arrow-right">Next</span>
+                            </a>
+
+    </div>
+</div><h1 
id="IoCCookbook-OverridingIoCServices-OverridingTapestryIoCServices">Overriding 
Tapestry IoC Services</h1><p>Tapestry is designed to be easy to customize, and 
the IoC container is the key to that customizability.</p><p>One of Tapestry's 
most important activities is resolving injected objects; that is, when Tapestry 
is building an object or service and sees a constructor parameter or a field, 
it must decide what value to plug in. Most of the time, the injected object is 
a service defined elsewhere within the Tapestry IoC container.</p><p>However, 
there are cases where you might want to override how Tapestry operates in some 
specific way.</p><p>The strategy used to determine what object gets injected is 
<a  href="injection-in-detail.html">defined inside Tapestry IoC itself</a>; 
thus we can take advantage of several features of the Tapestry IoC container in 
order to take control over specific injections.</p><h2 
id="IoCCookbook-OverridingIoCServices-ContributingaServiceOverrid
 e">Contributing a Service Override</h2><p>In most cases, services are injected 
by matching just the type; there is no @<a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/annotations/InjectService.html";>InjectService</a>
 annotation, just a method or constructor parameter whose type matches the 
service's interface.</p><p>In this case, it is very easy to supply your own 
alternate implementation of a service, by <em>contributing</em><em> a Service 
Override</em> in your module class (usually AppModule.java), like this:</p><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeHeader 
panelHeader pdl" style="border-bottom-width: 1px;"><b>AppModule.java 
(partial)</b></div><div class="codeContent panelContent pdl">
 <pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; 
gutter: false; theme: Default" data-theme="Default">  
@Contribute(ServiceOverride.class)
   public static void 
setupApplicationServiceOverrides(MappedConfiguration&lt;Class,Object&gt; 
configuration)
   {
@@ -102,14 +125,47 @@
     return new SomeServiceType() { . . . };
   }
 </pre>
-</div></div><p>This decorate method is invoked because its name matches the 
service id of the original service, "SomeServiceType" (you have to adjust the 
name to match the service id).</p><p>The method is passed the original service 
and its job it to return an <em>interceptor</em>, an object that implements the 
same interface, wrapping around the original service. In many cases, your code 
will simply re-invoke methods on the delegate, passing the same parameters. 
However, an interceptor can decide to not invoke methods, or it can change 
parameters, or change return values, or catch or throw exceptions.</p><p>Note 
that the object passed in as <code>delegate</code> may be the core service 
implementation, or it may be some other interceptor from some other decorator 
for the same service.</p><hr><p>&#160;</p><p>&#160;</p></div>
+</div></div><p>This decorate method is invoked because its name matches the 
service id of the original service, "SomeServiceType" (you have to adjust the 
name to match the service id).</p><p>The method is passed the original service 
and its job it to return an <em>interceptor</em>, an object that implements the 
same interface, wrapping around the original service. In many cases, your code 
will simply re-invoke methods on the delegate, passing the same parameters. 
However, an interceptor can decide to not invoke methods, or it can change 
parameters, or change return values, or catch or throw exceptions.</p><p>Note 
that the object passed in as <code>delegate</code> may be the core service 
implementation, or it may be some other interceptor from some other decorator 
for the same service.</p><hr><p>&#160;</p><p>&#160;    
+</p><div class="atb-scrollbar-macro">
+    <div class="prev">
+        <a  href="ioc-cookbook-basic-services-and-injection.html" rel="prev">
+                                    <span class="aui-icon aui-icon-small 
atb-icon-arrow-left">Previous</span>
+                                <span class="title">IoC Cookbook - Basic 
Services and Injection</span>
+            </a>
+
+    </div>
+    <div class="parent">
+                    <a  href="ioc-cookbook.html" rel="parent">
+                                            <span class="aui-icon 
aui-icon-small atb-icon-arrow-up">Up</span>
+                                        <span class="title">IoC cookbook</span>
+                </a>
+
+            </div>
+    <div class="next">
+        <a  href="ioc-cookbook-patterns.html" rel="next">
+                <span class="title">IoC Cookbook - Patterns</span>
+                                    <span class="aui-icon aui-icon-small 
atb-icon-arrow-right">Next</span>
+                            </a>
+
+    </div>
+</div></div>
       </div>
 
       <div class="clearer"></div>
     
     <div id="footer">
             <div id="footer"><p>Apache Tapestry, Tapestry, Apache, the Apache 
feather logo, and the Apache Tapestry project logo are trademarks of The Apache 
Software Foundation.<br clear="none">
-</p><p></p><div class="aui-message aui-message-error"><p 
class="title"><strong>Error rendering macro 'html'</strong></p><p>Your 
Confluence administrator has disallowed the use of Javascript in the HTML 
macro.  This setting can be changed using  HTML for Confluence Configuration.  
Please see your administrator for details.</p></div><p></p></div>
+</p><p><script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-400821-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; 
ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 
'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(ga, s);
+  })();
+</script></p><p></p></div>
     </div>
 
     <div id="comments_thread"></div>

Modified: websites/production/tapestry/content/ioc-cookbook-patterns.html
==============================================================================
--- websites/production/tapestry/content/ioc-cookbook-patterns.html (original)
+++ websites/production/tapestry/content/ioc-cookbook-patterns.html Mon Aug 26 
21:20:28 2019
@@ -77,7 +77,30 @@
       </div>
 
       <div id="content">
-                <div id="ConfluenceContent"><p>Tapestry IoC has support for 
implementing several of the <a  class="external-link" 
href="http://en.wikipedia.org/wiki/Design_pattern_(computer_science)" 
rel="nofollow">Gang Of Four Design Patterns</a>. In fact, the IoC container 
itself is a pumped up version of the Factory pattern.</p><div class="aui-label" 
style="float:right" title="Related Articles">
+                <div id="ConfluenceContent"><p>    
+</p><div class="atb-scrollbar-macro">
+    <div class="prev">
+        <a  href="ioc-cookbook-overriding-ioc-services.html" rel="prev">
+                                    <span class="aui-icon aui-icon-small 
atb-icon-arrow-left">Previous</span>
+                                <span class="title">IoC Cookbook - Overriding 
IoC Services</span>
+            </a>
+
+    </div>
+    <div class="parent">
+                    <a  href="ioc-cookbook.html" rel="parent">
+                                            <span class="aui-icon 
aui-icon-small atb-icon-arrow-up">Up</span>
+                                        <span class="title">IoC cookbook</span>
+                </a>
+
+            </div>
+    <div class="next">
+        <a  href="ioc-cookbook-service-configurations.html" rel="next">
+                <span class="title">IoC cookbook - Service 
Configurations</span>
+                                    <span class="aui-icon aui-icon-small 
atb-icon-arrow-right">Next</span>
+                            </a>
+
+    </div>
+</div>Tapestry IoC has support for implementing several of the <a  
class="external-link" 
href="http://en.wikipedia.org/wiki/Design_pattern_(computer_science)" 
rel="nofollow">Gang Of Four Design Patterns</a>. In fact, the IoC container 
itself is a pumped up version of the Factory pattern.<div class="aui-label" 
style="float:right" title="Related Articles">
 
 
 
@@ -205,14 +228,47 @@
     }
   }
 }</pre>
-</div></div><p>Reducing the chain to a single object vastly simplifies the 
code: we've <em>factored out</em> the loop implicit in the chain of command. 
That eliminates a lot of code, and that's less code to test, and fewer paths 
through InjectWorker, which lowers its complexity further. We don't have to 
test the cases where the list of injection providers is empty, or consists of 
only a single object, or where it's the third object in that returns true: it 
looks like a single object, it acts like a single object ... but its 
implementation uses many objects.</p></div>
+</div></div><p>Reducing the chain to a single object vastly simplifies the 
code: we've <em>factored out</em> the loop implicit in the chain of command. 
That eliminates a lot of code, and that's less code to test, and fewer paths 
through InjectWorker, which lowers its complexity further. We don't have to 
test the cases where the list of injection providers is empty, or consists of 
only a single object, or where it's the third object in that returns true: it 
looks like a single object, it acts like a single object ... but its 
implementation uses many objects.    
+</p><div class="atb-scrollbar-macro">
+    <div class="prev">
+        <a  href="ioc-cookbook-overriding-ioc-services.html" rel="prev">
+                                    <span class="aui-icon aui-icon-small 
atb-icon-arrow-left">Previous</span>
+                                <span class="title">IoC Cookbook - Overriding 
IoC Services</span>
+            </a>
+
+    </div>
+    <div class="parent">
+                    <a  href="ioc-cookbook.html" rel="parent">
+                                            <span class="aui-icon 
aui-icon-small atb-icon-arrow-up">Up</span>
+                                        <span class="title">IoC cookbook</span>
+                </a>
+
+            </div>
+    <div class="next">
+        <a  href="ioc-cookbook-service-configurations.html" rel="next">
+                <span class="title">IoC cookbook - Service 
Configurations</span>
+                                    <span class="aui-icon aui-icon-small 
atb-icon-arrow-right">Next</span>
+                            </a>
+
+    </div>
+</div></div>
       </div>
 
       <div class="clearer"></div>
     
     <div id="footer">
             <div id="footer"><p>Apache Tapestry, Tapestry, Apache, the Apache 
feather logo, and the Apache Tapestry project logo are trademarks of The Apache 
Software Foundation.<br clear="none">
-</p><p></p><div class="aui-message aui-message-error"><p 
class="title"><strong>Error rendering macro 'html'</strong></p><p>Your 
Confluence administrator has disallowed the use of Javascript in the HTML 
macro.  This setting can be changed using  HTML for Confluence Configuration.  
Please see your administrator for details.</p></div><p></p></div>
+</p><p><script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-400821-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; 
ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 
'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(ga, s);
+  })();
+</script></p><p></p></div>
     </div>
 
     <div id="comments_thread"></div>

Modified: 
websites/production/tapestry/content/ioc-cookbook-service-configurations.html
==============================================================================
--- 
websites/production/tapestry/content/ioc-cookbook-service-configurations.html 
(original)
+++ 
websites/production/tapestry/content/ioc-cookbook-service-configurations.html 
Mon Aug 26 21:20:28 2019
@@ -77,7 +77,26 @@
       </div>
 
       <div id="content">
-                <div id="ConfluenceContent"><h1 
id="IoCcookbook-ServiceConfigurations-ServiceConfigurations">Service 
Configurations</h1><p>This is an area of Tapestry IoC that is often least well 
understood. Tapestry services often must have some configuration to fine tune 
exactly what they do. One of the interactions between modules is that these 
service configurations are shared: they may be contributed into by any 
module.</p><p>Let's start with the most basic kind, the unordered 
configuration.</p><h1 
id="IoCcookbook-ServiceConfigurations-UnorderedServiceConfigurations">Unordered 
Service Configurations</h1><p>One of Tapestry's features is the ability to 
package assets (images, style sheets, JavaScript libraries, etc.) inside JAR 
files and expose those to the client. For example, an application URL 
/assets/org/example/mylib/mylib.js would refer to a file, myllib.js, stored on 
the classpath in the /org/example/mylib folder.</p><p>That's fine for most 
cases, but for certain file exte
 nsions, we don't want to allow a client browser to "troll" for the files, as 
the contents could compromise security. For example, downloading a .class file 
is bad: a clever client might download one that contains a hard-coded user name 
or password.</p><p>Thus, for certain file extensions, Tapestry guards the 
resource by attaching an MD5 digest for the resource to the URL. The checksum 
is derived from the file contents; thus it can't be spoofed from the client 
unless the client already has the file contents.</p><p>This is controlled by 
the <a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/ResourceDigestGenerator.html";>ResourceDigestGenerator</a>
 service, which uses its configuration to determine which file extensions 
require an MD5 digest.</p><h2 
id="IoCcookbook-ServiceConfigurations-ContributingtoaService">Contributing to a 
Service</h2><p>Main Article: <a  
href="tapestry-ioc-configuration.html">Tapestry IoC Configuration</a></p>
 <p>The Tapestry module makes a contribution into the service 
configuration:</p><div class="code panel pdl" style="border-style: 
solid;border-width: 1px;"><div class="codeContent panelContent pdl">
+                <div id="ConfluenceContent"><p>    
+</p><div class="atb-scrollbar-macro">
+    <div class="prev">
+        <a  href="ioc-cookbook-patterns.html" rel="prev">
+                                    <span class="aui-icon aui-icon-small 
atb-icon-arrow-left">Previous</span>
+                                <span class="title">IoC Cookbook - 
Patterns</span>
+            </a>
+
+    </div>
+    <div class="parent">
+                    <a  href="ioc-cookbook.html" rel="parent">
+                                            <span class="aui-icon 
aui-icon-small atb-icon-arrow-up">Up</span>
+                                        <span class="title">IoC cookbook</span>
+                </a>
+
+            </div>
+    <div class="next">
+        
+    </div>
+</div><h1 id="IoCcookbook-ServiceConfigurations-ServiceConfigurations">Service 
Configurations</h1><p>This is an area of Tapestry IoC that is often least well 
understood. Tapestry services often must have some configuration to fine tune 
exactly what they do. One of the interactions between modules is that these 
service configurations are shared: they may be contributed into by any 
module.</p><p>Let's start with the most basic kind, the unordered 
configuration.</p><h1 
id="IoCcookbook-ServiceConfigurations-UnorderedServiceConfigurations">Unordered 
Service Configurations</h1><p>One of Tapestry's features is the ability to 
package assets (images, style sheets, JavaScript libraries, etc.) inside JAR 
files and expose those to the client. For example, an application URL 
/assets/org/example/mylib/mylib.js would refer to a file, myllib.js, stored on 
the classpath in the /org/example/mylib folder.</p><p>That's fine for most 
cases, but for certain file extensions, we don't want to allow a clien
 t browser to "troll" for the files, as the contents could compromise security. 
For example, downloading a .class file is bad: a clever client might download 
one that contains a hard-coded user name or password.</p><p>Thus, for certain 
file extensions, Tapestry guards the resource by attaching an MD5 digest for 
the resource to the URL. The checksum is derived from the file contents; thus 
it can't be spoofed from the client unless the client already has the file 
contents.</p><p>This is controlled by the <a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/ResourceDigestGenerator.html";>ResourceDigestGenerator</a>
 service, which uses its configuration to determine which file extensions 
require an MD5 digest.</p><h2 
id="IoCcookbook-ServiceConfigurations-ContributingtoaService">Contributing to a 
Service</h2><p>Main Article: <a  
href="tapestry-ioc-configuration.html">Tapestry IoC Configuration</a></p><p>The 
Tapestry module makes a contrib
 ution into the service configuration:</p><div class="code panel pdl" 
style="border-style: solid;border-width: 1px;"><div class="codeContent 
panelContent pdl">
 <pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; 
gutter: false; theme: Default" data-theme="Default">  public static void 
contributeResourceDigestGenerator(Configuration&lt;String&gt; configuration)
   {
     configuration.add("class");
@@ -142,14 +161,43 @@
     configuration.add("tapestry.jscalendar.path", 
"org/apache/tapestry5/jscalendar-1.0");
     configuration.add("tapestry.jscalendar", 
"classpath:${tapestry.jscalendar.path}");
   }</pre>
-</div></div><p>These contribution set up a number of defaults used to 
configure various Tapestry services. As you can see, you can even define symbol 
values in terms of other symbol values.</p><p>Mapped configurations don't have 
to be keyed on Strings (enums or Class are other common key types). When a 
mapped configuration <em>is</em> keyed on String, then a case-insensitive map 
is used.</p></div>
+</div></div><p>These contribution set up a number of defaults used to 
configure various Tapestry services. As you can see, you can even define symbol 
values in terms of other symbol values.</p><p>Mapped configurations don't have 
to be keyed on Strings (enums or Class are other common key types). When a 
mapped configuration <em>is</em> keyed on String, then a case-insensitive map 
is used.    
+</p><div class="atb-scrollbar-macro">
+    <div class="prev">
+        <a  href="ioc-cookbook-patterns.html" rel="prev">
+                                    <span class="aui-icon aui-icon-small 
atb-icon-arrow-left">Previous</span>
+                                <span class="title">IoC Cookbook - 
Patterns</span>
+            </a>
+
+    </div>
+    <div class="parent">
+                    <a  href="ioc-cookbook.html" rel="parent">
+                                            <span class="aui-icon 
aui-icon-small atb-icon-arrow-up">Up</span>
+                                        <span class="title">IoC cookbook</span>
+                </a>
+
+            </div>
+    <div class="next">
+        
+    </div>
+</div></div>
       </div>
 
       <div class="clearer"></div>
     
     <div id="footer">
             <div id="footer"><p>Apache Tapestry, Tapestry, Apache, the Apache 
feather logo, and the Apache Tapestry project logo are trademarks of The Apache 
Software Foundation.<br clear="none">
-</p><p></p><div class="aui-message aui-message-error"><p 
class="title"><strong>Error rendering macro 'html'</strong></p><p>Your 
Confluence administrator has disallowed the use of Javascript in the HTML 
macro.  This setting can be changed using  HTML for Confluence Configuration.  
Please see your administrator for details.</p></div><p></p></div>
+</p><p><script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-400821-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; 
ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 
'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(ga, s);
+  })();
+</script></p><p></p></div>
     </div>
 
     <div id="comments_thread"></div>

Modified: websites/production/tapestry/content/ioc-cookbook.html
==============================================================================
--- websites/production/tapestry/content/ioc-cookbook.html (original)
+++ websites/production/tapestry/content/ioc-cookbook.html Mon Aug 26 21:20:28 
2019
@@ -77,7 +77,30 @@
       </div>
 
       <div id="content">
-                <div id="ConfluenceContent"><p>Tapestry <strong>Inversion of 
Control</strong> (IoC), though originally designed specifically for the needs 
of the Tapestry web framework, may also be employed as a stand-alone IoC 
container, separate from the rest of Tapestry.</p><div class="aui-label" 
style="float:right" title="Related Articles">
+                <div id="ConfluenceContent"><p>    
+</p><div class="atb-scrollbar-macro">
+    <div class="prev">
+        <a  href="using-select-with-a-list.html" rel="prev">
+                                    <span class="aui-icon aui-icon-small 
atb-icon-arrow-left">Previous</span>
+                                <span class="title">Using Select With a 
List</span>
+            </a>
+
+    </div>
+    <div class="parent">
+                    <a  href="cookbook.html" rel="parent">
+                                            <span class="aui-icon 
aui-icon-small atb-icon-arrow-up">Up</span>
+                                        <span class="title">Cookbook</span>
+                </a>
+
+            </div>
+    <div class="next">
+        <a  href="performance-and-clustering.html" rel="next">
+                <span class="title">Performance and Clustering</span>
+                                    <span class="aui-icon aui-icon-small 
atb-icon-arrow-right">Next</span>
+                            </a>
+
+    </div>
+</div><p>Tapestry <strong>Inversion of Control</strong> (IoC), though 
originally designed specifically for the needs of the Tapestry web framework, 
may also be employed as a stand-alone IoC container, separate from the rest of 
Tapestry.</p><div class="aui-label" style="float:right" title="Related 
Articles">
 
 
 
@@ -137,7 +160,17 @@
     
     <div id="footer">
             <div id="footer"><p>Apache Tapestry, Tapestry, Apache, the Apache 
feather logo, and the Apache Tapestry project logo are trademarks of The Apache 
Software Foundation.<br clear="none">
-</p><p></p><div class="aui-message aui-message-error"><p 
class="title"><strong>Error rendering macro 'html'</strong></p><p>Your 
Confluence administrator has disallowed the use of Javascript in the HTML 
macro.  This setting can be changed using  HTML for Confluence Configuration.  
Please see your administrator for details.</p></div><p></p></div>
+</p><p><script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-400821-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; 
ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 
'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(ga, s);
+  })();
+</script></p><p></p></div>
     </div>
 
     <div id="comments_thread"></div>

Modified: websites/production/tapestry/content/javascript-faq.html
==============================================================================
--- websites/production/tapestry/content/javascript-faq.html (original)
+++ websites/production/tapestry/content/javascript-faq.html Mon Aug 26 
21:20:28 2019
@@ -77,12 +77,35 @@
       </div>
 
       <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.rbtoc1566728403016 {padding: 0px;}
-div.rbtoc1566728403016 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1566728403016 li {margin-left: 0px;padding-left: 0px;}
+                <div id="ConfluenceContent"><p>    
+</p><div class="atb-scrollbar-macro">
+    <div class="prev">
+        <a  href="component-events-faq.html" rel="prev">
+                                    <span class="aui-icon aui-icon-small 
atb-icon-arrow-left">Previous</span>
+                                <span class="title">Component Events FAQ</span>
+            </a>
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1566728403016">
+    </div>
+    <div class="parent">
+                    <a  href="frequently-asked-questions.html" rel="parent">
+                                            <span class="aui-icon 
aui-icon-small atb-icon-arrow-up">Up</span>
+                                        <span class="title">Frequently Asked 
Questions</span>
+                </a>
+
+            </div>
+    <div class="next">
+        <a  href="ajax-components-faq.html" rel="next">
+                <span class="title">Ajax Components FAQ</span>
+                                    <span class="aui-icon aui-icon-small 
atb-icon-arrow-right">Next</span>
+                            </a>
+
+    </div>
+</div><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.rbtoc1566854389417 {padding: 0px;}
+div.rbtoc1566854389417 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1566854389417 li {margin-left: 0px;padding-left: 0px;}
+
+/*]]>*/</style></p><div class="toc-macro rbtoc1566854389417">
 <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="confluen
 ce-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
  component will be useful regardless of whether the final application is built 
using Prototype, jQuery or something else.</p></div>
       </div>
@@ -91,7 +114,17 @@ div.rbtoc1566728403016 li {margin-left:
     
     <div id="footer">
             <div id="footer"><p>Apache Tapestry, Tapestry, Apache, the Apache 
feather logo, and the Apache Tapestry project logo are trademarks of The Apache 
Software Foundation.<br clear="none">
-</p><p></p><div class="aui-message aui-message-error"><p 
class="title"><strong>Error rendering macro 'html'</strong></p><p>Your 
Confluence administrator has disallowed the use of Javascript in the HTML 
macro.  This setting can be changed using  HTML for Confluence Configuration.  
Please see your administrator for details.</p></div><p></p></div>
+</p><p><script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-400821-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; 
ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 
'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(ga, s);
+  })();
+</script></p><p></p></div>
     </div>
 
     <div id="comments_thread"></div>

Modified: websites/production/tapestry/content/limitations.html
==============================================================================
--- websites/production/tapestry/content/limitations.html (original)
+++ websites/production/tapestry/content/limitations.html Mon Aug 26 21:20:28 
2019
@@ -77,12 +77,35 @@
       </div>
 
       <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.rbtoc1566728389338 {padding: 0px;}
-div.rbtoc1566728389338 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1566728389338 li {margin-left: 0px;padding-left: 0px;}
+                <div id="ConfluenceContent"><p>    
+</p><div class="atb-scrollbar-macro">
+    <div class="prev">
+        <a  href="request-processing-faq.html" rel="prev">
+                                    <span class="aui-icon aui-icon-small 
atb-icon-arrow-left">Previous</span>
+                                <span class="title">Request Processing 
FAQ</span>
+            </a>
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1566728389338">
+    </div>
+    <div class="parent">
+                    <a  href="frequently-asked-questions.html" rel="parent">
+                                            <span class="aui-icon 
aui-icon-small atb-icon-arrow-up">Up</span>
+                                        <span class="title">Frequently Asked 
Questions</span>
+                </a>
+
+            </div>
+    <div class="next">
+        <a  href="specific-errors-faq.html" rel="next">
+                <span class="title">Specific Errors FAQ</span>
+                                    <span class="aui-icon aui-icon-small 
atb-icon-arrow-right">Next</span>
+                            </a>
+
+    </div>
+</div><h1 id="Limitations-Limitations">Limitations</h1><h2 
id="Limitations-Contents">Contents</h2><p><style type="text/css">/*<![CDATA[*/
+div.rbtoc1566854376377 {padding: 0px;}
+div.rbtoc1566854376377 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1566854376377 li {margin-left: 0px;padding-left: 0px;}
+
+/*]]>*/</style></p><div class="toc-macro rbtoc1566854376377">
 <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 implementati
 on 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 class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; 
gutter: true; theme: Default" data-theme="Default">public static void 
bind(ServiceBinder binder)
@@ -99,14 +122,47 @@ public static JobQueue buildJobQueue(Mes
   return service;
 }
 </pre>
-</div></div><p>ArchiveService is reloadable, because Tapestry instantiates 
<code>ArchiveServiceImpl</code> itself. On the other hand, Tapestry invokes 
<code>buildJobQueue()</code> and it is your code inside the method that 
instantiates <code>JobQueueImpl</code>, so the JobQueue service will not be 
reloadable.</p><p>Finally, only classes whose class files are stored directly 
on the file system, and not packaged inside JARs, are ever reloadable ... 
generally, only the services of the application being built (and not services 
from libraries) will be stored on the file system. This reflects the intent of 
reloading: as an agile development tool, but not something to be used in 
deployment.</p><h2 
id="Limitations-HowdoIrunmultipleTapestryapplicationsinthesamewebapplication?">How
 do I run multiple Tapestry applications in the same web 
application?</h2><p>Running multiple Tapestry 5 applications is not supported; 
there's only one place to identify the application root package, so even config
 uring multiple filters into multiple folders will not work.</p><p>Support for 
multiple Tapestry applications in the same web application was a specific 
non-goal in Tapestry 5 (it needlessly complicated Tapestry 4). Given how 
loosely connected Tapestry 5 pages are from each other, there doesn't seem to 
be an advantage to doing so ... and certainly, in terms of memory utilization, 
there is a significant down side, were it even 
possible.</p><p>You&#160;<em>can</em>&#160;<span style="color: rgb(0,0,0);">run 
a Tapestry 4 app and a Tapestry 5 app side-by-side (the package names are 
different, for just this reason), but they know nothing of each other, and 
can't interact directly. This is just like the way you could have a single WAR 
with multiple servlets; the different applications can only communicate via 
URLs, or shared state in the 
HttpSession.</span>&#160;</p><p>&#160;</p><p>&#160;</p></div>
+</div></div><p>ArchiveService is reloadable, because Tapestry instantiates 
<code>ArchiveServiceImpl</code> itself. On the other hand, Tapestry invokes 
<code>buildJobQueue()</code> and it is your code inside the method that 
instantiates <code>JobQueueImpl</code>, so the JobQueue service will not be 
reloadable.</p><p>Finally, only classes whose class files are stored directly 
on the file system, and not packaged inside JARs, are ever reloadable ... 
generally, only the services of the application being built (and not services 
from libraries) will be stored on the file system. This reflects the intent of 
reloading: as an agile development tool, but not something to be used in 
deployment.</p><h2 
id="Limitations-HowdoIrunmultipleTapestryapplicationsinthesamewebapplication?">How
 do I run multiple Tapestry applications in the same web 
application?</h2><p>Running multiple Tapestry 5 applications is not supported; 
there's only one place to identify the application root package, so even config
 uring multiple filters into multiple folders will not work.</p><p>Support for 
multiple Tapestry applications in the same web application was a specific 
non-goal in Tapestry 5 (it needlessly complicated Tapestry 4). Given how 
loosely connected Tapestry 5 pages are from each other, there doesn't seem to 
be an advantage to doing so ... and certainly, in terms of memory utilization, 
there is a significant down side, were it even 
possible.</p><p>You&#160;<em>can</em>&#160;<span style="color: rgb(0,0,0);">run 
a Tapestry 4 app and a Tapestry 5 app side-by-side (the package names are 
different, for just this reason), but they know nothing of each other, and 
can't interact directly. This is just like the way you could have a single WAR 
with multiple servlets; the different applications can only communicate via 
URLs, or shared state in the HttpSession.</span>    
+</p><div class="atb-scrollbar-macro">
+    <div class="prev">
+        <a  href="request-processing-faq.html" rel="prev">
+                                    <span class="aui-icon aui-icon-small 
atb-icon-arrow-left">Previous</span>
+                                <span class="title">Request Processing 
FAQ</span>
+            </a>
+
+    </div>
+    <div class="parent">
+                    <a  href="frequently-asked-questions.html" rel="parent">
+                                            <span class="aui-icon 
aui-icon-small atb-icon-arrow-up">Up</span>
+                                        <span class="title">Frequently Asked 
Questions</span>
+                </a>
+
+            </div>
+    <div class="next">
+        <a  href="specific-errors-faq.html" rel="next">
+                <span class="title">Specific Errors FAQ</span>
+                                    <span class="aui-icon aui-icon-small 
atb-icon-arrow-right">Next</span>
+                            </a>
+
+    </div>
+</div>&#160;<p>&#160;</p><p>&#160;</p></div>
       </div>
 
       <div class="clearer"></div>
     
     <div id="footer">
             <div id="footer"><p>Apache Tapestry, Tapestry, Apache, the Apache 
feather logo, and the Apache Tapestry project logo are trademarks of The Apache 
Software Foundation.<br clear="none">
-</p><p></p><div class="aui-message aui-message-error"><p 
class="title"><strong>Error rendering macro 'html'</strong></p><p>Your 
Confluence administrator has disallowed the use of Javascript in the HTML 
macro.  This setting can be changed using  HTML for Confluence Configuration.  
Please see your administrator for details.</p></div><p></p></div>
+</p><p><script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-400821-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; 
ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 
'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(ga, s);
+  })();
+</script></p><p></p></div>
     </div>
 
     <div id="comments_thread"></div>

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 Mon Aug 26 
21:20:28 2019
@@ -77,12 +77,35 @@
       </div>
 
       <div id="content">
-                <div id="ConfluenceContent"><p>&#160;</p><p>&#160;</p><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.rbtoc1566728396193 {padding: 0px;}
-div.rbtoc1566728396193 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1566728396193 li {margin-left: 0px;padding-left: 0px;}
+                <div id="ConfluenceContent"><p>&#160;</p><p>&#160;    
+</p><div class="atb-scrollbar-macro">
+    <div class="prev">
+        <a  href="beaneditform-faq.html" rel="prev">
+                                    <span class="aui-icon aui-icon-small 
atb-icon-arrow-left">Previous</span>
+                                <span class="title">BeanEditForm FAQ</span>
+            </a>
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1566728396193">
+    </div>
+    <div class="parent">
+                    <a  href="frequently-asked-questions.html" rel="parent">
+                                            <span class="aui-icon 
aui-icon-small atb-icon-arrow-up">Up</span>
+                                        <span class="title">Frequently Asked 
Questions</span>
+                </a>
+
+            </div>
+    <div class="next">
+        <a  href="component-events-faq.html" rel="next">
+                <span class="title">Component Events FAQ</span>
+                                    <span class="aui-icon aui-icon-small 
atb-icon-arrow-right">Next</span>
+                            </a>
+
+    </div>
+</div><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.rbtoc1566854378952 {padding: 0px;}
+div.rbtoc1566854378952 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1566854378952 li {margin-left: 0px;padding-left: 0px;}
+
+/*]]>*/</style></p><div class="toc-macro rbtoc1566854378952">
 <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 class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: xml; 
gutter: false; theme: Default" data-theme="Default">&lt;a 
href="${profilePageLink}"&gt;Display Profile (w/ full details)&lt;/a&gt;
@@ -117,14 +140,47 @@ div.rbtoc1566728396193 li {margin-left:
 </div><h2 
id="LinkComponentsFAQ-HowdoIcreateaLinkbacktothecurrentpagefromacomponent?">How 
do I create a Link back to the current page from a component?</h2><p>Sometimes 
it is useful to create a link back to the current page, but you don't always 
know the name of the page (the link may appear inside a deeply nested 
subcomponent). Fortunately, this is easy.</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: xml; 
gutter: false; theme: Default" data-theme="Default">&lt;t:pagelink 
page="prop:componentResources.pageName"&gt;refresh page&lt;/t:pagelink&gt;
 </pre>
-</div></div><p>Every component has an extra property, componentResources, 
added to it: it's the instance of <a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ComponentResources.html";>ComponentResources</a>
 that represents the link between your code and all of Tapestry's structure 
around your class. One of the properties of ComponentResources is pageName, the 
name of the page. By binding the PageLink's page parameter with the "prop:" 
binding prefix, we ensure that we bind to a computed property; this is 
necessary because the PageLink.page parameter defaults to the "literal:" 
binding prefix.</p><p>As an added benefit, if the page class is ever renamed or 
moved to a different package, the pageName property will automatically adjust 
to the new name.</p></div>
+</div></div><p>Every component has an extra property, componentResources, 
added to it: it's the instance of <a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ComponentResources.html";>ComponentResources</a>
 that represents the link between your code and all of Tapestry's structure 
around your class. One of the properties of ComponentResources is pageName, the 
name of the page. By binding the PageLink's page parameter with the "prop:" 
binding prefix, we ensure that we bind to a computed property; this is 
necessary because the PageLink.page parameter defaults to the "literal:" 
binding prefix.</p><p>As an added benefit, if the page class is ever renamed or 
moved to a different package, the pageName property will automatically adjust 
to the new name.    
+</p><div class="atb-scrollbar-macro">
+    <div class="prev">
+        <a  href="beaneditform-faq.html" rel="prev">
+                                    <span class="aui-icon aui-icon-small 
atb-icon-arrow-left">Previous</span>
+                                <span class="title">BeanEditForm FAQ</span>
+            </a>
+
+    </div>
+    <div class="parent">
+                    <a  href="frequently-asked-questions.html" rel="parent">
+                                            <span class="aui-icon 
aui-icon-small atb-icon-arrow-up">Up</span>
+                                        <span class="title">Frequently Asked 
Questions</span>
+                </a>
+
+            </div>
+    <div class="next">
+        <a  href="component-events-faq.html" rel="next">
+                <span class="title">Component Events FAQ</span>
+                                    <span class="aui-icon aui-icon-small 
atb-icon-arrow-right">Next</span>
+                            </a>
+
+    </div>
+</div></div>
       </div>
 
       <div class="clearer"></div>
     
     <div id="footer">
             <div id="footer"><p>Apache Tapestry, Tapestry, Apache, the Apache 
feather logo, and the Apache Tapestry project logo are trademarks of The Apache 
Software Foundation.<br clear="none">
-</p><p></p><div class="aui-message aui-message-error"><p 
class="title"><strong>Error rendering macro 'html'</strong></p><p>Your 
Confluence administrator has disallowed the use of Javascript in the HTML 
macro.  This setting can be changed using  HTML for Confluence Configuration.  
Please see your administrator for details.</p></div><p></p></div>
+</p><p><script type="text/javascript">
+  var _gaq = _gaq || [];
+  _gaq.push(['_setAccount', 'UA-400821-1']);
+  _gaq.push(['_trackPageview']);
+
+  (function() {
+    var ga = document.createElement('script'); ga.type = 'text/javascript'; 
ga.async = true;
+    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 
'http://www') + '.google-analytics.com/ga.js';
+    var s = document.getElementsByTagName('script')[0]; 
s.parentNode.insertBefore(ga, s);
+  })();
+</script></p><p></p></div>
     </div>
 
     <div id="comments_thread"></div>


Reply via email to