Author: buildbot
Date: Sun Nov 23 01:19:32 2014
New Revision: 930163

Log:
Production update by buildbot for tapestry

Modified:
    websites/production/tapestry/content/cache/main.pageCache
    websites/production/tapestry/content/exploring-the-project.html

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

Modified: websites/production/tapestry/content/exploring-the-project.html
==============================================================================
--- websites/production/tapestry/content/exploring-the-project.html (original)
+++ websites/production/tapestry/content/exploring-the-project.html Sun Nov 23 
01:19:32 2014
@@ -166,79 +166,7 @@ public class Index
     }
 }
 ]]></script>
-</div></div><p>There's a bit going on in this listing, as the Index page 
attempts to demonstrate a bunch of different ideas in Tapestry. Even so, the 
class is essentially pretty simple: Tapestry pages and components have no base 
classes to extend, no interfaces to implement, and are just a very pure POJO 
(Plain Old Java Object) ... with some special naming conventions and 
annotations for fields and methods.</p><p>You do have to meet the Tapestry 
framework partway:</p><ul><li>You need to put the Java class in the expected 
package, here com.example.tutorial.pages</li><li>The class must be 
public</li><li>You need to make sure there's a public, no-arguments constructor 
(here, the Java compiler has silently provided one for us)</li><li>All 
non-static fields must be <strong>private</strong></li></ul><p>As we saw when 
running the application, the page displays the current date and time, as well 
as a couple of extra links. The <code>currentTime</code> property is where that 
value comes from
 ; shortly we'll see how that value is referenced in the template, so it can be 
extracted from the page and output.</p><p>Tapestry always matches a page class 
to a template; neither is functional without the other. In fact, components 
within a page are treated the same way (except that components do not always 
have templates).</p><p>You will often hear about the <a shape="rect" 
class="external-link" href="http://en.wikipedia.org/wiki/Model_view_controller"; 
>Model-View-Controller pattern</a> (MVC). In Tapestry, the page class acts as 
both the Model (the source of data) and the controller (the logic that responds 
to user interaction). The template is the View in MVC. As a model, the page 
exposes JavaBeans properties that can be referenced in the 
template.</p><p>Let's look at how the component template builds on the Java 
class to provide the full user interface.</p><h1 
id="ExploringtheProject-ComponentTemplate">Component Template</h1><p>Tapestry 
pages are the combination of a POJO Java 
 class with a Tapestry component template. The template has the same name as 
the Java class, but has the extension <code>.tml</code>. Since the Java class 
here is com.example.tutorial.pages.Index, the template file will be located at 
src/main/resource/com/example/tutorial/pages/Index.tml. Ultimately, both the 
Java class and the component template file will be stored in the same folder 
within the deployed WAR file.</p><p>Tapestry component templates are 
well-formed XML documents. This means that you can use any available XML 
editor. Templates may even have a DOCTYPE or an XML schema to validate the 
structure of the template 
page</p><p>&#160;</p><p>&#160;</p><p>&#160;</p><p>&#160;</p>&lt;style 
type='text/css'&gt;
-.FootnoteMarker, .FootnoteNum a {
-  background: transparent 
url(/confluence/download/resources/com.adaptavist.confluence.footnoteMacros:footnote/gfx/footnote.png)
 no-repeat top right;
-  padding: 1px 2px 0px 1px;
-  border-left: 1px solid #8898B8;
-  border-bottom: 1px solid #6B7C9B;
-  margin: 1px;
-  text-decoration: none;
-}
-.FootnoteNum a {
-  margin-top: 2px;
-  margin-right: 0px;
-}
-.FootnoteNum {
-  font-size: x-small;
-  text-align: right;
-  padding-bottom: 4px;
-}
-.footnote-th1 {
-  text-align: right;
-}
-.Footnote {
-  padding-left: 7px;
-  margin-bottom: 4px;
-  border: 1px none #DDDDDD;
-  writingMode: tb-rl;
-}
-.accessibility {
-     display: none;
-     visibility: hidden;
-}
-@media aural,braille,embossed {
-        .FootnoteMarker, .FootnoteNum a {
-         border: 1px solid #000000;
-         background: #ffffff none;
-    }
-    .accessibility {
-         display: run-in;
-         visibility: visible;
-    }
-}
-&lt;/style&gt;
-&lt;script type='text/javascript' language='JavaScript'&gt;
-//&lt;!--\n
-var effectInProgress = {};
-var despamEffect = function (id,effectType,duration) {
-  if ((effectInProgress[id]) || (typeof(Effect)=="undefined") || 
(typeof(Effect[effectType])=="undefined")) return;
-  new Effect[effectType](id);
-  effectInProgress[id]=true;
-  setTimeout('effectInProgress[\"'+id+'\"]=false;',duration*1000);
-};
-var oldFootnoteId = '';
-var footnoteHighlight = function(id,pulsateNum) {
-  if (oldFootnoteId!='') 
document.getElementById('Footnote'+oldFootnoteId).style['borderStyle'] = 'none';
-  oldFootnoteId = id;
-  document.getElementById('Footnote'+id).style['borderStyle'] = 'solid';
-  despamEffect('Footnote'+id,'Highlight',1)
-  if (pulsateNum) despamEffect('FootnoteNum'+id,'Pulsate',3)
-}
-var footnoteMarkerHighlight = function(id) {
-  if (oldFootnoteId!='') 
document.getElementById('Footnote'+oldFootnoteId).style['borderStyle'] = 'none';
-  oldFootnoteId = '';
-  despamEffect('FootnoteMarker'+id,'Pulsate',3)
-}
-//--&gt;
-&lt;/script&gt;
-
-<sup id="FootnoteMarker1">
-    <a shape="rect" class="FootnoteMarker" name="FootnoteMarker1" 
href="#Footnote1" onclick="footnoteHighlight(&quot;1&quot;,true);" 
alt="Footnote: Click here to display the footnote" title="Footnote: Click here 
to display the footnote">
-            1
-    </a>
-</sup>
-<p>&#160;</p><p>&#160;</p><p>&#160;</p><p>&#160;</p><p>.</p><p>&#160;</p><p>For
 the most part, a Tapestry component template looks like ordinary 
XHTML:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeHeader panelHeader pdl" style="border-bottom-width: 
1px;"><b>src/main/resources/com/example/tutorial/pages/Index.tml</b></div><div 
class="codeContent panelContent pdl">
+</div></div><p>There's a bit going on in this listing, as the Index page 
attempts to demonstrate a bunch of different ideas in Tapestry. Even so, the 
class is essentially pretty simple: Tapestry pages and components have no base 
classes to extend, no interfaces to implement, and are just a very pure POJO 
(Plain Old Java Object) ... with some special naming conventions and 
annotations for fields and methods.</p><p>You do have to meet the Tapestry 
framework partway:</p><ul><li>You need to put the Java class in the expected 
package, here com.example.tutorial.pages</li><li>The class must be 
public</li><li>You need to make sure there's a public, no-arguments constructor 
(here, the Java compiler has silently provided one for us)</li><li>All 
non-static fields must be <strong>private</strong></li></ul><p>As we saw when 
running the application, the page displays the current date and time, as well 
as a couple of extra links. The <code>currentTime</code> property is where that 
value comes from
 ; shortly we'll see how that value is referenced in the template, so it can be 
extracted from the page and output.</p><p>Tapestry always matches a page class 
to a template; neither is functional without the other. In fact, components 
within a page are treated the same way (except that components do not always 
have templates).</p><p>You will often hear about the <a shape="rect" 
class="external-link" href="http://en.wikipedia.org/wiki/Model_view_controller"; 
>Model-View-Controller pattern</a> (MVC). In Tapestry, the page class acts as 
both the Model (the source of data) and the controller (the logic that responds 
to user interaction). The template is the View in MVC. As a model, the page 
exposes JavaBeans properties that can be referenced in the 
template.</p><p>Let's look at how the component template builds on the Java 
class to provide the full user interface.</p><h1 
id="ExploringtheProject-ComponentTemplate">Component Template</h1><p>Tapestry 
pages are the combination of a POJO Java 
 class with a Tapestry component template. The template has the same name as 
the Java class, but has the extension <code>.tml</code>. Since the Java class 
here is com.example.tutorial.pages.Index, the template file will be located at 
src/main/resource/com/example/tutorial/pages/Index.tml. Ultimately, both the 
Java class and the component template file will be stored in the same folder 
within the deployed WAR file.</p><p>Tapestry component templates are 
well-formed XML documents. This means that you can use any available XML 
editor. Templates may even have a DOCTYPE or an XML schema to validate the 
structure of the template page.</p><p><em>Note that Tapestry parses component 
templates using a non-validating parser; it only checks for well-formedness: 
proper syntax, balanced elements, attribute values are quoted, and so forth. It 
is reasonable for your build process to perform some kind of template 
validation, but Tapestry accepts the template as-is, as long as it parses 
cleanly.</em><
 /p><p>For the most part, a Tapestry component template looks like ordinary 
XHTML:</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeHeader panelHeader pdl" style="border-bottom-width: 
1px;"><b>src/main/resources/com/example/tutorial/pages/Index.tml</b></div><div 
class="codeContent panelContent pdl">
 <script class="theme: Default; brush: xml; gutter: false" 
type="syntaxhighlighter"><![CDATA[&lt;html t:type=&quot;layout&quot; 
title=&quot;tutorial1 Index&quot;
       t:sidebarTitle=&quot;Framework Version&quot;
       xmlns:t=&quot;http://tapestry.apache.org/schema/tapestry_5_3.xsd&quot;
@@ -288,16 +216,10 @@ var footnoteMarkerHighlight = function(i
                             <p>You do have to name your component template 
file, Index.tml, with the <strong>exact same case</strong> as the component 
class name, Index. If you get the case wrong, it may work on some operating 
systems (such as Mac OS X, Windows) and not on others (Linux, and most others). 
This can be really vexing, as it is common to develop on Windows and deploy on 
Linux or Solaris, so be careful about case in this one area.</p>
                     </div>
     </div>
-<p>The goal in Tapestry is for component templates, such as Index.tml, to look 
as much as possible like ordinary, static HTML 
files</p><p>&#160;</p><p>&#160;</p><p>&#160;</p><p>&#160;</p>
-<sup id="FootnoteMarker2">
-    <a shape="rect" class="FootnoteMarker" name="FootnoteMarker2" 
href="#Footnote2" onclick="footnoteHighlight(&quot;2&quot;,true);" 
alt="Footnote: Click here to display the footnote" title="Footnote: Click here 
to display the footnote">
-            2
-    </a>
-</sup>
-<p>&#160;</p><p>&#160;</p><p>&#160;</p><p>&#160;</p><p>. In fact, the 
expectation is that in many cases, the templates will start as static HTML 
files, created by a web developer, and then be <em>instrumented</em> to act as 
live Tapestry pages.</p><p>&#160;</p><p>Tapestry hides non-standard elements 
and attributes inside XML namespaces. By convention, the prefix "t:" is used 
for the primary namespace, but that is not a requirement, any prefix you want 
to use is fine.</p><p>This short template demonstrates quite a few features of 
Tapestry.</p>    <div class="aui-message problem shadowed information-macro">
+<p>The goal in Tapestry is for component templates, such as Index.tml, to look 
as much as possible like ordinary, static HTML files. (By static, we mean 
unchanging, as opposed to a dynamically generated Tapestry page.)</p><p>In 
fact, the expectation is that in many cases, the templates will start as static 
HTML files, created by a web developer, and then be <em>instrumented</em> to 
act as live Tapestry pages.</p><p>Tapestry hides non-standard elements and 
attributes inside XML namespaces. By convention, the prefix "t:" is used for 
the primary namespace, but that is not a requirement, any prefix you want to 
use is fine.</p><p>This short template demonstrates quite a few features of 
Tapestry.</p>    <div class="aui-message problem shadowed information-macro">
                             <span class="aui-icon icon-problem">Icon</span>
                 <div class="message-content">
-                            <p>Part of the concept of the quickstart archetype 
is to demonstrate a bunch of different features, approaches and common patterns 
used in Tapestry, thus we're hitting you with a lot all at once.</p>
+                            <p>Part of the concept of the quickstart archetype 
is to demonstrate a bunch of different features, approaches, and common 
patterns used in Tapestry. So yes, we're hitting you with a lot all at once.</p>
                     </div>
     </div>
 <p>First of all, there are two XML namespaces defined:</p><div class="code 
panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
@@ -313,37 +235,19 @@ var footnoteMarkerHighlight = function(i
                             <p>If you are coming to Tapestry 5 from Tapestry 4 
or earlier, expansions are a concise replacement for the Insert component.</p>
                     </div>
     </div>
-<p>The value inside the curly braces is a <em>property expression</em>. 
Tapestry uses its own property expression language that is expressive, fast, 
and type-safe</p><p>&#160;</p><p>&#160;</p><p>&#160;</p><p>&#160;</p>
-<sup id="FootnoteMarker3">
-    <a shape="rect" class="FootnoteMarker" name="FootnoteMarker3" 
href="#Footnote3" onclick="footnoteHighlight(&quot;3&quot;,true);" 
alt="Footnote: Click here to display the footnote" title="Footnote: Click here 
to display the footnote">
-            3
-    </a>
-</sup>
-<p>&#160;</p><p>&#160;</p><p>&#160;</p><p>&#160;</p><p>. More advanced 
property expressions can traverse multiple properties (for example, 
<code>user.address.city</code>), or even invoke public methods. Here the 
expansion simply reads the <code>currentTime</code> property of the 
page.</p><p>&#160;</p><p>Tapestry follows the rules defined by Sun's JavaBeans 
specification: a property name of <code>currentTime</code> maps to two methods: 
<code>getCurrentTime()</code> and <code>setCurrentTime()</code>. If you omit 
one or the other of these methods, the property is either read only (as here), 
or write only</p><p>&#160;</p><p>&#160;</p><p>&#160;</p><p>&#160;</p>
-<sup id="FootnoteMarker4">
-    <a shape="rect" class="FootnoteMarker" name="FootnoteMarker4" 
href="#Footnote4" onclick="footnoteHighlight(&quot;4&quot;,true);" 
alt="Footnote: Click here to display the footnote" title="Footnote: Click here 
to display the footnote">
-            4
-    </a>
-</sup>
-<p>&#160;</p><p>&#160;</p><p>&#160;</p><p>&#160;</p><p>.</p><p>&#160;</p><p>Tapestry
 does go one step further: it ignores case when matching properties inside the 
expansion to properties of the page. In the template we could say 
${currenttime} or ${CurrentTime} or any variation, and Tapestry will 
<em>still</em> invoke the <code>getCurrentTime()</code> method.</p><p>Note that 
in Tapestry it is not necessary to configure what object holds the 
<code>currentTime</code> property; a template and a page are always used in 
combination with each other; expressions are always rooted in the page 
instance, in this case, an instance of the Index class.</p><p>The Index.tml 
template includes a second expansion:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<p>The value inside the curly braces is a <em>property expression</em>. 
Tapestry uses its own property expression language that is expressive, fast, 
and type-safe.</p>    <div class="aui-message warning shadowed 
information-macro">
+                            <span class="aui-icon icon-warning">Icon</span>
+                <div class="message-content">
+                            <pre>Tapestry does _not_ use reflection to 
implement property expressions.</pre>
+                    </div>
+    </div>
+<p>More advanced property expressions can traverse multiple properties (for 
example, <code>user.address.city</code>), or even invoke public methods. Here 
the expansion simply reads the <code>currentTime</code> property of the 
page.</p><p>Tapestry follows the rules defined by Sun's JavaBeans 
specification: a property name of <code>currentTime</code> maps to two methods: 
<code>getCurrentTime()</code> and <code>setCurrentTime()</code>. If you omit 
one or the other of these methods, the property is either read only (as here), 
or write only. (Keep in mind that as far as JavaBeans properties go, it's the 
<em>methods</em> that count; the names of the instance variables, or even 
whether they exist, is immaterial.)</p><p>Tapestry does go one step further: it 
ignores case when matching properties inside the expansion to properties of the 
page. In the template we could say ${currenttime} or ${CurrentTime} or any 
variation, and Tapestry will <em>still</em> invoke the 
<code>getCurrentTime()</cod
 e> method.</p><p>Note that in Tapestry it is not necessary to configure what 
object holds the <code>currentTime</code> property; a template and a page are 
always used in combination with each other; expressions are always rooted in 
the page instance, in this case, an instance of the Index class.</p><p>The 
Index.tml template includes a second expansion:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="theme: Default; brush: xml; gutter: false" 
type="syntaxhighlighter"><![CDATA[    &lt;p&gt;${message:greeting}&lt;/p&gt;
 ]]></script>
-</div></div><p>Here <code>greeting</code> is not a property of the page; its 
actually a localized message key. Every Tapestry page and component is allowed 
to have its own message 
catalog</p><p>&#160;</p><p>&#160;</p><p>&#160;</p><p>&#160;</p>
-<sup id="FootnoteMarker5">
-    <a shape="rect" class="FootnoteMarker" name="FootnoteMarker5" 
href="#Footnote5" onclick="footnoteHighlight(&quot;5&quot;,true);" 
alt="Footnote: Click here to display the footnote" title="Footnote: Click here 
to display the footnote">
-            5
-    </a>
-</sup>
-<p>&#160;</p><p>&#160;</p><p>&#160;</p><p>&#160;</p><p>.</p><p>&#160;</p><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeHeader 
panelHeader pdl" style="border-bottom-width: 
1px;"><b>src/main/resources/com/example/tutorial/pages/Index.properties</b></div><div
 class="codeContent panelContent pdl">
+</div></div><p>Here <code>greeting</code> is not a property of the page; its 
actually a localized message key. Every Tapestry page and component is allowed 
to have its own message catalog. (There's also a global message catalog, 
<em>which we'll describe later</em>.)</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeHeader panelHeader pdl" 
style="border-bottom-width: 
1px;"><b>src/main/resources/com/example/tutorial/pages/Index.properties</b></div><div
 class="codeContent panelContent pdl">
 <script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[greeting=Welcome to Tapestry 5!  We hope that 
this project template will get you going in style.
 ]]></script>
-</div></div><p>Message catalogs are useful for storing repeating strings 
outside of code or templates, though their primary purpose is related to 
localization of the application (which will be described in more detail in a 
later chapter). Messages that may be used across multiple pages can be stored 
in the application's global message catalog, 
src/main/webapp/WEB-INF/app.properties, instead.</p><p>This "message:" prefix 
is not some special case; there are actually quite a few of these <em>binding 
prefixes</em> built into Tapestry, each having a specific purpose. In fact, 
omitting a binding prefix in an expansion is exactly the same as using the 
"prop:" binding prefix, which means to treat the binding as a property 
expression.</p><p>Expansions are useful for extracting a piece of information 
and rendering it out to the client as a string, but the real heavy lifting of 
Tapestry occurs inside components.</p><h1 
id="ExploringtheProject-ComponentsInsideTemplates">Components Inside Templa
 tes</h1><p>Components can be represented inside a component template in two 
ways</p><p>&#160;</p><p>&#160;</p><p>&#160;</p><p>&#160;</p>
-<sup id="FootnoteMarker6">
-    <a shape="rect" class="FootnoteMarker" name="FootnoteMarker6" 
href="#Footnote6" onclick="footnoteHighlight(&quot;6&quot;,true);" 
alt="Footnote: Click here to display the footnote" title="Footnote: Click here 
to display the footnote">
-            6
-    </a>
-</sup>
-<p>&#160;</p><p>&#160;</p><p>&#160;</p><p>&#160;</p><p>:</p><p>&#160;</p><ul><li>As
 an ordinary element, but with a t:type attribute to define the type of 
component.</li></ul><ul><li>As an element in the Tapestry namespace, in which 
case the element name determines the type.</li></ul><p>Here we've used an 
&lt;html&gt; element to represent the application's Layout component.</p><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+</div></div><p>Message catalogs are useful for storing repeating strings 
outside of code or templates, though their primary purpose is related to 
localization of the application (which will be described in more detail in a 
later chapter). Messages that may be used across multiple pages can be stored 
in the application's global message catalog, 
src/main/webapp/WEB-INF/app.properties, instead.</p><p>This "message:" prefix 
is not some special case; there are actually quite a few of these <em>binding 
prefixes</em> built into Tapestry, each having a specific purpose. In fact, 
omitting a binding prefix in an expansion is exactly the same as using the 
"prop:" binding prefix, which means to treat the binding as a property 
expression.</p><p>Expansions are useful for extracting a piece of information 
and rendering it out to the client as a string, but the real heavy lifting of 
Tapestry occurs inside components.</p><h1 
id="ExploringtheProject-ComponentsInsideTemplates">Components Inside Templa
 tes</h1><p>Components can be represented inside a component template in two 
ways:</p><ul><li>As an ordinary element, but with a t:type attribute to define 
the type of component.</li></ul><ul><li>As an element in the Tapestry 
namespace, in which case the element name determines the type.</li></ul><p>Here 
we've used an &lt;html&gt; element to represent the application's Layout 
component.</p><div class="code panel pdl" style="border-width: 1px;"><div 
class="codeContent panelContent pdl">
 <script class="theme: Default; brush: xml; gutter: false" 
type="syntaxhighlighter"><![CDATA[&lt;html t:type=&quot;layout&quot; ...&gt; 
   ...
 &lt;/html&gt;
@@ -360,13 +264,13 @@ var footnoteMarkerHighlight = function(i
 
 
 
-<span class="gliffy-container" id="gliffy-container-24346949-7996" 
data-fullwidth="913" data-ceoid="24188263" 
data-edit="${diagramEditLink.getLinkUrl()}" 
data-full="/confluence/plugins/gliffy/viewer.action?inline=false&amp;attachmentId=24346949&amp;attachmentVersion=2&amp;lastPage=%2Fpages%2Fviewpage.action%3FpageId%3D24188263"
 data-filename="Templates and Parameters">
+<span class="gliffy-container" id="gliffy-container-24346949-1602" 
data-fullwidth="913" data-ceoid="24188263" 
data-edit="${diagramEditLink.getLinkUrl()}" 
data-full="/confluence/plugins/gliffy/viewer.action?inline=false&amp;attachmentId=24346949&amp;attachmentVersion=2&amp;lastPage=%2Fpages%2Fviewpage.action%3FpageId%3D24188263"
 data-filename="Templates and Parameters">
 
-    <map id="gliffy-map-24346949-6882" name="gliffy-map-24346949-6882"></map>
+    <map id="gliffy-map-24346949-8372" name="gliffy-map-24346949-8372"></map>
 
-    <img class="gliffy-image gliffy-image-border" 
id="gliffy-image-24346949-7996" width="304" height="300" data-full-width="913" 
data-full-height="901" 
src="https://cwiki.apache.org/confluence/download/attachments/24188263/Templates%20and%20Parameters.png?version=2&amp;modificationDate=1371888025000&amp;api=v2";
 alt="Templates and Parameters" usemap="#gliffy-map-24346949-6882">
+    <img class="gliffy-image gliffy-image-border" 
id="gliffy-image-24346949-1602" width="304" height="300" data-full-width="913" 
data-full-height="901" 
src="https://cwiki.apache.org/confluence/download/attachments/24188263/Templates%20and%20Parameters.png?version=2&amp;modificationDate=1371888025000&amp;api=v2";
 alt="Templates and Parameters" usemap="#gliffy-map-24346949-8372">
 
-    <map class="gliffy-dynamic" id="gliffy-dynamic-map-24346949-7996" 
name="gliffy-dynamic-map-24346949-7996"></map>
+    <map class="gliffy-dynamic" id="gliffy-dynamic-map-24346949-1602" 
name="gliffy-dynamic-map-24346949-1602"></map>
 </span>
 
 
@@ -393,44 +297,7 @@ var footnoteMarkerHighlight = function(i
                             <p>This level of detail reflects that the 
application has been configured to run in <em>development mode</em> instead of 
<em>production mode</em>. In production mode, the exception report would simply 
be the top level exception message. However, most production applications go 
further and customize how Tapestry handles and reports exceptions.</p>
                     </div>
     </div>
-<p>There was a bunch of other stuff on this page, related to links and Ajax 
and other things, that we'll ignore for the 
moment.</p><hr><p>&#160;</p><p>&#160;</p><p>&#160;</p><p>&#160;</p><p><table 
class="Footnotes" style="width: 100%; border:none;" cellspacing="0" 
cellpadding="0" summary="This table contains one or more notes for references 
made elsewhere on the page."><caption 
class="accessibility">Footnotes</caption><thead class="accessibility"><tr 
class="accessibility"><th colspan="1" rowspan="1" class="accessibility" 
id="footnote-th1">Reference</th><th colspan="1" rowspan="1" 
class="accessibility" id="footnote-th2">Notes</th></tr></thead><tbody><tr 
name="Footnote1"><td colspan="1" rowspan="1" valign="top" class="FootnoteNum" 
headings="footnote-th1">
-        <a shape="rect" id="FootnoteNum1" href="#FootnoteMarker1" 
onclick="footnoteMarkerHighlight(&quot;1&quot;);" 
onmouseover="footnoteHighlight(&quot;1&quot;,false);" alt="Footnote: Click to 
return to reference in text" title="Footnote: Click to return to reference in 
text">
-            1
-        </a>
-      </td><td colspan="1" rowspan="1" valign="top" class="Footnote" 
id="Footnote1" width="100%" headings="footnote-th2">
-          Tapestry parses component templates using a non-validating parser; 
it only checks for well-formedness: proper syntax, balanced elements, attribute 
values are quoted, and so forth. It is reasonable for your <em>build 
process</em> to perform some kind of template validation, but Tapestry accepts 
the template as-is, as long as it parses cleanly.
-
-<p>      </p></td></tr><tr name="Footnote2"><td colspan="1" rowspan="1" 
valign="top" class="FootnoteNum" headings="footnote-th1">
-        <a shape="rect" id="FootnoteNum2" href="#FootnoteMarker2" 
onclick="footnoteMarkerHighlight(&quot;2&quot;);" 
onmouseover="footnoteHighlight(&quot;2&quot;,false);" alt="Footnote: Click to 
return to reference in text" title="Footnote: Click to return to reference in 
text">
-            2
-        </a>
-      </td><td colspan="1" rowspan="1" valign="top" class="Footnote" 
id="Footnote2" width="100%" headings="footnote-th2">
-          By static, we mean unchanging, as opposed to a dynamically generated 
Tapestry page.
-      </td></tr><tr name="Footnote3"><td colspan="1" rowspan="1" valign="top" 
class="FootnoteNum" headings="footnote-th1">
-        <a shape="rect" id="FootnoteNum3" href="#FootnoteMarker3" 
onclick="footnoteMarkerHighlight(&quot;3&quot;);" 
onmouseover="footnoteHighlight(&quot;3&quot;,false);" alt="Footnote: Click to 
return to reference in text" title="Footnote: Click to return to reference in 
text">
-            3
-        </a>
-      </td><td colspan="1" rowspan="1" valign="top" class="Footnote" 
id="Footnote3" width="100%" headings="footnote-th2">
-          Tapestry does <em>not</em> use reflection to implement property 
expressions.
-      </td></tr><tr name="Footnote4"><td colspan="1" rowspan="1" valign="top" 
class="FootnoteNum" headings="footnote-th1">
-        <a shape="rect" id="FootnoteNum4" href="#FootnoteMarker4" 
onclick="footnoteMarkerHighlight(&quot;4&quot;);" 
onmouseover="footnoteHighlight(&quot;4&quot;,false);" alt="Footnote: Click to 
return to reference in text" title="Footnote: Click to return to reference in 
text">
-            4
-        </a>
-      </td><td colspan="1" rowspan="1" valign="top" class="Footnote" 
id="Footnote4" width="100%" headings="footnote-th2">
-          Keep in mind that as far as JavaBeans properties go, it's the 
<em>methods</em> that count; the names of the instance variables, or even 
whether they exist, is immaterial.
-      </td></tr><tr name="Footnote5"><td colspan="1" rowspan="1" valign="top" 
class="FootnoteNum" headings="footnote-th1">
-        <a shape="rect" id="FootnoteNum5" href="#FootnoteMarker5" 
onclick="footnoteMarkerHighlight(&quot;5&quot;);" 
onmouseover="footnoteHighlight(&quot;5&quot;,false);" alt="Footnote: Click to 
return to reference in text" title="Footnote: Click to return to reference in 
text">
-            5
-        </a>
-      </td><td colspan="1" rowspan="1" valign="top" class="Footnote" 
id="Footnote5" width="100%" headings="footnote-th2">
-          There's also a global message catalog, which we'll describe later.
-      </td></tr><tr name="Footnote6"><td colspan="1" rowspan="1" valign="top" 
class="FootnoteNum" headings="footnote-th1">
-        <a shape="rect" id="FootnoteNum6" href="#FootnoteMarker6" 
onclick="footnoteMarkerHighlight(&quot;6&quot;);" 
onmouseover="footnoteHighlight(&quot;6&quot;,false);" alt="Footnote: Click to 
return to reference in text" title="Footnote: Click to return to reference in 
text">
-            6
-        </a>
-      </td><td colspan="1" rowspan="1" valign="top" class="Footnote" 
id="Footnote6" width="100%" headings="footnote-th2">
-          Ok, there's a third way as well, which will be discussed in good 
time.
-      
</td></tr></tbody></table></p><p>&#160;</p><p>&#160;</p><p>&#160;</p><style 
type="text/css">/*<![CDATA[*/
+<p>There was a bunch of other stuff on this page, related to links and Ajax 
and other things, that we'll ignore for the moment.</p><hr><p>&#160;</p><style 
type="text/css">/*<![CDATA[*/
 table.ScrollbarTable  {border: none;padding: 3px;width: 100%;padding: 
3px;margin: 0px;background-color: #f0f0f0}
 table.ScrollbarTable td.ScrollbarPrevIcon {text-align: center;width: 
16px;border: none;}
 table.ScrollbarTable td.ScrollbarPrevName {text-align: left;border: none;}


Reply via email to