Author: buildbot
Date: Sat Feb 3 18:21:36 2018
New Revision: 1024785
Log:
Production update by buildbot for tapestry
Modified:
websites/production/tapestry/content/about.html
websites/production/tapestry/content/ajax-components-faq.html
websites/production/tapestry/content/application-module-class-cheat-sheet.html
websites/production/tapestry/content/beaneditform-faq.html
websites/production/tapestry/content/building-tapestry-from-source.html
websites/production/tapestry/content/cache/main.pageCache
websites/production/tapestry/content/component-cheat-sheet.html
websites/production/tapestry/content/component-events-faq.html
websites/production/tapestry/content/confluence-site-setup.html
websites/production/tapestry/content/default-parameter.html
websites/production/tapestry/content/developer-bible.html
websites/production/tapestry/content/enum-parameter-recipe.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/general-questions.html
websites/production/tapestry/content/google-app-engine.html
websites/production/tapestry/content/hibernate-support-faq.html
websites/production/tapestry/content/how-to-upgrade.html
websites/production/tapestry/content/injection-faq.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/javascript-rewrite-in-54.html
websites/production/tapestry/content/limitations.html
websites/production/tapestry/content/maven-support-faq.html
websites/production/tapestry/content/meta-programming-page-content.html
websites/production/tapestry/content/overriding-exception-reporting.html
websites/production/tapestry/content/page-and-component-classes-faq.html
websites/production/tapestry/content/performance-and-clustering.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-538.html
websites/production/tapestry/content/release-notes-54.html
websites/production/tapestry/content/release-notes-541.html
websites/production/tapestry/content/release-notes-542.html
websites/production/tapestry/content/release-notes-543.html
websites/production/tapestry/content/release-process.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/since-and-deprecated-user-macros.html
websites/production/tapestry/content/specific-errors-faq.html
websites/production/tapestry/content/support.html
websites/production/tapestry/content/supporting-informal-parameters.html
websites/production/tapestry/content/switching-cases.html
websites/production/tapestry/content/tapestry-for-jsf-users.html
websites/production/tapestry/content/tapestry-inversion-of-control-faq.html
websites/production/tapestry/content/templating-and-markup-faq.html
websites/production/tapestry/content/the-tapestry-jail.html
websites/production/tapestry/content/using-select-with-a-list.html
websites/production/tapestry/content/version-numbers.html
Modified: websites/production/tapestry/content/about.html
==============================================================================
--- websites/production/tapestry/content/about.html (original)
+++ websites/production/tapestry/content/about.html Sat Feb 3 18:21:36 2018
@@ -139,7 +139,7 @@
<h2 id="About-TrainingandSupport">Training and Support</h2>
-Apache Tapestry is an open source project and as such, supported by the
community. Even if you are looking for commercial support, your best bet for
support is to first subscribe to Apache Tapestry user mailing list and ask
there. Read more about how to <a href="community.html">get involved</a>.<h3
id="About-CommercialTrainingandSupport">Commercial Training and
Support</h3><p>Training on Tapestry and Support is available directly from the
source: the Tapestry project committers:</p><ul><li><a class="external-link"
href="http://www.arsmachina.com.br/services" rel="nofollow">Thiago H. de Paula
Figueriredo</a>: Provides training and support on Tapestry and related
technologies including Spring and Hibernate</li></ul><h3
id="About-CommunitySupport">Community Support</h3><p>Like all Apache projects,
Tapestry uses mailing lists for most communication. You can subscribe by
sending e-mail to the addresses below. For each list, there are subscribe,
unsubscribe, and archive links. All Tapes
try users are welcome to subscribe to any of these lists, however questions on
how to <em>use</em> Tapestry in your application are best sent to the
<em>user</em> mailing list.</p><p>Please note that the Nabble archives are set
to read-only and don't allow for posting or answering using Nabble's web
interface. You have to subscribe to the mailing list in order to post.</p><div
class="table-wrap"><table class="confluenceTable"><tbody><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p> </p></td><th colspan="1" rowspan="1"
class="confluenceTh"><p>Subscribe</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Unsubscribe</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Apache Archive</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Nabble Archive</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>MarkMail Archive</p></th></tr><tr><th colspan="1"
rowspan="1" class="confluenceTh"><p>Tapestry User List</p></th><td colspan="1"
rowspan="1" clas
s="confluenceTd"><p><a class="external-link"
href="mailto:[email protected]"
rel="nofollow">Subscribe</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><a class="external-link"
href="mailto:[email protected]"
rel="nofollow">Unsubscribe</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><a class="external-link"
href="http://mail-archives.apache.org/mod_mbox/tapestry-users/">mail-archives.apache.org</a></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a class="external-link"
href="http://tapestry.1045711.n5.nabble.com/Tapestry-User-f2375125.html"
rel="nofollow">www.nabble.com</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><a class="external-link"
href="http://tapestry.markmail.org/search/?q=list%3Aorg.apache.tapestry.users"
rel="nofollow">tapestry.markmail.org</a></p></td></tr><tr><th colspan="1"
rowspan="1" class="confluenceTh"><p>Tapestry Developer List</p></th><td
colspan="1" rowspan=
"1" class="confluenceTd"><p><a class="external-link"
href="mailto:[email protected]"
rel="nofollow">Subscribe</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><a class="external-link"
href="mailto:[email protected]"
rel="nofollow">Unsubscribe</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><a class="external-link"
href="http://mail-archives.apache.org/mod_mbox/tapestry-dev/">mail-archives.apache.org</a></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a class="external-link"
href="http://tapestry.1045711.n5.nabble.com/Tapestry-Dev-f2438278.html"
rel="nofollow">www.nabble.com</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><a class="external-link"
href="http://tapestry.markmail.org/search/?q=list%3Aorg.apache.tapestry.dev"
rel="nofollow">tapestry.markmail.org</a></p></td></tr><tr><th colspan="1"
rowspan="1" class="confluenceTh"><p>Tapestry Commits List</p></th><td
colspan="1" rowspan="1"
class="confluenceTd"><p><a class="external-link"
href="mailto:[email protected]"
rel="nofollow">Subscribe</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><a class="external-link"
href="mailto:[email protected]"
rel="nofollow">Unsubscribe</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><a class="external-link"
href="http://mail-archives.apache.org/mod_mbox/tapestry-commits/">mail-archives.apache.org</a></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>-</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p><a class="external-link"
href="http://tapestry.markmail.org/search/?q=list%3Aorg.apache.tapestry.commits"
rel="nofollow">tapestry.markmail.org</a></p></td></tr><tr><th colspan="1"
rowspan="1" class="confluenceTh"><p>Search Multiple Lists</p></th><td
colspan="1" rowspan="1" class="confluenceTd"><p>-</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>-</p></td><td colspan="1" rows
pan="1" class="confluenceTd"><p>-</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><a class="external-link"
href="http://tapestry.1045711.n5.nabble.com/"
rel="nofollow">www.nabble.com</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><a class="external-link"
href="http://tapestry.markmail.org/search/?q=#query:+page:1+state:facets"
rel="nofollow">tapestry.markmail.org</a></p></td></tr></tbody></table></div></div>
+Apache Tapestry is an open source project and as such, supported by the
community. Even if you are looking for commercial support, your best bet for
support is to first subscribe to Apache Tapestry user mailing list and ask
there. Read more about how to <a href="support.html">get involved</a>.<h3
id="About-CommercialTrainingandSupport">Commercial Training and
Support</h3><p>Training on Tapestry and Support is available directly from the
source: the Tapestry project committers:</p><ul><li><a class="external-link"
href="http://www.arsmachina.com.br/services" rel="nofollow">Thiago H. de Paula
Figueriredo</a>: Provides training and support on Tapestry and related
technologies including Spring and Hibernate</li></ul><h3
id="About-CommunitySupport">Community Support</h3><p>Like all Apache projects,
Tapestry uses mailing lists for most communication. You can subscribe by
sending e-mail to the addresses below. For each list, there are subscribe,
unsubscribe, and archive links. All Tapestr
y users are welcome to subscribe to any of these lists, however questions on
how to <em>use</em> Tapestry in your application are best sent to the
<em>user</em> mailing list.</p><p>Please note that the Nabble archives are set
to read-only and don't allow for posting or answering using Nabble's web
interface. You have to subscribe to the mailing list in order to post.</p><div
class="table-wrap"><table class="confluenceTable"><tbody><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p> </p></td><th colspan="1" rowspan="1"
class="confluenceTh"><p>Subscribe</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Unsubscribe</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Apache Archive</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Nabble Archive</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>MarkMail Archive</p></th></tr><tr><th colspan="1"
rowspan="1" class="confluenceTh"><p>Tapestry User List</p></th><td colspan="1"
rowspan="1" class=
"confluenceTd"><p><a class="external-link"
href="mailto:[email protected]"
rel="nofollow">Subscribe</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><a class="external-link"
href="mailto:[email protected]"
rel="nofollow">Unsubscribe</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><a class="external-link"
href="http://mail-archives.apache.org/mod_mbox/tapestry-users/">mail-archives.apache.org</a></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a class="external-link"
href="http://tapestry.1045711.n5.nabble.com/Tapestry-User-f2375125.html"
rel="nofollow">www.nabble.com</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><a class="external-link"
href="http://tapestry.markmail.org/search/?q=list%3Aorg.apache.tapestry.users"
rel="nofollow">tapestry.markmail.org</a></p></td></tr><tr><th colspan="1"
rowspan="1" class="confluenceTh"><p>Tapestry Developer List</p></th><td
colspan="1" rowspan="1
" class="confluenceTd"><p><a class="external-link"
href="mailto:[email protected]"
rel="nofollow">Subscribe</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><a class="external-link"
href="mailto:[email protected]"
rel="nofollow">Unsubscribe</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><a class="external-link"
href="http://mail-archives.apache.org/mod_mbox/tapestry-dev/">mail-archives.apache.org</a></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a class="external-link"
href="http://tapestry.1045711.n5.nabble.com/Tapestry-Dev-f2438278.html"
rel="nofollow">www.nabble.com</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><a class="external-link"
href="http://tapestry.markmail.org/search/?q=list%3Aorg.apache.tapestry.dev"
rel="nofollow">tapestry.markmail.org</a></p></td></tr><tr><th colspan="1"
rowspan="1" class="confluenceTh"><p>Tapestry Commits List</p></th><td
colspan="1" rowspan="1" c
lass="confluenceTd"><p><a class="external-link"
href="mailto:[email protected]"
rel="nofollow">Subscribe</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><a class="external-link"
href="mailto:[email protected]"
rel="nofollow">Unsubscribe</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><a class="external-link"
href="http://mail-archives.apache.org/mod_mbox/tapestry-commits/">mail-archives.apache.org</a></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>-</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p><a class="external-link"
href="http://tapestry.markmail.org/search/?q=list%3Aorg.apache.tapestry.commits"
rel="nofollow">tapestry.markmail.org</a></p></td></tr><tr><th colspan="1"
rowspan="1" class="confluenceTh"><p>Search Multiple Lists</p></th><td
colspan="1" rowspan="1" class="confluenceTd"><p>-</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>-</p></td><td colspan="1" rowspa
n="1" class="confluenceTd"><p>-</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><a class="external-link"
href="http://tapestry.1045711.n5.nabble.com/"
rel="nofollow">www.nabble.com</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><a class="external-link"
href="http://tapestry.markmail.org/search/?q=#query:+page:1+state:facets"
rel="nofollow">tapestry.markmail.org</a></p></td></tr></tbody></table></div></div>
</div>
<div class="clearer"></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 Sat Feb 3
18:21:36 2018
@@ -27,6 +27,16 @@
</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"/>
@@ -67,7 +77,8 @@
</div>
<div id="content">
- <div
id="ConfluenceContent"><p><plain-text-body>{scrollbar}</plain-text-body></p><h2
id="AjaxComponentsFAQ-AjaxComponents">Ajax Components</h2><p>Main article: <a
href="ajax-and-zones.html">Ajax and Zones</a></p><h3
id="AjaxComponentsFAQ-DoIhavetospecifybothidandt:idforZonecomponents?">Do I
have to specify both <code>id</code> and <code>t:id</code> for Zone
components?</h3><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 i
nserted 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> parameter of
the triggering component (such as a Form, PageLink, ActionLink, etc.).</p><h3
id="AjaxComponentsFAQ-HowdoIupdatethecontentofaZonefromaneventhandlermethod?">How
do I update the content of a Zone from an event handler method?</h3><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><div></code> element.</p><p>Where does that content come from? You
inject it into your page.</p><parameter
ac:name="controls">true</parameter><parameter
ac:name="language">xml</parameter><plain-text-body><t:zone id="search"
t:id="searchZone">
+ <div id="ConfluenceContent"><h2
id="AjaxComponentsFAQ-AjaxComponents">Ajax Components</h2><p>Main article: <a
href="ajax-components-faq.html">Ajax Components FAQ</a></p><h3
id="AjaxComponentsFAQ-DoIhavetospecifybothidandt:idforZonecomponents?">Do I
have to specify both <code>id</code> and <code>t:id</code> for Zone
components?</h3><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 exampl
es 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> parameter of the triggering component (such as a Form,
PageLink, ActionLink, etc.).</p><h3
id="AjaxComponentsFAQ-HowdoIupdatethecontentofaZonefromaneventhandlermethod?">How
do I update the content of a Zone from an event handler method?</h3><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><div></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="brush: xml; gutter: false; theme: Default"
style="font-size:12px;"><t:zone id="search" t:id="searchZone">
<t:form t:id="searchForm" zone="searchZone">
<t:textfield t:id="query" size="20"/>
<input type="submit" value="Search"/>
@@ -79,7 +90,9 @@
<li t:type="loop" source="searchHits"
value="searchHit">${searchHit}</li>
</ul>
</t:block>
-</plain-text-body><parameter ac:name="controls">true</parameter><parameter
ac:name="language">java</parameter><plain-text-body> @Inject
+</pre>
+</div></div><div class="code panel pdl" style="border-width: 1px;"><div
class="codeContent panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default"
style="font-size:12px;"> @Inject
private Block searchResults;
Object onSuccessFromSearchForm()
@@ -88,14 +101,18 @@
return searchResults;
}
-</plain-text-body><p>So, when the search form is submitted, the resulting
search hits are collected. In the same request, the searchResults block is
rendered, package, and sent to the client. The form inside the client-side Zone
<code><div></code> is replaced with the list of hits.</p><p>In many
cases, you just want to re-render the Zone itself, to display updated content.
In that case, you don't need a separate <code><t:block></code>, instead
you can use @InjectComponent to inject the Zone object itself, and return the
Zone's body:</p><parameter ac:name="controls">true</parameter><parameter
ac:name="language">java</parameter><plain-text-body> @InjectComponent
+</pre>
+</div></div><p>So, when the search form is submitted, the resulting search
hits are collected. In the same request, the searchResults block is rendered,
package, and sent to the client. The form inside the client-side Zone
<code><div></code> is replaced with the list of hits.</p><p>In many
cases, you just want to re-render the Zone itself, to display updated content.
In that case, you don't need a separate <code><t:block></code>, instead
you can use @InjectComponent to inject the Zone object itself, and return the
Zone's body:</p><div class="code panel pdl" style="border-width: 1px;"><div
class="codeContent panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default"
style="font-size:12px;"> @InjectComponent
private Zone statusZone;
Object onActionFromUpdateStatus()
{
return statusZone.getBody();
}
-</plain-text-body><h3
id="AjaxComponentsFAQ-HowtoIupdatemultiplezonesinasingleeventhandler?">How to I
update multiple zones in a single event handler?</h3><p>To do this, you must
know, on the server, the client ids of each Zone. That's one of the reasons
that you will generally set the Zone's client id (via the Zone's id parameter),
rather than let Tapestry assign a client id for you.</p><p>From the event
handler method, instead of returning a Block or a Component, return a
multi-zone update:</p><p> </p><parameter
ac:name="controls">true</parameter><parameter
ac:name="language">java</parameter><parameter ac:name="title">Multiple Zone
Update (5.3+)</parameter><plain-text-body> @Inject
+</pre>
+</div></div><h3
id="AjaxComponentsFAQ-HowtoIupdatemultiplezonesinasingleeventhandler?">How to I
update multiple zones in a single event handler?</h3><p>To do this, you must
know, on the server, the client ids of each Zone. That's one of the reasons
that you will generally set the Zone's client id (via the Zone's id parameter),
rather than let Tapestry assign a client id for you.</p><p>From the event
handler method, instead of returning a Block or a Component, return a
multi-zone update:</p><p> </p><div class="code panel pdl"
style="border-width: 1px;"><div class="codeHeader panelHeader pdl"
style="border-bottom-width: 1px;"><b>Multiple Zone Update (5.3+)</b></div><div
class="codeContent panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default"
style="font-size:12px;"> @Inject
private Block searchResults;
@Inject
@@ -112,10 +129,17 @@
ajaxResponseRenderer.addRender("results",
searchResults).addRender("status", statusBlock);
}
-</plain-text-body><p>Note: Users of Tapestry 5.2 and earlier (which didn't
support AjaxResponseRenderer) must replace that last line with: <code>return
new MultiZoneUpdate("results", searchResults).add("status",
statusBlock);</code></p><p>AjaxResponseRenderer adds other useful commands as
well. It also has the advantage that a simple return value can be returned to
render content for the Zone that triggered the request.</p><h3
id="AjaxComponentsFAQ-What'sthatweirdnumberinthemiddleoftheclientidsafteraZoneisupdated?">What's
that weird number in the middle of the client ids after a Zone is
updated?</h3><p>You might start with markup in your template for a component
such as a TextField:</p><parameter
ac:name="controls">true</parameter><parameter
ac:name="language">xml</parameter><plain-text-body> <t:textfield
t:id="firstName"/>
-</plain-text-body><p>When the component initially renders as part of a full
page render, you get a sensible bit of markup:</p><parameter
ac:name="controls">true</parameter><parameter
ac:name="language">xml</parameter><plain-text-body> <input id="firstName"
name="firstName" type="text">
-</plain-text-body><p>But when the form is inside a Zone and rendered as part
of a zone update, the ids get weird:</p><parameter
ac:name="controls">true</parameter><parameter
ac:name="language">xml</parameter><plain-text-body> <input
id="firstName_12a820cc40e" name="firstName" type="text">
-</plain-text-body><p>What's happening here is that Tapestry is working to
prevent unwanted id clashes as part of the page update. In an HTML document,
each <code>id</code> is expected to be unique; most JavaScript is keyed off of
the <code>id</code> field, for instance.</p><p>In a full page render,
components don't just use their component id (<code>t:id</code>) as their
client id; instead they use the <code>JavaScriptSupport</code> environmental to
allocate a unique id. When there's no loops or conflicts, the client id matches
the component id.</p><p>When the component is inside a loop, a suffix is
appended: <code>firstName</code>, <code>firstName_0</code>,
<code>firstName_1</code>, etc.</p><p>When the component is rendered as part of
an Ajax partial page update, the rules are different. Since Tapestry doesn't
know what content has been rendered onto the page previously, it can't use its
normal tricks to ensure that ids are unique.</p><p>Instead, Tapestry creates a
random-ish uniqu
e id suffix, such as "12a820cc40e" in the example; this suffix is appended to
all allocated ids to ensure that they do not conflict with previously rendered
ids.</p><h3
id="AjaxComponentsFAQ-WhydoIsometimesgettheexception"Therenderedcontentdidnotincludeanyelementsthatallowforthepositioningofthehiddenformfield'selement."whenrenderinganemptyZone?">Why
do I sometimes get the exception "The rendered content did not include any
elements that allow for the positioning of the hidden form field's element."
when rendering an empty Zone?</h3><p>As part of Tapestry's form processing, it
must write a hidden input element with information needed when the form is
submitted. Since the content of a Zone may be changed or removed, a hidden
field is created just for the Zone, separate from the rest of the enclosing
form.</p><p>At the same time, Tapestry wants to position the <input>
field in a valid location, and HTML defines some constraints for that; an input
field must appear insid
e a <p> or <div> element. If your zone is initially empty, there's
no place to put the hidden element, and Tapestry will complain.</p><p>The
solution is simple: just add a <div> element to the body of the zone.
This<span style="line-height: 1.4285715;"> ensures that there's a place for the
hidden input field.  An empty <div> element (even one containing a
hidden form field) will not affect page
layout.</span><plain-text-body>{scrollbar}</plain-text-body></p></div>
+</pre>
+</div></div><p>Note: Users of Tapestry 5.2 and earlier (which didn't support
AjaxResponseRenderer) must replace that last line with: <code>return new
MultiZoneUpdate("results", searchResults).add("status",
statusBlock);</code></p><p>AjaxResponseRenderer adds other useful commands as
well. It also has the advantage that a simple return value can be returned to
render content for the Zone that triggered the request.</p><h3
id="AjaxComponentsFAQ-What'sthatweirdnumberinthemiddleoftheclientidsafteraZoneisupdated?">What's
that weird number in the middle of the client ids after a Zone is
updated?</h3><p>You might start with markup in your template for a component
such as a TextField:</p><div class="code panel pdl" style="border-width:
1px;"><div class="codeContent panelContent pdl">
+<pre class="brush: xml; gutter: false; theme: Default"
style="font-size:12px;"> <t:textfield t:id="firstName"/>
+</pre>
+</div></div><p>When the component initially renders as part of a full page
render, you get a sensible bit of markup:</p><div class="code panel pdl"
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<pre class="brush: xml; gutter: false; theme: Default"
style="font-size:12px;"> <input id="firstName" name="firstName"
type="text">
+</pre>
+</div></div><p>But when the form is inside a Zone and rendered as part of a
zone update, the ids get weird:</p><div class="code panel pdl"
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<pre class="brush: xml; gutter: false; theme: Default"
style="font-size:12px;"> <input id="firstName_12a820cc40e"
name="firstName" type="text">
+</pre>
+</div></div><p>What's happening here is that Tapestry is working to prevent
unwanted id clashes as part of the page update. In an HTML document, each
<code>id</code> is expected to be unique; most JavaScript is keyed off of the
<code>id</code> field, for instance.</p><p>In a full page render, components
don't just use their component id (<code>t:id</code>) as their client id;
instead they use the <code>JavaScriptSupport</code> environmental to allocate a
unique id. When there's no loops or conflicts, the client id matches the
component id.</p><p>When the component is inside a loop, a suffix is appended:
<code>firstName</code>, <code>firstName_0</code>, <code>firstName_1</code>,
etc.</p><p>When the component is rendered as part of an Ajax partial page
update, the rules are different. Since Tapestry doesn't know what content has
been rendered onto the page previously, it can't use its normal tricks to
ensure that ids are unique.</p><p>Instead, Tapestry creates a random-ish unique
id s
uffix, such as "12a820cc40e" in the example; this suffix is appended to all
allocated ids to ensure that they do not conflict with previously rendered
ids.</p><h3
id="AjaxComponentsFAQ-WhydoIsometimesgettheexception"Therenderedcontentdidnotincludeanyelementsthatallowforthepositioningofthehiddenformfield'selement."whenrenderinganemptyZone?">Why
do I sometimes get the exception "The rendered content did not include any
elements that allow for the positioning of the hidden form field's element."
when rendering an empty Zone?</h3><p>As part of Tapestry's form processing, it
must write a hidden input element with information needed when the form is
submitted. Since the content of a Zone may be changed or removed, a hidden
field is created just for the Zone, separate from the rest of the enclosing
form.</p><p>At the same time, Tapestry wants to position the <input>
field in a valid location, and HTML defines some constraints for that; an input
field must appear inside a &l
t;p> or <div> element. If your zone is initially empty, there's no
place to put the hidden element, and Tapestry will complain.</p><p>The solution
is simple: just add a <div> element to the body of the zone. This<span>
ensures that there's a place for the hidden input field.  An empty
<div> element (even one containing a hidden form field) will not affect
page layout.</span></p></div>
</div>
<div class="clearer"></div>
Modified:
websites/production/tapestry/content/application-module-class-cheat-sheet.html
==============================================================================
---
websites/production/tapestry/content/application-module-class-cheat-sheet.html
(original)
+++
websites/production/tapestry/content/application-module-class-cheat-sheet.html
Sat Feb 3 18:21:36 2018
@@ -44,13 +44,26 @@
<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="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 & blogs:</span><form
enctype="application/x-www-form-urlencoded" method="get"
action="http://tapestry.apache.org/search.html">
- <input type="text" name="q">
- <input type="submit" value="Search">
-</form></div><div class="emblem" style="float:left"><p><a
href="index.html"><span class="confluence-embedded-file-wrapper"><img
class="confluence-embedded-image confluence-external-resource"
src="http://tapestry.apache.org/images/tapestry_small.png"
data-image-src="http://tapestry.apache.org/images/tapestry_small.png"></span></a></p></div><div
class="title" style="float:left; margin: 0 0 0 3em"><h1
id="SmallBanner-PageTitle">Application Module Class Cheat Sheet</h1></div></div>
+ <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 & blogs:</span>
+<form enctype="application/x-www-form-urlencoded" method="get"
action="http://tapestry.apache.org/search.html">
+ <input type="text" name="q">
+ <input type="submit" value="Search">
+</form>
+
+</div>
+
+
+<div class="emblem" style="float:left"><p><a href="index.html"><span
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image
confluence-external-resource"
src="http://tapestry.apache.org/images/tapestry_small.png"
data-image-src="http://tapestry.apache.org/images/tapestry_small.png"></span></a></p></div>
+
+
+<div class="title" style="float:left; margin: 0 0 0 3em"><h1
id="SmallBanner-PageTitle">Application Module Class Cheat Sheet</h1></div>
+
+</div>
<div class="clearer"></div>
</div>
@@ -63,11 +76,11 @@
<div id="content">
<div id="ConfluenceContent"><p> </p><p>The
<strong>Application Module</strong> class is a simple Java class used to
configure Tapestry. A system of annotations and naming conventions allows
Tapestry to determine what services are provided by the module to your
application. This is the place where you bind your custom implementation of
services, contribute to, decorate and override existing services.</p><p><style
type="text/css">/*<![CDATA[*/
-div.rbtoc1478607610534 {padding: 0px;}
-div.rbtoc1478607610534 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1478607610534 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1517682041745 {padding: 0px;}
+div.rbtoc1517682041745 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1517682041745 li {margin-left: 0px;padding-left: 0px;}
-/*]]>*/</style></p><div class="toc-macro rbtoc1478607610534">
+/*]]>*/</style></p><div class="toc-macro rbtoc1517682041745">
<ul class="toc-indentation"><li>Related Articles</li></ul>
<ul><li><a href="#ApplicationModuleClassCheatSheet-Namingconventions">Naming
conventions</a>
<ul class="toc-indentation"><li><a
href="#ApplicationModuleClassCheatSheet-Thebindmethod">The bind
method</a></li><li><a
href="#ApplicationModuleClassCheatSheet-Servicebuildermethods">Service builder
methods</a></li><li><a
href="#ApplicationModuleClassCheatSheet-Contributemethods">Contribute
methods</a>
@@ -78,43 +91,76 @@ div.rbtoc1478607610534 li {margin-left:
</li><li><a
href="#ApplicationModuleClassCheatSheet-Loadservicesonregistrystartup">Load
services on registry startup</a></li><li><a
href="#ApplicationModuleClassCheatSheet-Defineservicescope">Define service
scope</a></li><li><a
href="#ApplicationModuleClassCheatSheet-Disambiguateservices">Disambiguate
services</a>
<ul class="toc-indentation"><li><a
href="#ApplicationModuleClassCheatSheet-WithserviceId">With service
Id</a></li><li><a href="#ApplicationModuleClassCheatSheet-WithMarkers">With
Markers</a></li></ul>
</li><li><a
href="#ApplicationModuleClassCheatSheet-Overrideexistingservices">Override
existing services</a></li></ul>
-</div><div class="aui-label" style="float:right" title="Related
Articles"><h3>Related Articles</h3><ul class="content-by-label"><li>
- <div>
- <span class="icon aui-icon aui-icon-small aui-iconfont-page-default"
title="Page">Page:</span>
- </div>
- <div class="details">
- <a href="application-module-class-cheat-sheet.html">Application Module
Class Cheat Sheet</a>
- </div> </li><li>
- <div>
- <span class="icon aui-icon aui-icon-small aui-iconfont-page-default"
title="Page">Page:</span>
- </div>
- <div class="details">
- <a href="ioc-cookbook-service-configurations.html">IoC cookbook - Service
Configurations</a>
- </div> </li><li>
- <div>
- <span class="icon aui-icon aui-icon-small aui-iconfont-page-default"
title="Page">Page:</span>
- </div>
- <div class="details">
- <a href="symbols.html">Symbols</a>
- </div> </li><li>
- <div>
- <span class="icon aui-icon aui-icon-small aui-iconfont-page-default"
title="Page">Page:</span>
- </div>
- <div class="details">
- <a href="tapestry-ioc-configuration.html">Tapestry IoC Configuration</a>
- </div> </li><li>
- <div>
- <span class="icon aui-icon aui-icon-small aui-iconfont-page-default"
title="Page">Page:</span>
- </div>
- <div class="details">
- <a href="response-compression.html">Response Compression</a>
- </div> </li><li>
- <div>
- <span class="icon aui-icon aui-icon-small aui-iconfont-page-default"
title="Page">Page:</span>
- </div>
- <div class="details">
- <a href="configuration.html">Configuration</a>
- </div> </li></ul></div><p>For complete documentation, you should refer to
the <a href="defining-tapestry-ioc-services.html">IOC Service
guideline</a>.</p><h2
id="ApplicationModuleClassCheatSheet-Namingconventions">Naming
conventions</h2><p>The use of naming conventions implies that every public
method of your module class should be meaningful to Tapestry: it either should
follow the naming conventions, or should have an appropriate annotation. Any
extra public methods will result in startup exceptions ... this helps identify
methods names that have typos.</p><p>Methods should be <strong>public</strong>
and, preferably <strong>static</strong>.</p><div
class="confluence-information-macro confluence-information-macro-note"><span
class="aui-icon aui-icon-small aui-iconfont-warning
confluence-information-macro-icon"></span><div
class="confluence-information-macro-body"><p>Allowing for non-static methods
may have been a design error, a kind of premature optimization. The thinking
was t
hat the module could have common dependencies that it could then easily access
when building services. This was partly about runtime efficiency but mostly
about reducing redundancy in the various service building, contribution, and
decorating methods; the ServiceBinder came later, and was a better solution
(trading runtime efficiency for developer ease of use).</p></div></div><h3
id="ApplicationModuleClassCheatSheet-Thebindmethod">The bind
method</h3><p>Every module may have an optional, static bind() method which is
passed a ServiceBinder. By using the ServiceBinder, you will let Tapestry
<em>autobuild</em> your services. Autobuilding is the <strong>preferred
way</strong> to instantiate your services.</p><div class="code panel pdl"
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div><div class="aui-label" style="float:right" title="Related Articles">
+
+
+
+
+
+
+
+
+<h3>Related Articles</h3>
+
+<ul class="content-by-label"><li>
+ <div>
+ <span class="icon aui-icon aui-icon-small
aui-iconfont-page-default" title="Page">Page:</span> </div>
+
+ <div class="details">
+ <a
href="application-module-class-cheat-sheet.html">Application Module Class Cheat
Sheet</a>
+
+
+ </div>
+ </li><li>
+ <div>
+ <span class="icon aui-icon aui-icon-small
aui-iconfont-page-default" title="Page">Page:</span> </div>
+
+ <div class="details">
+ <a
href="ioc-cookbook-service-configurations.html">IoC cookbook - Service
Configurations</a>
+
+
+ </div>
+ </li><li>
+ <div>
+ <span class="icon aui-icon aui-icon-small
aui-iconfont-page-default" title="Page">Page:</span> </div>
+
+ <div class="details">
+ <a href="symbols.html">Symbols</a>
+
+
+ </div>
+ </li><li>
+ <div>
+ <span class="icon aui-icon aui-icon-small
aui-iconfont-page-default" title="Page">Page:</span> </div>
+
+ <div class="details">
+ <a href="tapestry-ioc-configuration.html">Tapestry
IoC Configuration</a>
+
+
+ </div>
+ </li><li>
+ <div>
+ <span class="icon aui-icon aui-icon-small
aui-iconfont-page-default" title="Page">Page:</span> </div>
+
+ <div class="details">
+ <a href="response-compression.html">Response
Compression</a>
+
+
+ </div>
+ </li><li>
+ <div>
+ <span class="icon aui-icon aui-icon-small
aui-iconfont-page-default" title="Page">Page:</span> </div>
+
+ <div class="details">
+ <a href="configuration.html">Configuration</a>
+
+
+ </div>
+ </li></ul>
+</div>
+
+
+<p>For complete documentation, you should refer to the <a
href="application-module-class-cheat-sheet.html">IOC Service
guideline</a>.</p><h2
id="ApplicationModuleClassCheatSheet-Namingconventions">Naming
conventions</h2><p>The use of naming conventions implies that every public
method of your module class should be meaningful to Tapestry: it either should
follow the naming conventions, or should have an appropriate annotation. Any
extra public methods will result in startup exceptions ... this helps identify
methods names that have typos.</p><p>Methods should be <strong>public</strong>
and, preferably <strong>static</strong>.</p><div
class="confluence-information-macro confluence-information-macro-note"><span
class="aui-icon aui-icon-small aui-iconfont-warning
confluence-information-macro-icon"></span><div
class="confluence-information-macro-body"><p>Allowing for non-static methods
may have been a design error, a kind of premature optimization. The thinking
was that the module coul
d have common dependencies that it could then easily access when building
services. This was partly about runtime efficiency but mostly about reducing
redundancy in the various service building, contribution, and decorating
methods; the ServiceBinder came later, and was a better solution (trading
runtime efficiency for developer ease of use).</p></div></div><h3
id="ApplicationModuleClassCheatSheet-Thebindmethod">The bind
method</h3><p>Every module may have an optional, static bind() method which is
passed a ServiceBinder. By using the ServiceBinder, you will let Tapestry
<em>autobuild</em> your services. Autobuilding is the <strong>preferred
way</strong> to instantiate your services.</p><div class="code panel pdl"
style="border-width: 1px;"><div class="codeContent panelContent pdl">
<pre class="brush: java; gutter: false; theme: Default"
style="font-size:12px;">package org.example.myapp.services;
import org.apache.tapestry5.ioc.ServiceBinder;
@@ -174,7 +220,7 @@ public class MyAppModule
configuration.add(myTuple);
}
</pre>
-</div></div><h3 id="ApplicationModuleClassCheatSheet-Decoratemethods">Decorate
methods</h3><p><em>content under development</em></p><h2
id="ApplicationModuleClassCheatSheet-Annotations">Annotations</h2><p>Main
Article: <a href="annotations.html">Annotations</a></p><p>Tapestry 5.2 comes
with a set of annotations to better your understanding of module
classes.</p><p><em>content under development</em></p><h2
id="ApplicationModuleClassCheatSheet-parameter-typesParametertypes"><span
class="confluence-anchor-link"
id="ApplicationModuleClassCheatSheet-parameter-types"></span>Parameter
types</h2><p>These methods may have any number of parameters, tapestry will try
to resolve each parameter value as a configuration element or a registry
element.</p><h3
id="ApplicationModuleClassCheatSheet-Configurationparametertypes">Configuration
parameter types</h3><p><em>content under development</em></p><h3
id="ApplicationModuleClassCheatSheet-Linktoservices">Link to
services</h3><p><em>content under de
velopment</em></p><h3
id="ApplicationModuleClassCheatSheet-Symbols">Symbols</h3><p>Main Article: <a
href="symbols.html">Symbols</a></p><p><em>content under development</em></p><h2
id="ApplicationModuleClassCheatSheet-Loadservicesonregistrystartup">Load
services on registry startup</h2><p><em>content under development</em></p><h2
id="ApplicationModuleClassCheatSheet-Defineservicescope">Define service
scope</h2><p><em>content under development</em></p><h2
id="ApplicationModuleClassCheatSheet-Disambiguateservices">Disambiguate
services</h2><p><em>content under development</em></p><h3
id="ApplicationModuleClassCheatSheet-WithserviceId">With service
Id</h3><p><em>content under development</em></p><h3
id="ApplicationModuleClassCheatSheet-WithMarkers">With
Markers</h3><p><em>content under development</em></p><h2
id="ApplicationModuleClassCheatSheet-Overrideexistingservices">Override
existing services</h2><p><em>content under
development</em></p><p> </p><p></p></div>
+</div></div><h3 id="ApplicationModuleClassCheatSheet-Decoratemethods">Decorate
methods</h3><p><em>content under development</em></p><h2
id="ApplicationModuleClassCheatSheet-Annotations">Annotations</h2><p>Main
Article: <a href="application-module-class-cheat-sheet.html">Application
Module Class Cheat Sheet</a></p><p>Tapestry 5.2 comes with a set of annotations
to better your understanding of module classes.</p><p><em>content under
development</em></p><h2
id="ApplicationModuleClassCheatSheet-parameter-typesParametertypes"><span
class="confluence-anchor-link"
id="ApplicationModuleClassCheatSheet-parameter-types"></span>Parameter
types</h2><p>These methods may have any number of parameters, tapestry will try
to resolve each parameter value as a configuration element or a registry
element.</p><h3
id="ApplicationModuleClassCheatSheet-Configurationparametertypes">Configuration
parameter types</h3><p><em>content under development</em></p><h3
id="ApplicationModuleClassCheatSheet-Linktoserv
ices">Link to services</h3><p><em>content under development</em></p><h3
id="ApplicationModuleClassCheatSheet-Symbols">Symbols</h3><p>Main Article: <a
href="application-module-class-cheat-sheet.html">Application Module Class Cheat
Sheet</a></p><p><em>content under development</em></p><h2
id="ApplicationModuleClassCheatSheet-Loadservicesonregistrystartup">Load
services on registry startup</h2><p><em>content under development</em></p><h2
id="ApplicationModuleClassCheatSheet-Defineservicescope">Define service
scope</h2><p><em>content under development</em></p><h2
id="ApplicationModuleClassCheatSheet-Disambiguateservices">Disambiguate
services</h2><p><em>content under development</em></p><h3
id="ApplicationModuleClassCheatSheet-WithserviceId">With service
Id</h3><p><em>content under development</em></p><h3
id="ApplicationModuleClassCheatSheet-WithMarkers">With
Markers</h3><p><em>content under development</em></p><h2
id="ApplicationModuleClassCheatSheet-Overrideexistingservices">Override
existing services</h2><p><em>content under
development</em></p><p> </p><p></p></div>
</div>
<div class="clearer"></div>
Modified: websites/production/tapestry/content/beaneditform-faq.html
==============================================================================
--- websites/production/tapestry/content/beaneditform-faq.html (original)
+++ websites/production/tapestry/content/beaneditform-faq.html Sat Feb 3
18:21:36 2018
@@ -27,6 +27,16 @@
</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"/>
@@ -67,24 +77,8 @@
</div>
<div id="content">
- <div
id="ConfluenceContent"><plain-text-body>{scrollbar}</plain-text-body>
-
-<h2 id="BeanEditFormFAQ-BeanEditForm">BeanEditForm </h2>
-
-<h3
id="BeanEditFormFAQ-WhydoIgetexceptionsaboutinstantiatingabeanwhenusingBeanEditForm?">Why
do I get exceptions about instantiating a bean when using BeanEditForm?</h3>
-
-<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/apache/tapestry5/ioc/annotations/Inject.html">Inject</a>
annotation on the correct constructor to use (often, the constructor with no
parameters).</li></ul>
-
-
-
-<plain-text-body>
-public class MyBean {
+ <div id="ConfluenceContent"><h2
id="BeanEditFormFAQ-BeanEditForm">BeanEditForm</h2><h3
id="BeanEditFormFAQ-WhydoIgetexceptionsaboutinstantiatingabeanwhenusingBeanEditForm?">Why
do I get exceptions about instantiating a bean when using
BeanEditForm?</h3><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="beaneditform-faq.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>Pla
ce an @<a class="external-link"
href="http://tapestry.apache.org/current/apidocs/org/apache/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="brush: java; gutter: false; theme: Default"
style="font-size:12px;">public class MyBean {
@Inject
public MyBean() { ... }
@@ -94,13 +88,9 @@ public class MyBean {
...
}
-</plain-text-body>
-
-<ul><li>Provide an event handler method for the "prepare" event, and put an
instantiated instance into the property.</li></ul>
-
-
-<plain-text-body>
-public class MyPage {
+</pre>
+</div></div><ul><li>Provide an event handler method for the "prepare" event,
and put an instantiated instance into the property.</li></ul><div class="code
panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default"
style="font-size:12px;">public class MyPage {
@Property
public MyBean myBean;
@@ -110,17 +100,8 @@ public class MyPage {
myBean = new MyBean();
}
}
-</plain-text-body>
-
-<h3
id="BeanEditFormFAQ-What'sthedifferencebetweenBeanEditorandBeanEditForm?">What's
the difference between BeanEditor and BeanEditForm?</h3>
-
-<p>BeanEditor is a component used within a BeanEditForm. A BeanEditForm
simply combines a BeanEditor, a Form, and a Submit component together. Most of
the capabilities of BeanEditForm are derived from the BeanEditor.</p>
-
-<h3 id="BeanEditFormFAQ-HowdoIcustomizethelayoutoftheBeanEditForm?">How do I
customize the layout of the BeanEditForm?</h3>
-
-<p>The BeanEditForm is a <em>scaffolding</em> component; it exists to get
things up and running quickly. It can be customized visually using CSS, and can
be configured and extended in a number of ways ... but ultimately, if you want
fine control, you should use the underlying Form, TextField and other
components directly.</p>
-
-<plain-text-body>{scrollbar}</plain-text-body></div>
+</pre>
+</div></div><h3
id="BeanEditFormFAQ-What'sthedifferencebetweenBeanEditorandBeanEditForm?">What's
the difference between BeanEditor and BeanEditForm?</h3><p>BeanEditor is a
component used within a BeanEditForm. A BeanEditForm simply combines a
BeanEditor, a Form, and a Submit component together. Most of the capabilities
of BeanEditForm are derived from the BeanEditor.</p><h3
id="BeanEditFormFAQ-HowdoIcustomizethelayoutoftheBeanEditForm?">How do I
customize the layout of the BeanEditForm?</h3><p>The BeanEditForm is a
<em>scaffolding</em> component; it exists to get things up and running quickly.
It can be customized visually using CSS, and can be configured and extended in
a number of ways ... but ultimately, if you want fine control, you should use
the underlying Form, TextField and other components directly.</p></div>
</div>
<div class="clearer"></div>