Modified: websites/production/tapestry/content/templating-and-markup-faq.html
==============================================================================
--- websites/production/tapestry/content/templating-and-markup-faq.html 
(original)
+++ websites/production/tapestry/content/templating-and-markup-faq.html Sat Jan 
18 19:20:52 2014
@@ -29,6 +29,8 @@
   <link 
href='http://cxf.apache.org/resources/highlighter/styles/shThemeCXF.css' 
rel='stylesheet' type='text/css' />
   <script src='http://cxf.apache.org/resources/highlighter/scripts/shCore.js' 
type='text/javascript'></script>
   <script 
src='http://cxf.apache.org/resources/highlighter/scripts/shBrushJava.js' 
type='text/javascript'></script>
+  <script 
src='http://cxf.apache.org/resources/highlighter/scripts/shBrushXml.js' 
type='text/javascript'></script>
+  <script 
src='http://cxf.apache.org/resources/highlighter/scripts/shBrushPlain.js' 
type='text/javascript'></script>
   <script type="text/javascript">
   SyntaxHighlighter.defaults['toolbar'] = false;
   SyntaxHighlighter.all();
@@ -77,40 +79,14 @@ table.ScrollbarTable td.ScrollbarParent 
 table.ScrollbarTable td.ScrollbarNextName {text-align: right;border: none;}
 table.ScrollbarTable td.ScrollbarNextIcon {text-align: center;width: 
16px;border: none;}
 
-/*]]>*/</style><div class="Scrollbar"><table class="ScrollbarTable"><tr><td 
colspan="1" rowspan="1" class="ScrollbarPrevIcon"><a shape="rect" 
href="general-questions.html"><img align="middle" border="0" 
src="https://cwiki.apache.org/confluence/images/icons/back_16.gif"; width="16" 
height="16"></a></td><td colspan="1" rowspan="1" class="ScrollbarPrevName" 
width="33%"><a shape="rect" href="general-questions.html">General 
Questions</a>&#160;</td><td colspan="1" rowspan="1" class="ScrollbarParent" 
width="33%"><sup><a shape="rect" href="frequently-asked-questions.html"><img 
align="middle" border="0" 
src="https://cwiki.apache.org/confluence/images/icons/up_16.gif"; width="8" 
height="8"></a></sup><a shape="rect" 
href="frequently-asked-questions.html">Frequently Asked Questions</a></td><td 
colspan="1" rowspan="1" class="ScrollbarNextName" width="33%">&#160;<a 
shape="rect" href="page-and-component-classes-faq.html">Page And Component 
Classes FAQ</a></td><td colspan="1" rowspan="1" class="Scrol
 lbarNextIcon"><a shape="rect" href="page-and-component-classes-faq.html"><img 
align="middle" border="0" 
src="https://cwiki.apache.org/confluence/images/icons/forwd_16.gif"; width="16" 
height="16"></a></td></tr></table></div>
-
-<h2 id="TemplatingandMarkupFAQ-TemplatingandMarkup">Templating and Markup</h2>
-
-<p>Main Article: <a shape="rect" href="component-templates.html">Component 
Templates</a></p>
-
-<h3 
id="TemplatingandMarkupFAQ-WhydoIgetaSAXParseExceptionwhenIuseanHTMLentity,suchas&amp;nbsp;inmytemplate?">Why
 do I get a SAXParseException when I use an HTML entity, such as 
<code>&amp;nbsp;</code> in my template?</h3>
-
-<p>Tapestry uses a standard SAX parser to read your templates. This means that 
your templates must be <em>well formed</em>: open and close tags must balance, 
attribute values must be quoted, and entities must be declared. The easiest way 
to accomplish this is to add a DOCTYPE to your the top of your template:</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<script class="theme: Default; brush: java; gutter: true" 
type="syntaxhighlighter"><![CDATA[
-&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot;
+/*]]>*/</style><div class="Scrollbar"><table class="ScrollbarTable"><tr><td 
colspan="1" rowspan="1" class="ScrollbarPrevIcon"><a shape="rect" 
href="general-questions.html"><img align="middle" border="0" 
src="https://cwiki.apache.org/confluence/images/icons/back_16.gif"; width="16" 
height="16"></a></td><td colspan="1" rowspan="1" class="ScrollbarPrevName" 
width="33%"><a shape="rect" href="general-questions.html">General 
Questions</a>&#160;</td><td colspan="1" rowspan="1" class="ScrollbarParent" 
width="33%"><sup><a shape="rect" href="frequently-asked-questions.html"><img 
align="middle" border="0" 
src="https://cwiki.apache.org/confluence/images/icons/up_16.gif"; width="8" 
height="8"></a></sup><a shape="rect" 
href="frequently-asked-questions.html">Frequently Asked Questions</a></td><td 
colspan="1" rowspan="1" class="ScrollbarNextName" width="33%">&#160;<a 
shape="rect" href="page-and-component-classes-faq.html">Page And Component 
Classes FAQ</a></td><td colspan="1" rowspan="1" class="Scrol
 lbarNextIcon"><a shape="rect" href="page-and-component-classes-faq.html"><img 
align="middle" border="0" 
src="https://cwiki.apache.org/confluence/images/icons/forwd_16.gif"; width="16" 
height="16"></a></td></tr></table></div><h2 
id="TemplatingandMarkupFAQ-TemplatingandMarkup">Templating and 
Markup</h2><p>Main Article: <a shape="rect" 
href="component-templates.html">Component Templates</a></p><h3 
id="TemplatingandMarkupFAQ-WhydoIgetaSAXParseExceptionwhenIuseanHTMLentity,suchas&amp;nbsp;inmytemplate?">Why
 do I get a SAXParseException when I use an HTML entity, such as 
<code>&amp;nbsp;</code> in my template?</h3><p>Tapestry uses a standard SAX 
parser to read your templates. This means that your templates must be <em>well 
formed</em>: open and close tags must balance, attribute values must be quoted, 
and entities must be declared. The easiest way to accomplish this is to add a 
DOCTYPE to your the top of your template:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="c
 odeContent panelContent pdl">
+<script class="theme: Default; brush: xml; gutter: false" 
type="syntaxhighlighter"><![CDATA[&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD 
XHTML 1.0 Strict//EN&quot;
    &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;
 ]]></script>
-</div></div>
-
-<p>Part of the DOCTYPE is the declaration of entities such as 
<code>&amp;nbsp;</code>.</p>
-
-<p>Alternately, you can simply use the numeric version: 
<code>&amp;#160</code>;  This is the exact same character and will render 
identically in the browser.</p>
-
-<p>Starting in release 5.3, Tapestry introduces an XHTML doctype when no 
doctype is present; this means that common HTML entities will work 
correctly.</p>
-
-<h3 
id="TemplatingandMarkupFAQ-Whydosomeimagesinmypageshowupasbrokenlinks?">Why do 
some images in my page show up as broken links?</h3>
-
-<p>You have to be careful when using relative URLs inside page templates; the 
base URL may not always be what you expect.  For example, inside your 
<code>ViewUser.tml</code> file, you may have:</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<script class="theme: Default; brush: java; gutter: true" 
type="syntaxhighlighter"><![CDATA[
-  &lt;img class=&quot;icon&quot; 
src=&quot;icons/admin.png&quot;/&gt;${user.name} has Administrative access
+</div></div><p>Part of the DOCTYPE is the declaration of entities such as 
<code>&amp;nbsp;</code>.</p><p>Alternately, you can simply use the numeric 
version: <code>&amp;#160</code>; This is the exact same character and will 
render identically in the browser.</p><p>Starting in release 5.3, Tapestry 
introduces an XHTML doctype when no doctype is present; this means that common 
HTML entities will work correctly.</p><h3 
id="TemplatingandMarkupFAQ-Whydosomeimagesinmypageshowupasbrokenlinks?">Why do 
some images in my page show up as broken links?</h3><p>You have to be careful 
when using relative URLs inside page templates; the base URL may not always be 
what you expect. For example, inside your <code>ViewUser.tml</code> file, you 
may have:</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;img class=&quot;icon&quot; 
src=&quot;icons/admin.png&quot;/&gt;${user.name} has Administrative access
 ]]></script>
-</div></div>
-
-<p>This makes sense; <code>ViewUser.tml</code> is in the web context, as is 
the <code>icons</code> folder.  The default URL for this page will be 
<code>/viewuser</code></p><p>&lt;style type='text/css'&gt;
+</div></div><p>This makes sense; <code>ViewUser.tml</code> is in the web 
context, as is the <code>icons</code> folder. The default URL for this page 
will be <code>/viewuser</code></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;
@@ -182,13 +158,8 @@ var footnoteMarkerHighlight = function(i
             1
     </a>
 </sup>
-</p><p></p>
-
-<p>However, most likely, the ViewUser page has a page activation context to 
identify which user is to be displayed:</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<script class="theme: Default; brush: java; gutter: true" 
type="syntaxhighlighter"><![CDATA[
-public class ViewUser
+<p>&#160;</p><p>However, most likely, the ViewUser page has a page activation 
context to identify which user is to be displayed:</p><div class="code panel 
pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[public class ViewUser
 
   @Property
   @PageActivationContext
@@ -196,126 +167,47 @@ public class ViewUser
 
   . . .
 ]]></script>
-</div></div>
-
-<p>With a page activation context, the URL for the page will incorporate the 
id of the User object, something like <code>/viewuser/37371</code>.  This is 
why the relative URLs to the <code>admin.png</code> image is broken: the base 
path is relative to the page's URL, not to the page template</p><p>
+</div></div><p>With a page activation context, the URL for the page will 
incorporate the id of the User object, something like 
<code>/viewuser/37371</code>. This is why the relative URLs to the 
<code>admin.png</code> image is broken: the base path is relative to the page's 
URL, not to the page template</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>.<p></p>
-
-<p>One solution would be to predict what the page URL will be, and adjust the 
path for that:</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<script class="theme: Default; brush: java; gutter: true" 
type="syntaxhighlighter"><![CDATA[
-  &lt;img class=&quot;icon&quot; 
src=&quot;../icons/admin.png&quot;/&gt;${user.name} has Administrative access
+<p>.</p><p>&#160;</p><p>One solution would be to predict what the page URL 
will be, and adjust the path for that:</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;img class=&quot;icon&quot; 
src=&quot;../icons/admin.png&quot;/&gt;${user.name} has Administrative access
 ]]></script>
-</div></div>
-
-<p>But this has its own problems; the page activation context may vary in 
length at different times, or the template in question may be a component used 
across many different pages, making it difficult to predict what the correct 
relative URL would be.</p>
-
-<p>The <em>best</em> solution for this situation, one that will be sure to 
work in all pages and all components, is to make use of the 
<code>context:</code> binding prefix:</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<script class="theme: Default; brush: java; gutter: true" 
type="syntaxhighlighter"><![CDATA[
-  &lt;img class=&quot;icon&quot; 
src=&quot;${context:icons/admin.png}&quot;/&gt;${user.name} has Administrative 
access
+</div></div><p>But this has its own problems; the page activation context may 
vary in length at different times, or the template in question may be a 
component used across many different pages, making it difficult to predict what 
the correct relative URL would be.</p><p>The <em>best</em> solution for this 
situation, one that will be sure to work in all pages and all components, is to 
make use of the <code>context:</code> binding prefix:</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;img class=&quot;icon&quot; 
src=&quot;${context:icons/admin.png}&quot;/&gt;${user.name} has Administrative 
access
 ]]></script>
-</div></div>
-
-<p>The src attribute of the &lt;img&gt; tag will now be bound to a dynamically 
computed value: the location of the image file relative to the web application 
context. This is especially important for components that may be used on 
different pages.</p>
-
-<h3 id="TemplatingandMarkupFAQ-What'sthedifferencebetweenidandt:id?">What's 
the difference between <code>id</code> and <code>t:id</code>?</h3>
-
-<p>You might occasionally see something like the following in a template:</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<script class="theme: Default; brush: java; gutter: true" 
type="syntaxhighlighter"><![CDATA[
-&lt;t:zone id=&quot;status&quot; t:id=&quot;statusZone&quot;&gt;
+</div></div><p>The src attribute of the &lt;img&gt; tag will now be bound to a 
dynamically computed value: the location of the image file relative to the web 
application context. This is especially important for components that may be 
used on different pages.</p><h3 
id="TemplatingandMarkupFAQ-What'sthedifferencebetweenidandt:id?">What's the 
difference between <code>id</code> and <code>t:id</code>?</h3><p>You might 
occasionally see something like the following in a template:</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;t:zone id=&quot;status&quot; 
t:id=&quot;statusZone&quot;&gt;
 ]]></script>
-</div></div>
-
-<p>Why two ids?  Why are they different?</p>
-
-<p>The <code>t:id</code> attribute is the Tapestry component id. This id is 
unique within its immediate container.  This is the id you might use to inject 
the component into your page class:</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<script class="theme: Default; brush: java; gutter: true" 
type="syntaxhighlighter"><![CDATA[
-  @InjectComponent
+</div></div><p>Why two ids? Why are they different?</p><p>The 
<code>t:id</code> attribute is the Tapestry component id. This id is unique 
within its immediate container. This is the id you might use to inject the 
component into your page class:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[  @InjectComponent
   private Zone statusZone;
 ]]></script>
-</div></div>
-
-<p>The other id is the client id, a unique id for the rendered element within 
the client-side DOM. JavaScript that needs to access the element uses this id.  
For example:</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<script class="theme: Default; brush: java; gutter: true" 
type="syntaxhighlighter"><![CDATA[
-  $(&#39;status&#39;).hide();
+</div></div><p>The other id is the client id, a unique id for the rendered 
element within the client-side DOM. JavaScript that needs to access the element 
uses this id. For example:</p><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: text; gutter: false" 
type="syntaxhighlighter"><![CDATA[  $(&#39;status&#39;).hide();
 ]]></script>
-</div></div>
-
-<p>In many components, the <code>id</code> attribute is an informal parameter; 
a value from the template that is blindly echoed into the output document.  In 
other cases, the component itself has an <code>id</code> attribute.  Often, in 
the latter case, the Tapestry component id is the <em>default</em> value for 
the client id.</p>
-
-
-<h3 
id="TemplatingandMarkupFAQ-WhydomyimagesandstylesheetsendupwithaweirdURLslike/assets/eea17aee26bc0cae/ctx/layout/layout.css?">Why
 do my images and stylesheets end up with a weird URLs like 
<code>/assets/eea17aee26bc0cae/ctx/layout/layout.css</code>?</h3>
-
-<p>Tapestry doesn't rely on the servlet container to serve up your static 
assets (images, stylesheets, flash movies, etc.).  Instead, Tapestry processes 
the requests itself, streaming assets to the browser.</p>
-
-<p>Asset content will be GZIP compressed (if the client supports compression, 
and the content is compressible). In addition, Tapestry will set a far-future 
expires header on the content. This means that the browser will not ask for the 
file again, greatly reducing network traffic.</p>
-
-<p>The weird hex string is a random application version number.  A new one is 
chosen every time the application starts up.</p>
-
-<p>This is necessary so that, if an asset changes in place, browsers will 
download the new version.  Because the application version number has changed, 
it represents a new asset to browsers, who will download the new version, even 
if the old version was previously downloaded (remember the far future expires 
header).</p>
-
-<p>By the time your application is ready for production, you should manage the 
application version number directly:</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader 
panelHeader pdl" style="border-bottom-width: 1px;"><b>AppModule.java 
(partial)</b></div><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: true" 
type="syntaxhighlighter"><![CDATA[
-       public static void contributeApplicationDefaults(
+</div></div><p>In many components, the <code>id</code> attribute is an 
informal parameter; a value from the template that is blindly echoed into the 
output document. In other cases, the component itself has an <code>id</code> 
attribute. Often, in the latter case, the Tapestry component id is the 
<em>default</em> value for the client id.</p><h3 
id="TemplatingandMarkupFAQ-WhydomyimagesandstylesheetsendupwithaweirdURLslike/assets/eea17aee26bc0cae/ctx/layout/layout.css?">Why
 do my images and stylesheets end up with a weird URLs like 
<code>/assets/eea17aee26bc0cae/ctx/layout/layout.css</code>?</h3><p>Tapestry 
doesn't rely on the servlet container to serve up your static assets (images, 
stylesheets, flash movies, etc.). Instead, Tapestry processes the requests 
itself, streaming assets to the browser.</p><p>Asset content will be GZIP 
compressed (if the client supports compression, and the content is 
compressible). In addition, Tapestry will set a far-future expires header on 
the content. T
 his means that the browser will not ask for the file again, greatly reducing 
network traffic.</p><p>The weird hex string is a random application version 
number. A new one is chosen every time the application starts up.</p><p>This is 
necessary so that, if an asset changes in place, browsers will download the new 
version. Because the application version number has changed, it represents a 
new asset to browsers, who will download the new version, even if the old 
version was previously downloaded (remember the far future expires 
header).</p><p>By the time your application is ready for production, you should 
manage the application version number directly:</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeHeader panelHeader pdl" 
style="border-bottom-width: 1px;"><b>AppModule.java (partial)</b></div><div 
class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[  public static void 
contributeApplicationDefaults(
                        MappedConfiguration&lt;String, String&gt; 
configuration) {
                configuration.add(SymbolConstants.APPLICATION_VERSION, 
&quot;1.7.5&quot;);
        }
 ]]></script>
-</div></div>
-
-<p>You should be careful to change the application version number for each new 
deployment of your application; otherwise returning users may be stuck with old 
versions of assets that have changed in the interim.  This kind of mismatch can 
cause visual annoyances for style sheets or image files, but can break 
client-side behavior for changed JavaScript libraries.</p>
-
-<h3 id="TemplatingandMarkupFAQ-HowdoIaddaCSSclasstoaTapestrycomponent?">How do 
I add a CSS class to a Tapestry component?</h3>
-
-<p>As they say, "just do it".  The majority of Tapestry components support 
<em>informal parameters</em>, meaning that any extra attributes in the element 
(in the template) will be rendered out as additional attributes.  So, you can 
apply a CSS class or style quite easily:</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<script class="theme: Default; brush: java; gutter: true" 
type="syntaxhighlighter"><![CDATA[
-  &lt;t:textfield t:id=&quot;username&quot; class=&quot;big-green&quot;/&gt;
+</div></div><p>You should be careful to change the application version number 
for each new deployment of your application; otherwise returning users may be 
stuck with old versions of assets that have changed in the interim. This kind 
of mismatch can cause visual annoyances for style sheets or image files, but 
can break client-side behavior for changed JavaScript libraries.</p><h3 
id="TemplatingandMarkupFAQ-HowdoIaddaCSSclasstoaTapestrycomponent?">How do I 
add a CSS class to a Tapestry component?</h3><p>As they say, "just do it". The 
majority of Tapestry components support <em>informal parameters</em>, meaning 
that any extra attributes in the element (in the template) will be rendered out 
as additional attributes. So, you can apply a CSS class or style quite 
easily:</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;t:textfield t:id=&quot;username&quot; 
class=&quot;big-green&quot;/&gt;
 ]]></script>
-</div></div>
-
-<p>You can even use template expansions inside the attribute value:</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<script class="theme: Default; brush: java; gutter: true" 
type="syntaxhighlighter"><![CDATA[
-  &lt;t:textfield t:id=&quot;username&quot; 
class=&quot;${usernameClass}&quot;/&gt;
+</div></div><p>You can even use template expansions inside the attribute 
value:</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;t:textfield t:id=&quot;username&quot; 
class=&quot;${usernameClass}&quot;/&gt;
 ]]></script>
-</div></div>
-
-<p>and</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
-<script class="theme: Default; brush: java; gutter: true" 
type="syntaxhighlighter"><![CDATA[
-  public String getUsernameClass() 
+</div></div><p>and</p><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[  public String getUsernameClass() 
   {
     return isUrgent() ? &quot;urgent&quot; : null;
   }
 ]]></script>
-</div></div>
-
-<p>When an informal parameter is bound to null, then the attribute is not 
written out at all.</p>
-
-<p>You can verify which components support informal parameters by checking the 
component reference, or looking for the @<a shape="rect" class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/annotations/SupportsInformalParameters.html";>SupportsInformalParameters</a>
 annotation in the components' source file.</p>
-
-
-<style type="text/css">/*<![CDATA[*/
+</div></div><p>When an informal parameter is bound to null, then the attribute 
is not written out at all.</p><p>You can verify which components support 
informal parameters by checking the component reference, or looking for the @<a 
shape="rect" class="external-link" 
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/annotations/SupportsInformalParameters.html";>SupportsInformalParameters</a>
 annotation in the components' source file.</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;}
@@ -323,10 +215,7 @@ table.ScrollbarTable td.ScrollbarParent 
 table.ScrollbarTable td.ScrollbarNextName {text-align: right;border: none;}
 table.ScrollbarTable td.ScrollbarNextIcon {text-align: center;width: 
16px;border: none;}
 
-/*]]>*/</style><div class="Scrollbar"><table class="ScrollbarTable"><tr><td 
colspan="1" rowspan="1" class="ScrollbarPrevIcon"><a shape="rect" 
href="general-questions.html"><img align="middle" border="0" 
src="https://cwiki.apache.org/confluence/images/icons/back_16.gif"; width="16" 
height="16"></a></td><td colspan="1" rowspan="1" class="ScrollbarPrevName" 
width="33%"><a shape="rect" href="general-questions.html">General 
Questions</a>&#160;</td><td colspan="1" rowspan="1" class="ScrollbarParent" 
width="33%"><sup><a shape="rect" href="frequently-asked-questions.html"><img 
align="middle" border="0" 
src="https://cwiki.apache.org/confluence/images/icons/up_16.gif"; width="8" 
height="8"></a></sup><a shape="rect" 
href="frequently-asked-questions.html">Frequently Asked Questions</a></td><td 
colspan="1" rowspan="1" class="ScrollbarNextName" width="33%">&#160;<a 
shape="rect" href="page-and-component-classes-faq.html">Page And Component 
Classes FAQ</a></td><td colspan="1" rowspan="1" class="Scrol
 lbarNextIcon"><a shape="rect" href="page-and-component-classes-faq.html"><img 
align="middle" border="0" 
src="https://cwiki.apache.org/confluence/images/icons/forwd_16.gif"; width="16" 
height="16"></a></td></tr></table></div>
-
-<hr>
-<p></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">
+/*]]>*/</style><div class="Scrollbar"><table class="ScrollbarTable"><tr><td 
colspan="1" rowspan="1" class="ScrollbarPrevIcon"><a shape="rect" 
href="general-questions.html"><img align="middle" border="0" 
src="https://cwiki.apache.org/confluence/images/icons/back_16.gif"; width="16" 
height="16"></a></td><td colspan="1" rowspan="1" class="ScrollbarPrevName" 
width="33%"><a shape="rect" href="general-questions.html">General 
Questions</a>&#160;</td><td colspan="1" rowspan="1" class="ScrollbarParent" 
width="33%"><sup><a shape="rect" href="frequently-asked-questions.html"><img 
align="middle" border="0" 
src="https://cwiki.apache.org/confluence/images/icons/up_16.gif"; width="8" 
height="8"></a></sup><a shape="rect" 
href="frequently-asked-questions.html">Frequently Asked Questions</a></td><td 
colspan="1" rowspan="1" class="ScrollbarNextName" width="33%">&#160;<a 
shape="rect" href="page-and-component-classes-faq.html">Page And Component 
Classes FAQ</a></td><td colspan="1" rowspan="1" class="Scrol
 lbarNextIcon"><a shape="rect" href="page-and-component-classes-faq.html"><img 
align="middle" border="0" 
src="https://cwiki.apache.org/confluence/images/icons/forwd_16.gif"; width="16" 
height="16"></a></td></tr></table></div><p>&#160;</p><p>&#160;</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>
@@ -338,7 +227,7 @@ table.ScrollbarTable td.ScrollbarNextIco
         </a>
       </td><td colspan="1" rowspan="1" valign="top" class="Footnote" 
id="Footnote2" width="100%" headings="footnote-th2">
           In fact, the page template may not even be in the web context, it 
may be stored on the classpath, as component templates are.
-      </td></tr></tbody></table></p><p></p></div>
+      </td></tr></tbody></table></div>
 </div>
 
 <div class="clearer"></div>


Reply via email to