Author: buildbot
Date: Tue Apr 23 18:20:37 2019
New Revision: 1044055

Log:
Production update by buildbot for tapestry

Modified:
    websites/production/tapestry/content/ajax-and-zones.html
    websites/production/tapestry/content/ajax-components-faq.html
    websites/production/tapestry/content/beaneditform-faq.html
    websites/production/tapestry/content/cache/main.pageCache
    websites/production/tapestry/content/component-events-faq.html
    websites/production/tapestry/content/component-parameters.html
    websites/production/tapestry/content/configuration.html
    websites/production/tapestry/content/enum-parameter-recipe.html
    websites/production/tapestry/content/environmental-services.html
    websites/production/tapestry/content/error-page-recipe.html
    websites/production/tapestry/content/extending-the-if-component.html
    websites/production/tapestry/content/forms-and-form-components-faq.html
    websites/production/tapestry/content/forms-and-validation.html
    websites/production/tapestry/content/general-questions.html
    websites/production/tapestry/content/hibernate-statistics.html
    websites/production/tapestry/content/hibernate-support-faq.html
    websites/production/tapestry/content/injection-faq.html
    websites/production/tapestry/content/injection.html
    
websites/production/tapestry/content/integration-with-existing-applications.html
    
websites/production/tapestry/content/ioc-cookbook-basic-services-and-injection.html
    
websites/production/tapestry/content/ioc-cookbook-overriding-ioc-services.html
    websites/production/tapestry/content/ioc-cookbook-patterns.html
    
websites/production/tapestry/content/ioc-cookbook-service-configurations.html
    websites/production/tapestry/content/ioc-cookbook.html
    websites/production/tapestry/content/javascript-faq.html
    websites/production/tapestry/content/limitations.html
    websites/production/tapestry/content/link-components-faq.html
    websites/production/tapestry/content/maven-support-faq.html
    websites/production/tapestry/content/menuleft.html
    websites/production/tapestry/content/meta-programming-page-content.html
    websites/production/tapestry/content/page-and-component-classes-faq.html
    websites/production/tapestry/content/page-navigation.html
    websites/production/tapestry/content/persistent-page-data.html
    websites/production/tapestry/content/release-notes-50.html
    websites/production/tapestry/content/release-notes-51.html
    websites/production/tapestry/content/release-notes-52.html
    websites/production/tapestry/content/release-notes-53.html
    websites/production/tapestry/content/release-notes-531.html
    websites/production/tapestry/content/release-notes-532.html
    websites/production/tapestry/content/release-notes-533.html
    websites/production/tapestry/content/release-notes-534.html
    websites/production/tapestry/content/release-notes-535.html
    websites/production/tapestry/content/release-notes-536.html
    websites/production/tapestry/content/release-notes-537.html
    websites/production/tapestry/content/release-notes-54.html
    websites/production/tapestry/content/release-upgrade-faq.html
    websites/production/tapestry/content/request-processing-faq.html
    websites/production/tapestry/content/security-faq.html
    websites/production/tapestry/content/security.html
    websites/production/tapestry/content/session-storage.html
    websites/production/tapestry/content/specific-errors-faq.html
    websites/production/tapestry/content/tapestry-inversion-of-control-faq.html
    websites/production/tapestry/content/templating-and-markup-faq.html
    websites/production/tapestry/content/uploading-files.html
    websites/production/tapestry/content/using-select-with-a-list.html

Modified: websites/production/tapestry/content/ajax-and-zones.html
==============================================================================
--- websites/production/tapestry/content/ajax-and-zones.html (original)
+++ websites/production/tapestry/content/ajax-and-zones.html Tue Apr 23 
18:20:37 2019
@@ -325,17 +325,7 @@ void onActionFromRegister()
     
     <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><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>
+</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>
     </div>
 
     <div id="comments_thread"></div>

Modified: websites/production/tapestry/content/ajax-components-faq.html
==============================================================================
--- websites/production/tapestry/content/ajax-components-faq.html (original)
+++ websites/production/tapestry/content/ajax-components-faq.html Tue Apr 23 
18:20:37 2019
@@ -78,11 +78,11 @@
 
       <div id="content">
                 <div id="ConfluenceContent"><h1 
id="AjaxComponentsFAQ-AjaxComponents">Ajax Components</h1><p>Main article: <a  
href="ajax-and-zones.html">Ajax and Zones</a></p><h2 
id="AjaxComponentsFAQ-Contents">Contents</h2><p><style 
type="text/css">/*<![CDATA[*/
-div.rbtoc1554045599286 {padding: 0px;}
-div.rbtoc1554045599286 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1554045599286 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1556043579904 {padding: 0px;}
+div.rbtoc1556043579904 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1556043579904 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1554045599286">
+/*]]>*/</style></p><div class="toc-macro rbtoc1556043579904">
 <ul class="toc-indentation"><li><a  
href="#AjaxComponentsFAQ-DoIhavetospecifybothidandt:idforZonecomponents?">Do I 
have to specify both id and t:id for Zone components?</a></li><li><a  
href="#AjaxComponentsFAQ-HowdoIupdatethecontentofaZonefromaneventhandlermethod?">How
 do I update the content of a Zone from an event handler method?</a></li><li><a 
 href="#AjaxComponentsFAQ-HowtoIupdatemultiplezonesinasingleeventhandler?">How 
to I update multiple zones in a single event handler?</a></li><li><a  
href="#AjaxComponentsFAQ-What'sthatweirdnumberinthemiddleoftheclientidsafteraZoneisupdated?">What's
 that weird number in the middle of the client ids after a Zone is 
updated?</a></li><li><a  
href="#AjaxComponentsFAQ-WhydoIsometimesgettheexception&quot;Therenderedcontentdidnotincludeanyelementsthatallowforthepositioningofthehiddenformfield'selement.&quot;whenrenderinganemptyZone?">Why
 do I sometimes get the exception "The rendered content did not include any 
elements that allow for the positioni
 ng of the hidden form field's element." when rendering an empty 
Zone?</a></li></ul>
 </div><h2 
id="AjaxComponentsFAQ-DoIhavetospecifybothidandt:idforZonecomponents?">Do I 
have to specify both <code>id</code> and <code>t:id</code> for Zone 
components?</h2><p>The examples for the Zone component (in the Component 
Reference) consistently specify both <code>id</code> and <code>t:id</code> and 
this is probably a good idea.</p><p>Generally speaking, if you don't specify 
the client-side id (the <code>id</code> attribute), it will be the same as the 
Tapestry component id (<code>t:id</code>).</p><p>However, there are any number 
of exceptions to this rule. The Zone may be rendering inside a Loop (in which 
case, each rendering will have a unique client side id). The Zone may be 
rendering as part of a partial page render, in which case, a random unique id 
is inserted into the id. There are other examples where Tapestry component ids 
in nested components may also clash.</p><p>The point is, to be sure, specify 
the exact client id. This will be the value for the <code>zone</code> p
 arameter of the triggering component (such as a Form, PageLink, ActionLink, 
etc.).</p><h2 
id="AjaxComponentsFAQ-HowdoIupdatethecontentofaZonefromaneventhandlermethod?">How
 do I update the content of a Zone from an event handler method?</h2><p>When a 
client-side link or form triggers an update, the return value from the event 
handler method is used to construct a partial page response; this partial page 
response includes markup content that is used to update the Zone's client-side 
<code>&lt;div&gt;</code> element.</p><p>Where does that content come from? You 
inject it into your page.</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:zone id="search" 
t:id="searchZone"&gt;
@@ -153,17 +153,7 @@ div.rbtoc1554045599286 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><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>
+</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>
     </div>
 
     <div id="comments_thread"></div>

Modified: websites/production/tapestry/content/beaneditform-faq.html
==============================================================================
--- websites/production/tapestry/content/beaneditform-faq.html (original)
+++ websites/production/tapestry/content/beaneditform-faq.html Tue Apr 23 
18:20:37 2019
@@ -78,11 +78,11 @@
 
       <div id="content">
                 <div id="ConfluenceContent"><h1 
id="BeanEditFormFAQ-BeanEditForm">BeanEditForm</h1><p>Main Article: <a  
href="beaneditform-guide.html">BeanEditForm Guide</a></p><h2 
id="BeanEditFormFAQ-Contents">Contents</h2><p><style 
type="text/css">/*<![CDATA[*/
-div.rbtoc1554045624492 {padding: 0px;}
-div.rbtoc1554045624492 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1554045624492 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1556043594617 {padding: 0px;}
+div.rbtoc1556043594617 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1556043594617 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1554045624492">
+/*]]>*/</style></p><div class="toc-macro rbtoc1556043594617">
 <ul class="toc-indentation"><li><a  
href="#BeanEditFormFAQ-WhydoIgetexceptionsaboutinstantiatingabeanwhenusingBeanEditForm?">Why
 do I get exceptions about instantiating a bean when using 
BeanEditForm?</a></li><li><a  
href="#BeanEditFormFAQ-What'sthedifferencebetweenBeanEditorandBeanEditForm?">What's
 the difference between BeanEditor and BeanEditForm?</a></li><li><a  
href="#BeanEditFormFAQ-HowdoIcustomizethelayoutoftheBeanEditForm?">How do I 
customize the layout of the BeanEditForm?</a></li></ul>
 </div><h2 
id="BeanEditFormFAQ-WhydoIgetexceptionsaboutinstantiatingabeanwhenusingBeanEditForm?">Why
 do I get exceptions about instantiating a bean when using 
BeanEditForm?</h2><p>When you render a BeanEditForm, or when the rendered form 
is submitted, Tapestry must instantiate an instance of the object to be edited. 
This occurs when the BeanEditForm's <code>object</code> parameter is bound to 
null: Tapestry instantiates an instance of the property type so that the 
BeanEditForm has an object to read default values from, or to push submitted 
values into.</p><p>By default, this uses the standard <a  
href="injection-in-detail.html">injection mechanism</a>, which means that 
Tapestry will identify the public constructor with the most parameters, and 
attempt to find objects and other objects for each constructor 
parameter.</p><p>There's two ways to fine tune this so you don't get 
errors:</p><ul><li>Place an @<a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apac
 he/tapestry5/ioc/annotations/Inject.html">Inject</a> annotation on the correct 
constructor to use (often, the constructor with no parameters).</li></ul><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
 <pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; 
gutter: false; theme: Default" data-theme="Default">public class MyBean {
@@ -115,17 +115,7 @@ div.rbtoc1554045624492 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><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>
+</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>
     </div>
 
     <div id="comments_thread"></div>

Modified: websites/production/tapestry/content/cache/main.pageCache
==============================================================================
Binary files - no diff available.

Modified: websites/production/tapestry/content/component-events-faq.html
==============================================================================
--- websites/production/tapestry/content/component-events-faq.html (original)
+++ websites/production/tapestry/content/component-events-faq.html Tue Apr 23 
18:20:37 2019
@@ -78,11 +78,11 @@
 
       <div id="content">
                 <div id="ConfluenceContent"><h1 
id="ComponentEventsFAQ-ComponentEvents">Component Events</h1><p>Main Article: 
<a  href="component-events.html">Component Events</a></p><h2 
id="ComponentEventsFAQ-Contents">Contents</h2><p><style 
type="text/css">/*<![CDATA[*/
-div.rbtoc1554045624999 {padding: 0px;}
-div.rbtoc1554045624999 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1554045624999 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1556043595158 {padding: 0px;}
+div.rbtoc1556043595158 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1556043595158 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1554045624999">
+/*]]>*/</style></p><div class="toc-macro rbtoc1556043595158">
 <ul class="toc-indentation"><li><a  
href="#ComponentEventsFAQ-WhydoesTapestrysendaredirectafteraformissubmitted?">Why
 does Tapestry send a redirect after a form is submitted?</a></li><li><a  
href="#ComponentEventsFAQ-IspecifiedazoneinmyActionLink/EventLink,sowhydoesn'tmyeventfireviaajax(request.isXHR()isfalse)?">I
 specified a zone in my ActionLink/EventLink, so why doesn't my event fire via 
ajax (request.isXHR() is false)?</a></li></ul>
 </div><h2 
id="ComponentEventsFAQ-WhydoesTapestrysendaredirectafteraformissubmitted?">Why 
does Tapestry send a redirect after a form is submitted?</h2><p>This is an 
extension of the <a  class="external-link" 
href="http://en.wikipedia.org/wiki/Post/Redirect/Get"; 
rel="nofollow">Post/Redirect/Get</a> approach. It ensures that after an 
operation that updates server-side state, such as a form submission, if the 
user resubmits the resulting page, the operation is <strong>not</strong> 
performed a second time; instead just the results of the operation, reflecting 
the changed server-side state, is re-rendered.</p><p>This has the unwanted 
requirement that any data needed to render the response must persist between 
the event request (the form submission) and the render request; this often 
means that fields must be annotated with @<a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/annotations/Persist.html";>Persist</a>.
 
@@ -105,17 +105,7 @@ div.rbtoc1554045624999 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><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>
+</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>
     </div>
 
     <div id="comments_thread"></div>

Modified: websites/production/tapestry/content/component-parameters.html
==============================================================================
--- websites/production/tapestry/content/component-parameters.html (original)
+++ websites/production/tapestry/content/component-parameters.html Tue Apr 23 
18:20:37 2019
@@ -0,0 +1,433 @@
+<!DOCTYPE html>
+       
+       <!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<html>
+<head>
+  <meta http-equiv="Content-type" content="text/html;charset=UTF-8">
+  <meta http-equiv="x-ua-compatible" content="IE=9">
+  <meta name="viewport" content="width=device-width, initial-scale=1"> 
+  <title>
+          Component Parameters -- Apache Tapestry
+      </title>
+  <link type="text/css" rel="stylesheet" href="/resources/space.css" />
+
+          <link href='/resources/highlighter/styles/shCoreCXF.css' 
rel='stylesheet' type='text/css' />
+    <link href='/resources/highlighter/styles/shThemeCXF.css' rel='stylesheet' 
type='text/css' />
+    <script src='/resources/highlighter/scripts/shCore.js' 
type='text/javascript'></script>
+          <script src='/resources/highlighter/scripts/shBrushJava.js' 
type='text/javascript'></script>
+          <script src='/resources/highlighter/scripts/shBrushXml.js' 
type='text/javascript'></script>
+          <script src='/resources/highlighter/scripts/shBrushPlain.js' 
type='text/javascript'></script>
+        <script>
+      SyntaxHighlighter.defaults['toolbar'] = false;
+      SyntaxHighlighter.all();
+    </script>
+  
+  <link href="/styles/style.css" rel="stylesheet" type="text/css"/>
+
+</head>
+
+<body>
+
+  <div class="wrapper bs">
+
+        <div id="navigation"><div class="nav"><ul class="alternate"><li><a  
href="index.html">Home</a></li><li><a  href="getting-started.html">Getting 
Started</a></li><li><a  href="documentation.html">Documentation</a></li><li><a  
href="download.html">Download</a></li><li><a  
href="about.html">About</a></li><li><a  class="external-link" 
href="http://www.apache.org/licenses/LICENSE-2.0";>License</a></li><li><a  
href="community.html">Community</a></li><li><a  class="external-link" 
href="http://www.apache.org/security/";>Security</a></li><li><a  
class="external-link" href="http://www.apache.org/";>Apache</a></li><li><a  
class="external-link" 
href="http://www.apache.org/foundation/sponsorship.html";>Sponsorship</a></li><li><a
  class="external-link" 
href="http://www.apache.org/foundation/thanks.html";>Thanks</a></li></ul></div>
+
+</div>
+
+          <div id="top">
+            <div id="smallbanner"><div class="searchbox" 
style="float:right;margin: .3em 1em .1em 1em"><span style="color: #999; 
font-size: 90%">Tapestry docs, issues, wikis &amp; blogs:</span>
+<form enctype="application/x-www-form-urlencoded" method="get" 
action="https://tapestry.apache.org/search.html";>
+  <input type="text" name="q">
+  <input type="submit" value="Search">
+</form>
+
+</div>
+
+
+<div class="emblem" style="float:left"><p><span 
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image 
confluence-external-resource" 
src="https://tapestry.apache.org/images/tapestry_small.png"; 
data-image-src="https://tapestry.apache.org/images/tapestry_small.png";></span></p></div>
+
+
+<div class="title" style="float:left; margin: 0 0 0 3em"><h1 
id="SmallBanner-PageTitle">Component Parameters</h1></div>
+
+</div>
+      <div class="clearer"></div>
+      </div>
+
+      <div class="clearer"></div>
+
+      <div id="breadcrumbs">
+                <a href="index.html">Apache Tapestry</a>&nbsp;&gt;&nbsp;<a 
href="documentation.html">Documentation</a>&nbsp;&gt;&nbsp;<a 
href="user-guide.html">User Guide</a>&nbsp;&gt;&nbsp;<a 
href="component-parameters.html">Component Parameters</a>
+        <a class="edit" title="Edit this page (requires approval -- just ask 
on the mailing list)" 
href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=21792220";>edit</a>
+      </div>
+
+      <div id="content">
+                <div id="ConfluenceContent"><p><strong>Component 
parameters</strong> are the primary means for a component instance and its 
container to communicate with each other. Parameters are used to 
<em>configure</em> component instances.</p><div class="aui-label" 
style="float:right; margin: 1em" title="Related Articles">
+
+
+
+
+
+
+
+
+
+
+<h3>Related Articles</h3>
+
+<ul class="content-by-label"><li>
+        <div>
+                <span class="icon aui-icon content-type-page" 
title="Page">Page:</span>        </div>
+
+        <div class="details">
+                        <a  href="component-parameters.html">Component 
Parameters</a>
+                
+                        
+                    </div>
+    </li><li>
+        <div>
+                <span class="icon aui-icon content-type-page" 
title="Page">Page:</span>        </div>
+
+        <div class="details">
+                        <a  href="component-templates.html">Component 
Templates</a>
+                
+                        
+                    </div>
+    </li><li>
+        <div>
+                <span class="icon aui-icon content-type-page" 
title="Page">Page:</span>        </div>
+
+        <div class="details">
+                        <a  href="component-classes.html">Component Classes</a>
+                
+                        
+                    </div>
+    </li><li>
+        <div>
+                <span class="icon aui-icon content-type-page" 
title="Page">Page:</span>        </div>
+
+        <div class="details">
+                        <a  href="templating-and-markup-faq.html">Templating 
and Markup FAQ</a>
+                
+                        
+                    </div>
+    </li><li>
+        <div>
+                <span class="icon aui-icon content-type-page" 
title="Page">Page:</span>        </div>
+
+        <div class="details">
+                        <a  href="page-and-component-classes-faq.html">Page 
And Component Classes FAQ</a>
+                
+                        
+                    </div>
+    </li><li>
+        <div>
+                <span class="icon aui-icon content-type-page" 
title="Page">Page:</span>        </div>
+
+        <div class="details">
+                        <a  
href="supporting-informal-parameters.html">Supporting Informal Parameters</a>
+                
+                        
+                    </div>
+    </li><li>
+        <div>
+                <span class="icon aui-icon content-type-page" 
title="Page">Page:</span>        </div>
+
+        <div class="details">
+                        <a  href="default-parameter.html">Default Parameter</a>
+                
+                        
+                    </div>
+    </li><li>
+        <div>
+                <span class="icon aui-icon content-type-page" 
title="Page">Page:</span>        </div>
+
+        <div class="details">
+                        <a  href="enum-parameter-recipe.html">Enum Parameter 
Recipe</a>
+                
+                        
+                    </div>
+    </li><li>
+        <div>
+                <span class="icon aui-icon content-type-page" 
title="Page">Page:</span>        </div>
+
+        <div class="details">
+                        <a  href="component-cheat-sheet.html">Component Cheat 
Sheet</a>
+                
+                        
+                    </div>
+    </li></ul>
+</div>
+
+
+<p>In the following example, <code>page</code> is a parameter of the 
<code>pagelink</code> component. The page parameter tells the pagelink 
component which page to go to when the user clicks on the rendered 
hyperlink:</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;html 
xmlns:t="http://tapestry.apache.org/schema/tapestry_5_4.xsd"&gt;
+    &lt;t:pagelink page="Index"&gt;Go Home&lt;/t:pagelink&gt;
+&lt;/html&gt;</pre>
+</div></div><p>A component may have any number of parameters. Each parameter 
has a specific name, a specific Java type (which may be a primitive value), and 
may be <em>optional</em> or <em>required</em>.</p><p>Within a component class, 
parameters are declared by using the @<a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/annotations/Parameter.html";>Parameter</a>
 annotation on a private field, as we'll see below.</p><p><span 
class="confluence-anchor-link" 
id="ComponentParameters-bindingparameters"></span></p><h1 
id="ComponentParameters-ParameterBindings">Parameter Bindings</h1><p>In 
Tapestry, a parameter is not a slot into which data is pushed: it is a 
<em>connection</em> between a field of the component (marked with the 
@Parameter annotation) and a property or resource of the component's container. 
(Components can be nested, so the container can be either the page or another 
component.)</p><div class="navmenu" style="float:right; backgr
 ound:white; margin:3px; padding:3px">
+<div class="panel" style="border-width: 1px;"><div class="panelHeader" 
style="border-bottom-width: 1px;"><b>Contents</b></div><div 
class="panelContent">
+<style type="text/css">/*<![CDATA[*/
+div.rbtoc1556043568341 {padding: 0px;}
+div.rbtoc1556043568341 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1556043568341 li {margin-left: 0px;padding-left: 0px;}
+
+/*]]>*/</style><div class="toc-macro rbtoc1556043568341">
+<ul class="toc-indentation"><li><a  
href="#ComponentParameters-ParameterBindings">Parameter Bindings</a></li><li><a 
 href="#ComponentParameters-BindingExpressions">Binding 
Expressions</a></li><li><a  
href="#ComponentParameters-@Parameterannotation">@Parameter 
annotation</a></li><li><a  
href="#ComponentParameters-Don'tusethe${...}syntax!">Don't use the ${...} 
syntax!</a></li><li><a  href="#ComponentParameters-InformalParameters">Informal 
Parameters</a></li><li><a  
href="#ComponentParameters-ParametersAreBi-Directional">Parameters Are 
Bi-Directional</a></li><li><a  
href="#ComponentParameters-InheritedParameterBindings">Inherited Parameter 
Bindings</a></li><li><a  
href="#ComponentParameters-ComputedParameterBindingDefaults">Computed Parameter 
Binding Defaults</a></li><li><a  
href="#ComponentParameters-UnboundParameters">Unbound Parameters</a></li><li><a 
 href="#ComponentParameters-ParameterTypeCoercion">Parameter Type 
Coercion</a></li><li><a  href="#ComponentParameters-ParameterNames">
 Parameter Names</a></li><li><a  
href="#ComponentParameters-DeterminingifBound">Determining if 
Bound</a></li><li><a  
href="#ComponentParameters-PublishingParameters">Publishing 
Parameters</a></li></ul>
+</div>
+</div></div></div>&#160;<p>The connection between a component and a property 
(or resource) of its container is called a <em>binding</em>. The binding is 
two-way: the component can read the bound property by reading its parameter 
field. Likewise, a component that updates its parameter field will update the 
bound property.</p><p>This is important in a lot of cases; for example a 
TextField component can read <em>and update</em> the property bound to its 
value parameter. It reads the value when rendering, but updates the value when 
the form is submitted.</p><p>The component listed below is a looping component; 
it renders its body a number of times, defined by its <code>start</code> and 
<code>end</code> parameters (which set the boundaries of the loop). The 
component can update a <code>result</code> parameter bound to a property of its 
container; it will automatically count up or down depending on whether 
<code>start</code> or <code>end</code> is larger.</p><div class="code panel 
pdl" st
 yle="border-width: 1px;"><div class="codeContent panelContent pdl">
+<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; 
gutter: false; theme: Default" data-theme="Default">package 
org.example.app.components;
+
+import org.apache.tapestry5.annotations.AfterRender;
+import org.apache.tapestry5.annotations.Parameter;
+import org.apache.tapestry5.annotations.SetupRender;
+
+public class Count
+{
+    @Parameter (value="1")
+    private int start;
+
+    @Parameter(required = true)
+    private int end;
+
+    @Parameter
+    private int result;
+
+    private boolean increment;
+
+    @SetupRender
+    void initializeValues()
+    {
+        result = start;
+        increment = start &lt; end;
+    }
+
+    @AfterRender
+    boolean next()
+    {
+        if (increment)
+        {
+            int newResult = value + 1;
+
+            if (newResult &lt;= end)
+            {
+                result = newResult;
+                return false;
+            }
+        }
+        else
+        {
+            int newResult= value - 1;
+            if (newResult&gt;= end)
+            {
+                result = newResult;
+                return false;
+            }
+        }
+        return true;
+    }
+}
+</pre>
+</div></div><p>The name of the parameter is the same as field name (except 
with leading "_" and "$" characters, if any, removed). Here, the parameter 
names are "start", "end" and "result".</p><p>The component above can be 
referenced in another component or page <a  
href="component-templates.html">template</a>, and its parameters 
<em>bound</em>:</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;html t:type="layout" 
xmlns:t="http://tapestry.apache.org/schema/tapestry_5_4.xsd"&gt;
+    &lt;p&gt; Merry Christmas: &lt;t:count end="3"&gt; Ho! &lt;/t:count&gt;
+    &lt;/p&gt;
+&lt;/html&gt;
+</pre>
+</div></div><p>The end attribute is used to <em>bind</em> the end parameter of 
the Count component. Here, it is being bound to the string value "3", which is 
automatically <a  href="type-coercion.html">coerced</a> by Tapestry into the 
int value, 3.</p><p>Any number of parameters may be bound this 
way.</p><p>Component parameters may also be bound using the @<a  
class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/annotations/Component.html";>Component</a>
 annotation inside the component class. (Where conflicts occur, the parameters 
bound using the Component annotation will take precedence over parameter 
bindings in the template.)</p><p><span class="confluence-anchor-link" 
id="ComponentParameters-binding-expressions"></span></p><h1 
id="ComponentParameters-BindingExpressions">Binding Expressions</h1><p>The 
value inside the template, "3" in the previous example, is a <em>binding 
expression</em>.</p><p>By placing a prefix in front of the value, you c
 an change how Tapestry interprets the remainder of the expression (the part 
after the colon):</p><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p><strong>Prefix</strong></p></th><th colspan="1" 
rowspan="1" 
class="confluenceTh"><p><strong>Description</strong></p></th></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p>asset:</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>The relative path to an asset file (which 
must exist)</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>block:</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>The id of a block within the 
template</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>component:</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>The id of another component within the same 
template</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>context:</p></td><td colspan="1" rowspan="1
 " class="confluenceTd"><p>Context asset: path from context 
root</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>literal:</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>A literal string</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p>nullfieldstrategy:</p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Used to locate a pre-defined <a  
class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/NullFieldStrategy.html";>NullFieldStrategy</a></p></td></tr><tr><td
 colspan="1" rowspan="1" class="confluenceTd"><p>message:</p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Retrieves a string from the 
component's <a  href="localization.html">message 
catalog</a></p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p>prop:</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>A <a  href="property-expressions.html">property 
expression</a> to read or update</p></td></tr><tr
 ><td colspan="1" rowspan="1" class="confluenceTd"><p>symbol:</p></td><td 
 >colspan="1" rowspan="1" class="confluenceTd"><p>Used to read one of your <a  
 >href="symbols.html">symbols</a></p></td></tr><tr><td colspan="1" rowspan="1" 
 >class="confluenceTd"><p>translate:</p></td><td colspan="1" rowspan="1" 
 >class="confluenceTd"><p>The name of a configured 
 >translator</p></td></tr><tr><td colspan="1" rowspan="1" 
 >class="confluenceTd"><p>validate:</p></td><td colspan="1" rowspan="1" 
 >class="confluenceTd"><p>A <em>validator specification</em> used to create 
 >some number of field validators</p></td></tr><tr><td colspan="1" rowspan="1" 
 >class="confluenceTd"><p>var:</p></td><td colspan="1" rowspan="1" 
 >class="confluenceTd"><p>Allows a render variable of the component to be read 
 >or updated</p></td></tr></tbody></table></div><p>Most of these binding 
 >prefixes allow parameters to be bound to read-only values; for instance a 
 >parameter bound to "message:some-key" will see the message for "some-key" 
 >from its con
 tainer's message catalog in the field. If the component tries to update the 
parameter (by setting the value of the field), a runtime exception will be 
thrown to indicate that the value is read-only.</p><p>Only prop: and var: 
binding prefixes are updateable (but you must <em>not</em> use the ${..} syntax 
here; see the <a  href="component-parameters.html">warning 
below</a>).</p><p>Each parameter has a default prefix, defined by the 
component, that is used when the prefix is not provided. The most common are 
"literal:" and "prop:".</p><p>A <em>special prefix</em>, "inherit:", is used to 
support <a  href="component-parameters.html">Inherited Parameter 
Bindings</a>.</p><h3 id="ComponentParameters-RenderVariables:Bindings">Render 
Variables: Bindings</h3><p>Components can have any number of <em>render 
variables</em>. Render variables are named values with no specific type (they 
are ultimately stored in a Map). Render variables are useful for holding simple 
values, such as loop indices, tha
 t need to be passed from one component to another.</p><p>For example, the 
following template code:</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;ul&gt;
+    &lt;li t:type="loop" source="1..10" value="index"&gt;${index}&lt;/li&gt;
+&lt;/ul&gt;
+</pre>
+</div></div><p>and the following Java code:</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">@Property
+private int index;
+</pre>
+</div></div><p>... could be rewritten as just:</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;ul&gt;
+    &lt;li t:type="loop" source="1..10" 
value="var:index"&gt;${var:index}&lt;/li&gt;
+&lt;/ul&gt;
+
+</pre>
+</div></div><p>In other words, you don't have to define a property in the Java 
code. The disadvantage is that render variables don't work with the property 
expression syntax, so you can pass around a render variable's <em>value</em> 
but you can't reference any of the value's properties.</p><p>Render variables 
are automatically cleared when a component finishes rendering.</p><p>Render 
variable names are case insensitive.</p><h3 
id="ComponentParameters-Property:Bindings">Property: Bindings</h3><p>Main 
Article: <a  href="property-expressions.html">Property 
Expressions</a></p><p>The "prop:" binding prefix indicates a property 
expression binding.</p><p>Property expressions are used to link a parameter of 
a component to a property of its container. Property expressions can navigate a 
series of properties and/or invoke methods, as well as several other useful 
patterns.</p><p>The default binding prefix in most cases is "prop:", which is 
why it is usually omitted.</p><h3 id="ComponentParamet
 ers-Validate:Bindings">Validate: Bindings</h3><p>Main Article: <a  
href="forms-and-validation.html">Forms and Validation</a></p><p>The "validate:" 
binding prefix is highly specialized. It allows a short string to be used to 
create and configure the objects that perform input validation for form control 
components, such as TextField and Checkbox.</p><p>The string is a 
comma-separated list of <em>validator types</em>. These are short aliases for 
objects that perform the validation. In many cases, the validation is 
configurable in some way: for example, a validator that enforces a minimum 
string length needs to know what that minimum string length is. Such values are 
specified after an equals sign.</p><p>For example: 
<code>validate:required,minLength=5</code> would presumably enforce that a 
field requires a value, and with at least five characters.</p><h3 
id="ComponentParameters-Translate:Bindings">Translate: Bindings</h3><p>The 
"translate:" binding prefix is also related to input vali
 dation. It is the name of a configured <a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/Translator.html";>Translator</a>,
 responsible for converting between server-side and client-side representations 
of data (for instance, between client-side strings and server-side numeric 
values).</p><p>The list of available translators is configured by the <a  
class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/TranslatorSource.html";>TranslatorSource</a>
 service.</p><h3 id="ComponentParameters-Asset:Bindings">Asset: 
Bindings</h3><p>Main Article: <a  href="assets.html">Assets</a></p><p>Assets 
bindings are used to specify <a  href="component-parameters.html">Component 
Parameters</a>, static content served by Tapestry. By default, assets are 
located relative to the component class in your packaged application or module. 
This can be overridden by prefixing the path with "context:", in which case, 
the path 
 is a context path from the root of the web application context. Because 
accessing context assets is relatively common, a separate "context:" binding 
prefix for that purpose exists (described below).</p><h3 
id="ComponentParameters-Context:Bindings">Context: Bindings</h3><p>Main 
Article: <a  href="assets.html">Assets</a></p><p>Context bindings are like 
asset bindings, but the path is <em>always</em> relative to the root of the web 
application context. This is intended for use inside templates, i.e.:</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;img 
src="${context:images/icon.png}"/&gt;
+</pre>
+</div></div><p>Tapestry will adjust the URL of the image so that it is 
processed by Tapestry, not the servlet container. It will gain a URL that 
includes the application's version number, it will have a far-future expires 
header, and (if the client supports it) its content will be compressed before 
being sent to the client.</p><h1 
id="ComponentParameters-@Parameterannotation">@Parameter annotation</h1><h3 
id="ComponentParameters-RequiredParameters">Required 
Parameters</h3><p>Parameters that are required <strong>must</strong> be bound. 
A runtime exception occurs if a component has unbound required 
parameters.</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 class Component{
+
+  @Parameter(required = true)
+  private String parameter;
+
+}</pre>
+</div></div><div class="confluence-information-macro 
confluence-information-macro-tip"><span class="aui-icon aui-icon-small 
aui-iconfont-approve confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>Sometimes a parameter is marked as 
required, but may still be omitted if the underlying value is provided by some 
other means. This is the case, for example, with the Select component's value 
parameter, which may have its underlying value set by <a  
href="using-select-with-a-list.html">contributing a ValueEncoderSource</a>. Be 
sure to read the component's parameter documentation carefully. Required simply 
enables checks that the parameter is bound, it does not mean that you must 
supply the binding in the template (or @Component 
annotation).</p></div></div><h3 
id="ComponentParameters-OptionalParameters">Optional 
Parameters</h3><p>Parameters are optional unless they are marked as 
required.</p><p>You may set a default value for optional parameters using
  the <code>value</code> element of the @Parameter annotation. In the Count 
component above, the start parameter has a default value of 1. That value is 
used unless the start parameter is bound, in which case, the bound value 
supersedes the default.</p><h3 
id="ComponentParameters-ParameterBindingDefaults">Parameter Binding 
Defaults</h3><p>The @Parameter annotation's <code>value</code> element can be 
used to specify a <em>binding expression</em> that will be the default binding 
for the parameter if otherwise left unbound. Typically, this is the name of a 
property that that will compute the value on the fly.</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">@Parameter(value="defaultMessage") // or, equivalently, 
@Parameter("defaultMessage")
+private String message;
+
+@Parameter(required=true)
+private int maxLength;
+
+public String getDefaultMessage(){&#160;
+       return String.format("Maximum field length is %d.", maxLength);
+}
+
+</pre>
+</div></div><p>As elsewhere, you may use a prefix on the value. A common 
prefix to use is the "message:" prefix, to access a localized message.</p><h3 
id="ComponentParameters-ParameterCaching">Parameter Caching</h3><p>Reading a 
parameter value can be marginally expensive (because of type coercion). 
Therefore, it makes sense to cache the parameter value, at least while the 
component is actively rendering itself.</p><p>In rare cases, it is desirable to 
defeat the caching; this can be done by setting the cache() attribute of the 
@Parameter annotation to false.</p><p><span class="confluence-anchor-link" 
id="ComponentParameters-dontUseSyntax"></span></p><h1 
id="ComponentParameters-Don'tusethe${...}syntax!">Don't use the ${...} 
syntax!</h1><p>Main Article: <a  
href="component-templates.html">Expansions</a></p><p>You generally should 
<em>not</em> use the Template Expansion syntax, ${...}, within component 
parameter bindings. Doing so results in the property inside the braces being 
converte
 d to an (immutable) string, and will therefore result in a runtime exception 
if your component needs to update the value (whenever the default or explicit 
binding prefix is <code>prop:</code> or <code>var:</code>, since such component 
parameters are <em>two-way</em> bindings).</p><div 
class="sectionColumnWrapper"><div class="sectionMacro"><div 
class="sectionMacroRow"><div class="columnMacro"><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeHeader panelHeader pdl" 
style="border-bottom-width: 1px;"><b>This is right</b></div><div 
class="codeContent panelContent pdl">
+<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: xml; 
gutter: false; theme: Default" data-theme="Default">&lt;t:textfield 
t:id="color" value="color"/&gt;
+</pre>
+</div></div></div><div class="columnMacro"><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeHeader panelHeader pdl" 
style="border-bottom-width: 1px;"><b>This is wrong</b></div><div 
class="codeContent panelContent pdl">
+<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: xml; 
gutter: false; theme: Default" data-theme="Default">&lt;t:textfield 
t:id="color" value="${color}"/&gt;
+</pre>
+</div></div></div></div></div></div><p>The general rule is, only use the 
${...} syntax in non-Tapestry-controlled locations in your template, such as in 
attributes of ordinary HTML elements and in plain-text areas of your 
template.</p><div class="sectionColumnWrapper"><div class="sectionMacro"><div 
class="sectionMacroRow"><div class="columnMacro"><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeHeader panelHeader pdl" 
style="border-bottom-width: 1px;"><b>This is right</b></div><div 
class="codeContent panelContent pdl">
+<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: xml; 
gutter: false; theme: Default" data-theme="Default">&lt;img 
src="${context:images/banner.png}"/&gt;
+</pre>
+</div></div></div><div class="columnMacro"><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeHeader panelHeader pdl" 
style="border-bottom-width: 1px;"><b>This is wrong</b></div><div 
class="codeContent panelContent pdl">
+<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: xml; 
gutter: false; theme: Default" data-theme="Default">&lt;img 
src="context:images/banner.png"/&gt;
+</pre>
+</div></div></div></div></div></div><h1 
id="ComponentParameters-InformalParameters">Informal Parameters</h1><p>Main 
Article: <a  href="supporting-informal-parameters.html">Supporting Informal 
Parameters</a></p><p>Many components support <em>informal parameters</em>, 
additional parameters beyond the formally defined parameters. Informal 
parameters will be rendered into the output as additional attributes on the tag 
rendered by the component. Generally speaking, components that have a 1:1 
relationship with a particular HTML tag (such as &lt;TextField&gt; and 
&lt;input&gt; will support informal parameters.</p><p>Only components whose 
class is annotated with @<a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/annotations/SupportsInformalParameters.html";>SupportsInformalParameters</a>
 will support informal parameters. Tapestry silently drops informal parameters 
that are specified for components that do not have this 
annotation.</p><p>Informal 
 parameters are often used to set the CSS class of an element, or to specify 
client-side event handlers.</p><p>The default binding prefix for informal 
parameters depends on <em>where</em> the parameter binding is specified. If the 
parameter is bound inside a Java class, within the @<a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/annotations/Component.html";>Component</a>
 annotation, then the default binding prefix is "prop:". If the parameter is 
bound inside the component template, then the default binding prefix is 
"literal:". This reflects the fact that a parameter specified in the Java 
class, using the annotation, is most likely a computed value, whereas a value 
in the template should simply be copied, as is, into the result HTML 
stream.</p><p>Informal parameters (if supported) are always rendered into the 
output <em>unless</em> they are bound to a property whose value is null. If the 
bound property is null then the parameter will <em
 >not</em> be present at all in the rendered output.</p><p>If your component 
 >should render informal parameters, just inject the <a  class="external-link" 
 >href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ComponentResources.html";>ComponentResources</a>
 > for your component and invoke the <code>renderInformalParameters()</code> 
 >method. See&#160;<a  href="supporting-informal-parameters.html">Supporting 
 >Informal Parameters</a> for an example of how to do this.</p><h1 
 >id="ComponentParameters-ParametersAreBi-Directional">Parameters Are 
 >Bi-Directional</h1><p>Parameters are not simply variables; each parameter 
 >represents a connection, or <em>binding</em>, between a component and a 
 >property of its container. When using the prop: binding prefix, the component 
 >can force changes <em>into</em> a property of its container, just by 
 >assigning a value to its own instance variable.</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:layout 
xmlns:t="http://tapestry.apache.org/schema/tapestry_5_4.xsd"&gt;
+    &lt;p&gt; Countdown:
+        &lt;t:count start="5" end="1" result="index"&gt;
+          ${index} ...
+        &lt;/t:count&gt;
+    &lt;/p&gt;
+&lt;/t:layout&gt;
+</pre>
+</div></div><p>Because the Count component updates its result parameter (the 
<code>result</code> field), the index property of the containing component is 
updated. Inside the Count's body, we output the current value of the index 
property, using the expansion <code>${index</code>}. The resulting output will 
look something like:</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;p&gt; Countdown: 5 
... 4 ... 3 ... 2 ... 1 ... &lt;/p&gt;
+</pre>
+</div></div><p>(Though the whitespace will be quite different.)</p><p>The 
relevant part is that components can read fixed values, or <em>live</em> 
properties of their container, and can <em>change</em> properties of their 
container as well.</p><h1 
id="ComponentParameters-InheritedParameterBindings">Inherited Parameter 
Bindings</h1><p>A special prefix, "inherit:" is used to identify the name of a 
parameter of the containing component. If the parameter is bound in the 
containing component, then it will be bound to the same value in the embedded 
component.</p><p>If the parameter is not bound in the containing component, 
then it will not be bound in the embedded component (and so, the embedded 
component may use a default binding).</p><p>Inherited bindings are useful for 
complex components; they are often used when an inner component has a default 
value for a parameter, and the outer component wants to make it possible to 
override that default.</p><div class="code panel pdl" style="borde
 r-width: 1px;"><div class="codeHeader panelHeader pdl" 
style="border-bottom-width: 1px;"><b>Index.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;html 
xmlns:t="http://tapestry.apache.org/schema/tapestry_5_4.xsd"&gt;
+  &lt;body&gt;
+    &lt;div t:type="layout" t:menuTitle="literal:The Title"&gt;
+      ...
+    &lt;/div&gt;
+  &lt;/body&gt;
+&lt;/html&gt;
+</pre>
+</div></div><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeHeader panelHeader pdl" style="border-bottom-width: 
1px;"><b>Layout.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;t:container 
xmlns:t="http://tapestry.apache.org/schema/tapestry_5_4.xsd"&gt;
+
+       &lt;div t:type="title" t:title="inherit:menuTitle"&gt;&lt;/div&gt;
+
+       &lt;t:body /&gt;
+
+&lt;/t:container&gt;
+</pre>
+</div></div><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeHeader panelHeader pdl" style="border-bottom-width: 
1px;"><b>Title.java</b></div><div class="codeContent panelContent pdl">
+<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; 
gutter: false; theme: Default" data-theme="Default">package 
org.example.app.components;
+
+import org.apache.tapestry5.annotations.Parameter;
+
+public class Title {
+
+       @Parameter
+       private String title;
+
+}
+</pre>
+</div></div><h1 
id="ComponentParameters-ComputedParameterBindingDefaults">Computed Parameter 
Binding Defaults</h1><p>In <em>rare</em> cases, you may want to compute the 
binding to be used as a parameter default. In this case, you will provide a 
<em>default binding method</em>, a method that takes no parameters. The 
returned value is used to bind the parameter. The return value may be a <a  
class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/Binding.html";>Binding</a>
 instance, or it may be a simple value (which is more often the 
case).</p><p>The method name is "default" plus the capitalized name of the 
parameter.</p><p>Using this approach, the previous example may be rewritten 
as:</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">  @Parameter
+  private String message;
+
+  @Parameter(required=true)
+  private int maxLength;
+
+  @Inject
+  private ComponentResources resources;
+
+  @Inject
+  private BindingSource bindingSource;
+
+  Binding defaultMessage()
+  {
+    return bindingSource.newBinding("default value", resources, 
"basicMessage");
+  }
+
+  public String getBasicMessage()
+  {
+    return String.format("Maximum field length is %d.", maxLength);
+  }
+</pre>
+</div></div><p>In this example, a property expression, "basicMessage", is used 
to access the message dynamically.</p><p>Alternately, the previous example may 
be written even more succinctly as:</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">  @Parameter
+  private String message;
+
+  @Parameter(required=true)
+  private int maxLength;
+
+  @Inject
+  private ComponentResources resources;
+
+  String defaultMessage()
+  {
+    return String.format("Maximum field length is %d.", maxLength);
+  }
+</pre>
+</div></div><p>This form is more like using the "literal:" binding prefix, 
except that the literal value is computed by the defaultMessage() 
method.</p><p>Obviously, this is a lot more work than simply specifying a 
default value as part of the @Parameter annotation. In the few real cases where 
this is approach is used, the default binding method will usually deduce a 
proper binding, typically in terms of the component's id. For example, the 
TextField component will deduce a value parameter that binds to a property of 
its container with the same name.</p><p>A default binding method will 
<em>only</em> be invoked if the @Parameter annotation does not provide a 
default value.</p><h1 id="ComponentParameters-UnboundParameters">Unbound 
Parameters</h1><p>If a parameter is not bound (and is optional), then the value 
may be read or <em>updated</em> at any time.</p><p>Updates to unbound 
parameters cause no side effects. In the first example, the value parameter of 
the Count component is not bo
 und, and this is perfectly valid.</p><p>Note: updates to such fields are 
temporary; when the component <em>finishes rendering</em>, the field will 
revert to its default value.</p><h1 
id="ComponentParameters-ParameterTypeCoercion">Parameter Type 
Coercion</h1><p>Main Article:&#160;<a  
href="parameter-type-coercion.html">Parameter Type Coercion</a></p><p>Tapestry 
includes a mechanism for <span class="confluence-link">coercing types 
automatically</span>. Most often, this is used to convert literal strings into 
appropriate values, but in many cases, more complex conversions will occur. 
This mechanism is used for component parameters, such as when an outer 
component passes a literal string to an inner component that is expecting an 
integer.</p><p>You can easily <a  href="type-coercion.html">contribute new 
coercions</a> for your own purposes.</p><h1 
id="ComponentParameters-ParameterNames">Parameter Names</h1><p>By default, 
Tapestry converts from the field name to the parameter name, by str
 ipping off leading "$" and "_" characters.</p><p>This can be overridden using 
the name() attribute of the @Parameter annotation.</p><h1 
id="ComponentParameters-DeterminingifBound">Determining if Bound</h1><p>In rare 
cases, you may want to take different behaviors based on whether a parameter is 
bound or not. This can be accomplished by querying the component's resources, 
which can be <a  href="injection.html">injected</a> into the component using 
the @<a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ioc/annotations/Inject.html";>Inject</a>
 annotation:</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 class MyComponent
+{
+  @Parameter
+  private int myParam;
+
+  @Inject
+  private ComponentResources componentResources;
+
+  @BeginRender
+  void setup()
+  {
+      if (componentResources.isBound("myParam"))
+      {
+        . . .
+      }
+  }
+}
+</pre>
+</div></div><p>The above sketch illustrates the approach. Because the 
parameter type is a primitive type, int, it is hard to distinguish between no 
binding, and binding explicitly to the value 0.</p><p>The @Inject annotation 
will inject the <a  class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/ComponentResources.html";>ComponentResources</a>
 for the component. These resources are the linkage between the Java class you 
provide, and the infrastructure Tapestry builds around your class. In any case, 
once the resources are injected, they can be queried.</p><h1 
id="ComponentParameters-PublishingParameters">Publishing 
Parameters</h1><p>Often when creating new components from existing components, 
you want to expose some of the functionality of the embedded component, in the 
form of exposing parameters of the embedded components as parameters of the 
outer component.</p><p>In Tapestry 5.0, you would define a parameter of the 
outer component, and use t
 he "inherit:" binding prefix to connect the inner component's parameter to the 
outer component's parameter. This is somewhat clumsy, as it involves creating 
an otherwise unused field just for the parameter; in practice it also leads to 
duplication of the documentation of the parameter.</p><p>In Tapestry 5.1 and 
later, you may use the publishParameters attribute of the @<a  
class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/annotations/Component.html";>Component</a>
 annotation. List one or more parameters separated by commas: those parameters 
of the inner/embedded component become parameters of the outer component. You 
should <strong>not</strong> define a parameter field in the outer 
component.</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeHeader panelHeader pdl" style="border-bottom-width: 
1px;"><b>ContainerComponent.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;t:container 
xmlns:t="http://tapestry.apache.org/schema/tapestry_5_4.xsd"&gt;
+&lt;t:pageLink t:id="link"&gt;Page Link&lt;/t:pageLink&gt;
+&lt;/t:container&gt;
+</pre>
+</div></div><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeHeader panelHeader pdl" style="border-bottom-width: 
1px;"><b>ContainerComponent.java</b></div><div class="codeContent panelContent 
pdl">
+<pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; 
gutter: false; theme: Default" data-theme="Default">public class 
ContainerComponent{
+    @Component(id="link", publishParameters="page")
+    private PageLink link;
+}
+</pre>
+</div></div><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeHeader panelHeader pdl" style="border-bottom-width: 
1px;"><b>Index.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;t:ContainerComponent 
t:id="Container" t:page="About" /&gt;
+</pre>
+</div></div><p>There are still cases where you want to use the "inherit:" 
binding prefix. For example, if you have several components that need to share 
a parameter, then you must do it the Tapestry 5.0 way: a true parameter on the 
outer component, and "inherit:" bindings on the embedded components. You can 
follow a similar pattern to rename a parameter in the outer 
component.</p><p></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>
+    </div>
+
+    <div id="comments_thread"></div>
+    <script type="text/javascript" 
src="https://comments.apache.org/show_comments.lua?site=tapestry&amp;page=http://tapestry.apache.org/component-parameters.html";
 async="true">
+    </script>
+    <noscript>
+      <iframe width="100%" height="500" 
src="https://comments.apache.org/iframe.lua?site=tapestry&amp;page=http://tapestry.apache.org/component-parameters.html";></iframe>
+    </noscript>
+
+  </div>
+
+</body>
+</html>

Modified: websites/production/tapestry/content/configuration.html
==============================================================================
--- websites/production/tapestry/content/configuration.html (original)
+++ websites/production/tapestry/content/configuration.html Tue Apr 23 18:20:37 
2019
@@ -149,11 +149,11 @@
 
 
 <h1 id="Configuration-ConfiguringTapestry">Configuring Tapestry</h1><p>This 
page discusses all the ways in which Tapestry can be configured. Tapestry 
applications are configured almost entirely using Java, with very little XML at 
all.</p><p><strong>Contents</strong></p><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1554045587712 {padding: 0px;}
-div.rbtoc1554045587712 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1554045587712 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1556043570611 {padding: 0px;}
+div.rbtoc1556043570611 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1556043570611 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1554045587712">
+/*]]>*/</style></p><div class="toc-macro rbtoc1556043570611">
 <ul class="toc-indentation"><li><a  
href="#Configuration-XMLconfiguration(web.xml)">XML configuration 
(web.xml)</a></li><li><a  
href="#Configuration-YourApplication'sModuleClass">Your Application's Module 
Class</a></li><li><a  
href="#Configuration-ConfigurationSymbolNames">Configuration Symbol 
Names</a></li><li><a  
href="#Configuration-SettingComponentParameterDefaults">Setting Component 
Parameter Defaults</a></li><li><a  
href="#Configuration-ConfiguringIgnoredPaths">Configuring Ignored 
Paths</a></li><li><a  
href="#Configuration-ConfiguringContentTypeMapping">Configuring Content Type 
Mapping</a></li><li><a  href="#Configuration-SettingExecutionModes">Setting 
Execution Modes</a></li><li><a  
href="#Configuration-SegregatingApplicationsIntoFolders">Segregating 
Applications Into Folders</a></li></ul>
 </div><h2 id="Configuration-XMLconfiguration(web.xml)">XML configuration 
(web.xml)</h2><p>Tapestry runs on top of the standard Java Servlet API. To the 
servlet container, such as Tomcat, Tapestry appears as a <em>servlet 
filter</em>. This gives Tapestry great flexibility in matching URLs without 
requiring lots of XML configuration.</p><p>Although most configuration is done 
with Java, a small but necessary amount of configuration occurs inside the 
servlet deployment descriptor, WEB-INF/web.xml. Most of the configuration is 
boilerplate, nearly the same for all applications.</p><div class="code panel 
pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" 
style="border-bottom-width: 1px;"><b>web.xml (partial)</b></div><div 
class="codeContent panelContent pdl">
 <pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: xml; 
gutter: false; theme: Default" data-theme="Default">&lt;!DOCTYPE web-app
@@ -529,17 +529,7 @@ div.rbtoc1554045587712 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><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>
+</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>
     </div>
 
     <div id="comments_thread"></div>

Modified: websites/production/tapestry/content/enum-parameter-recipe.html
==============================================================================
--- websites/production/tapestry/content/enum-parameter-recipe.html (original)
+++ websites/production/tapestry/content/enum-parameter-recipe.html Tue Apr 23 
18:20:37 2019
@@ -174,17 +174,7 @@
     
     <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><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>
+</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>
     </div>
 
     <div id="comments_thread"></div>

Modified: websites/production/tapestry/content/environmental-services.html
==============================================================================
--- websites/production/tapestry/content/environmental-services.html (original)
+++ websites/production/tapestry/content/environmental-services.html Tue Apr 23 
18:20:37 2019
@@ -134,17 +134,7 @@ public class Tab
     
     <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><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>
+</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>
     </div>
 
     <div id="comments_thread"></div>

Modified: websites/production/tapestry/content/error-page-recipe.html
==============================================================================
--- websites/production/tapestry/content/error-page-recipe.html (original)
+++ websites/production/tapestry/content/error-page-recipe.html Tue Apr 23 
18:20:37 2019
@@ -104,7 +104,7 @@
                 <span class="icon aui-icon content-type-page" 
title="Page">Page:</span>        </div>
 
         <div class="details">
-                        <a  href="specific-errors-faq.html">Specific Errors 
FAQ</a>
+                        <a  href="error-page-recipe.html">Error Page Recipe</a>
                 
                         
                     </div>
@@ -113,7 +113,7 @@
                 <span class="icon aui-icon content-type-page" 
title="Page">Page:</span>        </div>
 
         <div class="details">
-                        <a  href="error-page-recipe.html">Error Page Recipe</a>
+                        <a  href="specific-errors-faq.html">Specific Errors 
FAQ</a>
                 
                         
                     </div>
@@ -210,17 +210,7 @@ public class Error404
     
     <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><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>
+</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>
     </div>
 
     <div id="comments_thread"></div>

Modified: websites/production/tapestry/content/extending-the-if-component.html
==============================================================================
--- websites/production/tapestry/content/extending-the-if-component.html 
(original)
+++ websites/production/tapestry/content/extending-the-if-component.html Tue 
Apr 23 18:20:37 2019
@@ -139,17 +139,7 @@ private static &lt;S, T&gt; void add(Con
     
     <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><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>
+</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>
     </div>
 
     <div id="comments_thread"></div>

Modified: 
websites/production/tapestry/content/forms-and-form-components-faq.html
==============================================================================
--- websites/production/tapestry/content/forms-and-form-components-faq.html 
(original)
+++ websites/production/tapestry/content/forms-and-form-components-faq.html Tue 
Apr 23 18:20:37 2019
@@ -78,11 +78,11 @@
 
       <div id="content">
                 <div id="ConfluenceContent"><h1 
id="FormsandFormComponentsFAQ-FormsandFormComponents">Forms and Form 
Components</h1><p>Main article: <a  href="forms-and-validation.html">Forms and 
Validation</a></p><h2 
id="FormsandFormComponentsFAQ-Contents">Contents</h2><p><style 
type="text/css">/*<![CDATA[*/
-div.rbtoc1554045603711 {padding: 0px;}
-div.rbtoc1554045603711 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1554045603711 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1556043581037 {padding: 0px;}
+div.rbtoc1556043581037 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1556043581037 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1554045603711">
+/*]]>*/</style></p><div class="toc-macro rbtoc1556043581037">
 <ul class="toc-indentation"><li><a  
href="#FormsandFormComponentsFAQ-Whatisthet:formdatahiddenfieldfor?">What is 
the t:formdata hidden field for?</a></li><li><a  
href="#FormsandFormComponentsFAQ-HowdoIchangethelabelforafieldonthefly?">How do 
I change the label for a field on the fly?</a></li><li><a  
href="#FormsandFormComponentsFAQ-Tapestryfocusesonthewrongfieldinmyform,howdoIfixthat?">Tapestry
 focuses on the wrong field in my form, how do I fix that?</a></li></ul>
 </div><h2 
id="FormsandFormComponentsFAQ-Whatisthet:formdatahiddenfieldfor?">What is the 
<code>t:formdata</code> hidden field for?</h2><p>In Tapestry, rendering a form 
can be a complicated process; inside the body of the Form component are many of 
field components: TextField, Select, TextArea, and so forth. Each of these must 
pull data out of your data model and convert it to the string form used inside 
the client web browser. In addition, JavaScript to support client-side 
validation must be generated. This can be further complicated by the use of 
Loop and If components, or made really complicated by the use of Block (to 
render portions of other pages: this is what the BeanEditForm component 
does).</p><p>Along the way, the Form is generating unique form control names 
for each field component, as it renders.</p><p>When the client-side Form is 
submitted, an event is triggered on the server-side Form component. It now 
needs to locate each component, in turn, inform the component of its 
 control name, and allow the component to read the corresponding query 
parameter. The component then converts the client-side string back into a 
server-side value and performs validations before updating the data 
model.</p><p>That's where <code>t:formdata</code> comes in. While components 
are rendering, they are using the FormSupport environmental object to record 
callbacks:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeHeader panelHeader pdl" style="border-bottom-width: 
1px;"><b>FormSupport.java (partial)</b></div><div class="codeContent 
panelContent pdl">
 <pre class="syntaxhighlighter-pre" data-syntaxhighlighter-params="brush: java; 
gutter: true; theme: Default" data-theme="Default">public interface FormSupport 
extends ClientElement
@@ -127,17 +127,7 @@ div.rbtoc1554045603711 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><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>
+</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>
     </div>
 
     <div id="comments_thread"></div>

Modified: websites/production/tapestry/content/forms-and-validation.html
==============================================================================
--- websites/production/tapestry/content/forms-and-validation.html (original)
+++ websites/production/tapestry/content/forms-and-validation.html Tue Apr 23 
18:20:37 2019
@@ -122,11 +122,11 @@
 
 
 <p>&#160;</p><p>Tapestry provides support for creating and rendering forms, 
populating their fields, and validating user input. For simple cases, input 
validation is declarative, meaning you simply tell Tapestry what validations to 
apply to a given field, and it takes care of it on the server and (optionally) 
on the client as well. In addition, you can provide event handler 
methods&#160;in your page or component classes to handle more complex 
validation scenarios.</p><p>Finally, Tapestry not only makes it easy to present 
errors messages to the user, but it can also automatically highlight form 
fields when validation fails.</p><p><strong>Contents</strong></p><p><style 
type="text/css">/*<![CDATA[*/
-div.rbtoc1554045595722 {padding: 0px;}
-div.rbtoc1554045595722 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1554045595722 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1556043573600 {padding: 0px;}
+div.rbtoc1556043573600 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1556043573600 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1554045595722">
+/*]]>*/</style></p><div class="toc-macro rbtoc1556043573600">
 <ul class="toc-indentation"><li>Related Articles</li></ul>
 <ul><li><a  href="#FormsandValidation-TheFormComponent">The Form Component</a>
 <ul class="toc-indentation"><li><a  href="#FormsandValidation-FormEvents">Form 
Events</a></li><li><a  href="#FormsandValidation-HandlingEvents">Handling 
Events</a></li><li><a  
href="#FormsandValidation-TrackingValidationErrors">Tracking Validation 
Errors</a></li><li><a  
href="#FormsandValidation-StoringDataBetweenRequests">Storing Data Between 
Requests</a></li><li><a  
href="#FormsandValidation-ConfiguringFieldsandLabels">Configuring Fields and 
Labels</a></li></ul>
@@ -303,17 +303,7 @@ private String password;
     
     <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><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>
+</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>
     </div>
 
     <div id="comments_thread"></div>


Reply via email to