Author: buildbot Date: Fri Feb 28 18:18:17 2025 New Revision: 1089173 Log: Production update by buildbot for tapestry
Modified: websites/production/tapestry/content/2011/03/30/tapestry-kudos.html websites/production/tapestry/content/about.html websites/production/tapestry/content/ajax-and-zones.html websites/production/tapestry/content/ajax-components-faq.html websites/production/tapestry/content/aliases.html websites/production/tapestry/content/annotations.html websites/production/tapestry/content/application-module-class-cheat-sheet.html websites/production/tapestry/content/assets.html websites/production/tapestry/content/banner.html websites/production/tapestry/content/bannerv2.html websites/production/tapestry/content/bean-validation.html websites/production/tapestry/content/beaneditform-faq.html websites/production/tapestry/content/beaneditform-guide.html websites/production/tapestry/content/chainbuilder-service.html websites/production/tapestry/content/class-reloading.html websites/production/tapestry/content/client-side-javascript.html websites/production/tapestry/content/coffeescript.html websites/production/tapestry/content/committers.html websites/production/tapestry/content/community.html websites/production/tapestry/content/component-cheat-sheet.html websites/production/tapestry/content/component-classes.html websites/production/tapestry/content/component-events-faq.html websites/production/tapestry/content/component-events.html websites/production/tapestry/content/component-libraries.html websites/production/tapestry/content/component-mixins.html websites/production/tapestry/content/component-parameters.html websites/production/tapestry/content/component-reference.html websites/production/tapestry/content/component-rendering.html websites/production/tapestry/content/component-templates.html websites/production/tapestry/content/configuration.html websites/production/tapestry/content/confluence-site-setup.html websites/production/tapestry/content/contributors.html websites/production/tapestry/content/cookbook.html websites/production/tapestry/content/creating-the-skeleton-application.html websites/production/tapestry/content/css.html websites/production/tapestry/content/default-parameter.html websites/production/tapestry/content/developer-bible.html websites/production/tapestry/content/documentation.html websites/production/tapestry/content/dom.html websites/production/tapestry/content/downloadboxes-v2.html websites/production/tapestry/content/enum-parameter-recipe.html websites/production/tapestry/content/error-page-recipe.html websites/production/tapestry/content/exploring-the-project.html websites/production/tapestry/content/forms-and-form-components-faq.html websites/production/tapestry/content/forms-and-validation.html websites/production/tapestry/content/frequently-asked-questions.html websites/production/tapestry/content/general-questions.html websites/production/tapestry/content/getting-started.html websites/production/tapestry/content/hibernate-core-conf.html websites/production/tapestry/content/hibernate-core.html websites/production/tapestry/content/hibernate-support-faq.html websites/production/tapestry/content/hibernate-user-guide.html websites/production/tapestry/content/hibernate.html websites/production/tapestry/content/https.html websites/production/tapestry/content/index.html websites/production/tapestry/content/indexv2-old.html websites/production/tapestry/content/indexv2.html websites/production/tapestry/content/injection-faq.html websites/production/tapestry/content/injection-in-detail.html websites/production/tapestry/content/injection.html websites/production/tapestry/content/integrating-with-jpa.html websites/production/tapestry/content/integrating-with-spring-framework.html websites/production/tapestry/content/integration-testing.html websites/production/tapestry/content/integration-with-existing-applications.html websites/production/tapestry/content/introduction.html websites/production/tapestry/content/ioc-cookbook-patterns.html websites/production/tapestry/content/ioc-cookbook.html websites/production/tapestry/content/ioc.html websites/production/tapestry/content/javascript-faq.html websites/production/tapestry/content/javascript-modules.html websites/production/tapestry/content/javascript-rewrite-in-54.html websites/production/tapestry/content/key-features-v2.html websites/production/tapestry/content/key-features.html websites/production/tapestry/content/layout-component.html websites/production/tapestry/content/legacy-javascript.html websites/production/tapestry/content/limitations.html websites/production/tapestry/content/link-components-faq.html websites/production/tapestry/content/localization.html websites/production/tapestry/content/logging-in-tapestry.html websites/production/tapestry/content/logging.html websites/production/tapestry/content/maven-support-faq.html websites/production/tapestry/content/news.html websites/production/tapestry/content/operation-tracker.html websites/production/tapestry/content/overriding-exception-reporting.html websites/production/tapestry/content/page-and-component-classes-faq.html websites/production/tapestry/content/page-life-cycle.html websites/production/tapestry/content/page-navigation.html websites/production/tapestry/content/parameter-type-coercion.html websites/production/tapestry/content/performance-and-clustering.html websites/production/tapestry/content/persistent-page-data.html websites/production/tapestry/content/pipelinebuilder-service.html websites/production/tapestry/content/principles.html websites/production/tapestry/content/property-expressions.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-545.html websites/production/tapestry/content/release-notes-550.html websites/production/tapestry/content/release-notes-560.html websites/production/tapestry/content/release-notes-561.html websites/production/tapestry/content/release-notes-562.html websites/production/tapestry/content/release-notes-563.html websites/production/tapestry/content/release-notes-564.html websites/production/tapestry/content/release-notes-570.html websites/production/tapestry/content/release-notes-571.html websites/production/tapestry/content/release-notes-572.html websites/production/tapestry/content/release-notes-573.html websites/production/tapestry/content/release-notes-580.html websites/production/tapestry/content/release-notes-581.html websites/production/tapestry/content/release-notes-582.html websites/production/tapestry/content/release-notes-583.html websites/production/tapestry/content/release-notes-584.html websites/production/tapestry/content/release-notes-585.html websites/production/tapestry/content/release-notes-586.html websites/production/tapestry/content/release-notes-587.html websites/production/tapestry/content/release-notes-590.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/request-processing.html websites/production/tapestry/content/response-compression.html websites/production/tapestry/content/rest-support-580.html websites/production/tapestry/content/runtime-exceptions.html websites/production/tapestry/content/sandbox.html websites/production/tapestry/content/security-faq.html websites/production/tapestry/content/security.html websites/production/tapestry/content/service-implementation-reloading.html websites/production/tapestry/content/session-storage.html websites/production/tapestry/content/shadowbuilder-service.html websites/production/tapestry/content/specific-errors-faq.html websites/production/tapestry/content/strategybuilder-service.html websites/production/tapestry/content/supporting-informal-parameters.html websites/production/tapestry/content/switching-cases.html websites/production/tapestry/content/symbols.html websites/production/tapestry/content/tapestry-for-jsf-users.html websites/production/tapestry/content/tapestry-inversion-of-control-faq.html websites/production/tapestry/content/tapestry-ioc-configuration.html websites/production/tapestry/content/tapestry-ioc-overview.html websites/production/tapestry/content/tapestry-tutorial.html websites/production/tapestry/content/templating-and-markup-faq.html websites/production/tapestry/content/type-coercion.html websites/production/tapestry/content/typescript.html websites/production/tapestry/content/unit-testing-pages-or-components.html websites/production/tapestry/content/using-jsr-330-standard-annotations.html websites/production/tapestry/content/whatistapestry-v2.html websites/production/tapestry/content/whatistapestry.html Modified: websites/production/tapestry/content/2011/03/30/tapestry-kudos.html ============================================================================== --- websites/production/tapestry/content/2011/03/30/tapestry-kudos.html (original) +++ websites/production/tapestry/content/2011/03/30/tapestry-kudos.html Fri Feb 28 18:18:17 2025 @@ -160,12 +160,12 @@ <p>From my daily work with T5 over past few months I can say with confidence it is a love-hate relationship. I get frustrated trying to get over the learning curve when things don't work. I don't enjoy stepping into the framework's guts unless I absolutely have to... But then... when I finally get things to work, it's like EVERY TIME the code is so elegant and gorgeous, it just makes me love Tapestry that much more. It's an amazing feeling, one I haven't had in many years as a Java developer.</p> -<p>And we love our new Spring-less world of Tapestry! We love that Tapesty IoC allows us to painlessly inject remote EJB proxies <img class="emoticon emoticon-smile" src="https://cwiki.apache.org/confluence/s/5tj15x/8804/z1btw/_/images/icons/emoticons/smile.svg" data-emoticon-name="smile" alt="(smile)"> LOVE IT !!! Our app layer is as light as it can be. We literally run only on:</p> +<p>And we love our new Spring-less world of Tapestry! We love that Tapesty IoC allows us to painlessly inject remote EJB proxies <img class="emoticon emoticon-smile" src="https://cwiki.apache.org/confluence/s/alfxyv/8804/z1btw/_/images/icons/emoticons/smile.svg" data-emoticon-name="smile" alt="(smile)"> LOVE IT !!! Our app layer is as light as it can be. We literally run only on:</p> <ul><li>Tapestry</li><li>Apache commons-lang</li><li>And, of course, our EJB client libraries</li></ul> -<p>In practice, we are able to concurrently run two completely different teams: Tapestry Devs and EJB/Hibernate devs. Both are experts within their own domain, no stepping on each other's toes <img class="emoticon emoticon-smile" src="https://cwiki.apache.org/confluence/s/5tj15x/8804/z1btw/_/images/icons/emoticons/smile.svg" data-emoticon-name="smile" alt="(smile)"> Sure, this could be done with any framework, it's just that Tapestry makes it so darn easy and most importantly F-U-N <img class="emoticon emoticon-smile" src="https://cwiki.apache.org/confluence/s/5tj15x/8804/z1btw/_/images/icons/emoticons/smile.svg" data-emoticon-name="smile" alt="(smile)"></p> +<p>In practice, we are able to concurrently run two completely different teams: Tapestry Devs and EJB/Hibernate devs. Both are experts within their own domain, no stepping on each other's toes <img class="emoticon emoticon-smile" src="https://cwiki.apache.org/confluence/s/alfxyv/8804/z1btw/_/images/icons/emoticons/smile.svg" data-emoticon-name="smile" alt="(smile)"> Sure, this could be done with any framework, it's just that Tapestry makes it so darn easy and most importantly F-U-N <img class="emoticon emoticon-smile" src="https://cwiki.apache.org/confluence/s/alfxyv/8804/z1btw/_/images/icons/emoticons/smile.svg" data-emoticon-name="smile" alt="(smile)"></p> <p>Thank you for this great framework!</p> Modified: websites/production/tapestry/content/about.html ============================================================================== --- websites/production/tapestry/content/about.html (original) +++ websites/production/tapestry/content/about.html Fri Feb 28 18:18:17 2025 @@ -166,15 +166,7 @@ <h2 id="About-Committers">Committers</h2> -<div class="table-wrap"><table class="table table-bordered table-responsive"><colgroup span="1"><col span="1"><col span="1"><col span="1"><col span="1"><col span="1"></colgroup><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Name</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>ID</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>role</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>email address</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>website</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>Andreas Andreou</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>andyhot</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>PMC member</p></td><td colspan="1" rowspan="1" class="confluenceTd"><div class="content-wrapper"> - -<div class="adaptavist-psl-unlicensed-banner adaptavist-psl-warning adaptavist-psl-js"> - <b>This page contains macros or features from a plugin which requires a valid license.</b> - - <p>You will need to contact your administrator.</p> - -</div> - +<div class="table-wrap"><table class="table table-bordered table-responsive"><colgroup span="1"><col span="1"><col span="1"><col span="1"><col span="1"><col span="1"></colgroup><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Name</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>ID</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>role</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>email address</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>website</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>Andreas Andreou</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>andyhot</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>PMC member</p></td><td colspan="1" rowspan="1" class="confluenceTd"><div class="content-wrapper"> <div class="cfm-align-right" style="text-align: right;">andy...@apache.org</div> </div></td><td colspan="1" rowspan="1" class="confluenceTd"><a class="external-link" href="http://andyhot.gr" rel="nofollow">http://andyhot.gr</a></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>Ben Dotte</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>bdotte</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>committer</p></td><td colspan="1" rowspan="1" class="confluenceTd"><div class="content-wrapper"> <div class="cfm-align-right" style="text-align: right;">bdo...@apache.org</div> Modified: websites/production/tapestry/content/ajax-and-zones.html ============================================================================== --- websites/production/tapestry/content/ajax-and-zones.html (original) +++ websites/production/tapestry/content/ajax-and-zones.html Fri Feb 28 18:18:17 2025 @@ -154,15 +154,7 @@ <!-- /// Content Start --> <div id="content"> - <div id="ConfluenceContent"> - -<div class="adaptavist-psl-unlicensed-banner adaptavist-psl-warning adaptavist-psl-js"> - <b>This page contains macros or features from a plugin which requires a valid license.</b> - - <p>You will need to contact your administrator.</p> - -</div> -<div class="aui-label" style="float:right" title="Related Articles"> + <div id="ConfluenceContent"><div class="aui-label" style="float:right" title="Related Articles"> 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 Fri Feb 28 18:18:17 2025 @@ -155,11 +155,11 @@ <!-- /// Content Start --> <div id="content"> <div id="ConfluenceContent"><h1 id="AjaxComponentsFAQ-AjaxComponents">Ajax Components</h1><p>Main article: <a href="ajax-and-zones.html">Ajax and Zones</a></p><h2 id="AjaxComponentsFAQ-Contents">Contents</h2><p><style type="text/css">/*<![CDATA[*/ -div.rbtoc1740593864946 {padding: 0px;} -div.rbtoc1740593864946 ul {margin-left: 0px;} -div.rbtoc1740593864946 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1740766665423 {padding: 0px;} +div.rbtoc1740766665423 ul {margin-left: 0px;} +div.rbtoc1740766665423 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></p><div class="toc-macro rbtoc1740593864946"> +/*]]>*/</style></p><div class="toc-macro rbtoc1740766665423"> <ul class="toc-indentation"><li><a href="#AjaxComponentsFAQ-DoIhavetospecifybothidandt:idforZonecomponents?">Do I have to specify both id and t:id for Zone components?</a></li><li><a href="#AjaxComponentsFAQ-HowdoIupdatethecontentofaZonefromaneventhandlermethod?">How do I update the content of a Zone from an event handler method?</a></li><li><a href="#AjaxComponentsFAQ-HowtoIupdatemultiplezonesinasingleeventhandler?">How to I update multiple zones in a single event handler?</a></li><li><a href="#AjaxComponentsFAQ-What'sthatweirdnumberinthemiddleoftheclientidsafteraZoneisupdated?">What's that weird number in the middle of the client ids after a Zone is updated?</a></li><li><a href="#AjaxComponentsFAQ-WhydoIsometimesgettheexception"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?</a></li></ul> </div><h2 id="AjaxComponentsFAQ-DoIhavetospecifybothidandt:idforZonecomponents?">Do I have to specify both <code>id</code> and <code>t:id</code> for Zone components?</h2><p>The examples for the Zone component (in the Component Reference) consistently specify both <code>id</code> and <code>t:id</code> and this is probably a good idea.</p><p>Generally speaking, if you don't specify the client-side id (the <code>id</code> attribute), it will be the same as the Tapestry component id (<code>t:id</code>).</p><p>However, there are any number of exceptions to this rule. The Zone may be rendering inside a Loop (in which case, each rendering will have a unique client side id). The Zone may be rendering as part of a partial page render, in which case, a random unique id is inserted into the id. There are other examples where Tapestry component ids in nested components may also clash.</p><p>The point is, to be sure, specify the exact client id. This will be the value for the <code>zone</code> p arameter of the triggering component (such as a Form, PageLink, ActionLink, etc.).</p><h2 id="AjaxComponentsFAQ-HowdoIupdatethecontentofaZonefromaneventhandlermethod?">How do I update the content of a Zone from an event handler method?</h2><p>When a client-side link or form triggers an update, the return value from the event handler method is used to construct a partial page response; this partial page response includes markup content that is used to update the Zone's client-side <code><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><code class="language-xml"><t:zone id="search" t:id="searchZone"> Modified: websites/production/tapestry/content/aliases.html ============================================================================== --- websites/production/tapestry/content/aliases.html (original) +++ websites/production/tapestry/content/aliases.html Fri Feb 28 18:18:17 2025 @@ -161,15 +161,7 @@ <span class="param-message">— Use ServiceOverrides instead. Aliases will be removed starting in 5.3.</span> -</div> - -<div class="adaptavist-psl-unlicensed-banner adaptavist-psl-warning adaptavist-psl-js"> - <b>This page contains macros or features from a plugin which requires a valid license.</b> - - <p>You will need to contact your administrator.</p> - -</div> -<div class="aui-label" style="float:right" title="Related Articles"> +</div><div class="aui-label" style="float:right" title="Related Articles"> Modified: websites/production/tapestry/content/annotations.html ============================================================================== --- websites/production/tapestry/content/annotations.html (original) +++ websites/production/tapestry/content/annotations.html Fri Feb 28 18:18:17 2025 @@ -154,15 +154,7 @@ <!-- /// Content Start --> <div id="content"> - <div id="ConfluenceContent"> - -<div class="adaptavist-psl-unlicensed-banner adaptavist-psl-warning adaptavist-psl-js"> - <b>This page contains macros or features from a plugin which requires a valid license.</b> - - <p>You will need to contact your administrator.</p> - -</div> -<div class="aui-label" style="float:right" title="Related Articles"> + <div id="ConfluenceContent"><div class="aui-label" style="float:right" title="Related Articles"> 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 Fri Feb 28 18:18:17 2025 @@ -155,11 +155,11 @@ <!-- /// Content Start --> <div id="content"> <div id="ConfluenceContent"><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.rbtoc1740593668144 {padding: 0px;} -div.rbtoc1740593668144 ul {margin-left: 0px;} -div.rbtoc1740593668144 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1740766468440 {padding: 0px;} +div.rbtoc1740766468440 ul {margin-left: 0px;} +div.rbtoc1740766468440 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></p><div class="toc-macro rbtoc1740593668144"> +/*]]>*/</style></p><div class="toc-macro rbtoc1740766468440"> <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> Modified: websites/production/tapestry/content/assets.html ============================================================================== --- websites/production/tapestry/content/assets.html (original) +++ websites/production/tapestry/content/assets.html Fri Feb 28 18:18:17 2025 @@ -154,15 +154,7 @@ <!-- /// Content Start --> <div id="content"> - <div id="ConfluenceContent"><p>In Tapestry, <strong>Assets</strong> are any kind of <em>static</em> content that may be downloaded to a client web browser, such as images, style sheets and JavaScript files.</p> - -<div class="adaptavist-psl-unlicensed-banner adaptavist-psl-warning adaptavist-psl-js"> - <b>This page contains macros or features from a plugin which requires a valid license.</b> - - <p>You will need to contact your administrator.</p> - -</div> -<div class="aui-label" style="float:right" title="Related Articles"> + <div id="ConfluenceContent"><p>In Tapestry, <strong>Assets</strong> are any kind of <em>static</em> content that may be downloaded to a client web browser, such as images, style sheets and JavaScript files.</p><div class="aui-label" style="float:right" title="Related Articles"> Modified: websites/production/tapestry/content/banner.html ============================================================================== --- websites/production/tapestry/content/banner.html (original) +++ websites/production/tapestry/content/banner.html Fri Feb 28 18:18:17 2025 @@ -154,15 +154,7 @@ <!-- /// Content Start --> <div id="content"> - <div id="ConfluenceContent"><div class="row" id="top"> - -<div class="adaptavist-psl-unlicensed-banner adaptavist-psl-warning adaptavist-psl-js"> - <b>This page contains macros or features from a plugin which requires a valid license.</b> - - <p>You will need to contact your administrator.</p> - -</div> -<div class="col-md-8 home-banner"><p><span class="confluence-embedded-file-wrapper confluence-embedded-manual-size"><img class="confluence-embedded-image" draggable="false" height="250" src="banner.data/apache-tapestry-icontext-600.png"></span></p></div> + <div id="ConfluenceContent"><div class="row" id="top"><div class="col-md-8 home-banner"><p><span class="confluence-embedded-file-wrapper confluence-embedded-manual-size"><img class="confluence-embedded-image" draggable="false" height="250" src="banner.data/apache-tapestry-icontext-600.png"></span></p></div> <div class="col-md-4" style="padding: 0 2em 2em"><p>A component-oriented framework for creating highly scalable web applications in Java.</p></div> Modified: websites/production/tapestry/content/bannerv2.html ============================================================================== --- websites/production/tapestry/content/bannerv2.html (original) +++ websites/production/tapestry/content/bannerv2.html Fri Feb 28 18:18:17 2025 @@ -154,15 +154,7 @@ <!-- /// Content Start --> <div id="content"> - <div id="ConfluenceContent"><div class="row" id="top"> - -<div class="adaptavist-psl-unlicensed-banner adaptavist-psl-warning adaptavist-psl-js"> - <b>This page contains macros or features from a plugin which requires a valid license.</b> - - <p>You will need to contact your administrator.</p> - -</div> -<div class="col-md-8"><h1 id="BannerV2-"><span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image confluence-external-resource" draggable="false" src="http://tapestry.apache.org/images/tapestry.png" data-image-src="http://tapestry.apache.org/images/tapestry.png"></span> </h1></div> + <div id="ConfluenceContent"><div class="row" id="top"><div class="col-md-8"><h1 id="BannerV2-"><span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image confluence-external-resource" draggable="false" src="http://tapestry.apache.org/images/tapestry.png" data-image-src="http://tapestry.apache.org/images/tapestry.png"></span> </h1></div> <div class="col-md-4" style="padding: 0 2em 2em"><div><form enctype="application/x-www-form-urlencoded" method="get" action="http://tapestry.apache.org/search.html"> Modified: websites/production/tapestry/content/bean-validation.html ============================================================================== --- websites/production/tapestry/content/bean-validation.html (original) +++ websites/production/tapestry/content/bean-validation.html Fri Feb 28 18:18:17 2025 @@ -160,15 +160,7 @@ -</div><p><strong>Bean validation</strong> involves validating user input using Tapestry's built-in support for the <a class="external-link" href="http://jcp.org/en/jsr/detail?id=303" rel="nofollow">JSR 303 Bean Validation API</a>.</p> - -<div class="adaptavist-psl-unlicensed-banner adaptavist-psl-warning adaptavist-psl-js"> - <b>This page contains macros or features from a plugin which requires a valid license.</b> - - <p>You will need to contact your administrator.</p> - -</div> -<div class="aui-label" style="float:right" title="Related Articles"> +</div><p><strong>Bean validation</strong> involves validating user input using Tapestry's built-in support for the <a class="external-link" href="http://jcp.org/en/jsr/detail?id=303" rel="nofollow">JSR 303 Bean Validation API</a>.</p><div class="aui-label" style="float:right" title="Related Articles"> Modified: websites/production/tapestry/content/beaneditform-faq.html ============================================================================== --- websites/production/tapestry/content/beaneditform-faq.html (original) +++ websites/production/tapestry/content/beaneditform-faq.html Fri Feb 28 18:18:17 2025 @@ -155,11 +155,11 @@ <!-- /// Content Start --> <div id="content"> <div id="ConfluenceContent"><h1 id="BeanEditFormFAQ-BeanEditForm">BeanEditForm</h1><p>Main Article: <a href="beaneditform-guide.html">BeanEditForm Guide</a></p><h2 id="BeanEditFormFAQ-Contents">Contents</h2><p><style type="text/css">/*<![CDATA[*/ -div.rbtoc1740593676741 {padding: 0px;} -div.rbtoc1740593676741 ul {margin-left: 0px;} -div.rbtoc1740593676741 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1740766477190 {padding: 0px;} +div.rbtoc1740766477190 ul {margin-left: 0px;} +div.rbtoc1740766477190 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></p><div class="toc-macro rbtoc1740593676741"> +/*]]>*/</style></p><div class="toc-macro rbtoc1740766477190"> <ul class="toc-indentation"><li><a href="#BeanEditFormFAQ-WhydoIgetexceptionsaboutinstantiatingabeanwhenusingBeanEditForm?">Why do I get exceptions about instantiating a bean when using BeanEditForm?</a></li><li><a href="#BeanEditFormFAQ-What'sthedifferencebetweenBeanEditorandBeanEditForm?">What's the difference between BeanEditor and BeanEditForm?</a></li><li><a href="#BeanEditFormFAQ-HowdoIcustomizethelayoutoftheBeanEditForm?">How do I customize the layout of the BeanEditForm?</a></li></ul> </div><h2 id="BeanEditFormFAQ-WhydoIgetexceptionsaboutinstantiatingabeanwhenusingBeanEditForm?">Why do I get exceptions about instantiating a bean when using BeanEditForm?</h2><p>When you render a BeanEditForm, or when the rendered form is submitted, Tapestry must instantiate an instance of the object to be edited. This occurs when the BeanEditForm's <code>object</code> parameter is bound to null: Tapestry instantiates an instance of the property type so that the BeanEditForm has an object to read default values from, or to push submitted values into.</p><p>By default, this uses the standard <a href="injection-in-detail.html">injection mechanism</a>, which means that Tapestry will identify the public constructor with the most parameters, and attempt to find objects and other objects for each constructor parameter.</p><p>There's two ways to fine tune this so you don't get errors:</p><ul><li>Place an @<a class="external-link" href="http://tapestry.apache.org/current/apidocs/org/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><code class="language-java">public class MyBean { Modified: websites/production/tapestry/content/beaneditform-guide.html ============================================================================== --- websites/production/tapestry/content/beaneditform-guide.html (original) +++ websites/production/tapestry/content/beaneditform-guide.html Fri Feb 28 18:18:17 2025 @@ -154,15 +154,7 @@ <!-- /// Content Start --> <div id="content"> - <div id="ConfluenceContent"><p><strong>BeanEditForm</strong> is a powerful Tapestry component capable of generating a complete create/edit user interface for a typical JavaBean.</p> - -<div class="adaptavist-psl-unlicensed-banner adaptavist-psl-warning adaptavist-psl-js"> - <b>This page contains macros or features from a plugin which requires a valid license.</b> - - <p>You will need to contact your administrator.</p> - -</div> -<div style="float: right; max-width: 30%; margin: 1em"><div class="panel" style="border-color: #eee;border-width: 1px;"><div class="panelHeader" style="border-bottom-width: 1px;border-bottom-color: #eee;background-color: #eee;"><b>JumpStart Demos</b></div><div class="panelContent"> + <div id="ConfluenceContent"><p><strong>BeanEditForm</strong> is a powerful Tapestry component capable of generating a complete create/edit user interface for a typical JavaBean.</p><div style="float: right; max-width: 30%; margin: 1em"><div class="panel" style="border-color: #eee;border-width: 1px;"><div class="panelHeader" style="border-bottom-width: 1px;border-bottom-color: #eee;background-color: #eee;"><b>JumpStart Demos</b></div><div class="panelContent"> <ul><li><p><a class="external-link" href="http://jumpstart.doublenegative.com.au/jumpstart/examples/input/edit1/1" rel="nofollow">Edit (Using BeanEditForm)</a></p></li><li><a class="external-link" href="http://jumpstart.doublenegative.com.au/jumpstart/examples/input/create1" rel="nofollow">Create (Using BeanEditForm)</a></li><li><a class="external-link" href="http://jumpstart.doublenegative.com.au/jumpstart/examples/input/morecontroledit1/1" rel="nofollow">More Control Edit (Using BeanEditor)</a></li></ul> </div></div></div> Modified: websites/production/tapestry/content/chainbuilder-service.html ============================================================================== --- websites/production/tapestry/content/chainbuilder-service.html (original) +++ websites/production/tapestry/content/chainbuilder-service.html Fri Feb 28 18:18:17 2025 @@ -154,15 +154,7 @@ <!-- /// Content Start --> <div id="content"> - <div id="ConfluenceContent"><p>The <strong>ChainBuilder Service</strong> is a built-in service used to implement of one of the most useful of the <em>Gang Of Four</em> design patterns, the <a class="external-link" href="https://en.wikipedia.org/wiki/Chain-of-responsibility_pattern" rel="nofollow">chain of responsibility</a>.</p> - -<div class="adaptavist-psl-unlicensed-banner adaptavist-psl-warning adaptavist-psl-js"> - <b>This page contains macros or features from a plugin which requires a valid license.</b> - - <p>You will need to contact your administrator.</p> - -</div> -<div class="aui-label" style="float:right" title="Related Articles"> + <div id="ConfluenceContent"><p>The <strong>ChainBuilder Service</strong> is a built-in service used to implement of one of the most useful of the <em>Gang Of Four</em> design patterns, the <a class="external-link" href="https://en.wikipedia.org/wiki/Chain-of-responsibility_pattern" rel="nofollow">chain of responsibility</a>.</p><div class="aui-label" style="float:right" title="Related Articles"> Modified: websites/production/tapestry/content/class-reloading.html ============================================================================== --- websites/production/tapestry/content/class-reloading.html (original) +++ websites/production/tapestry/content/class-reloading.html Fri Feb 28 18:18:17 2025 @@ -154,15 +154,7 @@ <!-- /// Content Start --> <div id="content"> - <div id="ConfluenceContent"><h1 id="ClassReloading-LiveClassandTemplateReloading">Live Class and Template Reloading</h1> - -<div class="adaptavist-psl-unlicensed-banner adaptavist-psl-warning adaptavist-psl-js"> - <b>This page contains macros or features from a plugin which requires a valid license.</b> - - <p>You will need to contact your administrator.</p> - -</div> -<div class="aui-label" style="float:right" title="Related Articles"> + <div id="ConfluenceContent"><h1 id="ClassReloading-LiveClassandTemplateReloading">Live Class and Template Reloading</h1><div class="aui-label" style="float:right" title="Related Articles"> @@ -198,11 +190,11 @@ <p>One of the best features of Tapestry is automatic reloading of changed classes and templates. <em>Page and component</em> classes will automatically reload when changed. Likewise, changes to component templates and other related resources will also be picked up immediately. In addition, starting in version 5.2, your service classes will also be reloaded automatically after changes (if you're using <a href="ioc.html">Tapestry IoC</a>). Starting in version 5.8.3, you enable multiple classloader mode, which allows smarter page class invalidation.</p><div class="confluence-information-macro confluence-information-macro-information"><p class="title conf-macro-render">Not necessarily throwing away all cached page instances</p><span class="aui-icon aui-icon-small aui-iconfont-info confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>Since Tapestry 5.8.3, Tapestry can be run in multiple classloaders mode. When it's on, only the affected cached page instances are discarded and rebuilt instead of all of them. </p></div></div><h2 id="ClassReloading-Contents">Contents</h2><p><style type="text/css">/*<![CDATA[*/ -div.rbtoc1740593684969 {padding: 0px;} -div.rbtoc1740593684969 ul {margin-left: 0px;} -div.rbtoc1740593684969 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1740766485474 {padding: 0px;} +div.rbtoc1740766485474 ul {margin-left: 0px;} +div.rbtoc1740766485474 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></p><div class="toc-macro rbtoc1740593684969"> +/*]]>*/</style></p><div class="toc-macro rbtoc1740766485474"> <ul class="toc-indentation"><li><a href="#ClassReloading-TemplateReloading">Template Reloading</a></li><li><a href="#ClassReloading-ClassReloading">Class Reloading</a></li><li><a href="#ClassReloading-PackagesScanned">Packages Scanned</a></li><li><a href="#ClassReloading-FileSystemOnly">File System Only</a></li><li><a href="#ClassReloading-ClassLoaderIssues">Class Loader Issues</a></li><li><a href="#ClassReloading-ClassCastExceptions">ClassCastExceptions</a></li><li><a href="#ClassReloading-HandlingReloadsinyourCode">Handling Reloads in your Code</a></li><li><a href="#ClassReloading-CheckingForUpdates">Checking For Updates</a></li><li><a href="#ClassReloading-TroubleshootingLiveClassReloading">Troubleshooting Live Class Reloading</a> <ul class="toc-indentation"><li><a href="#ClassReloading-QuickChecklist">Quick Checklist</a></li><li><a href="#ClassReloading-IfLiveClassReloadingdoesn'twork">If Live Class Reloading doesn't work</a> <ul class="toc-indentation"><li><a href="#ClassReloading-ProductionMode">Production Mode</a></li><li><a href="#ClassReloading-BuildPathIssues">Build Path Issues</a></li><li><a href="#ClassReloading-BuildingAutomatically">Building Automatically</a></li><li><a href="#ClassReloading-TurnoffJVMhotcodeswapping&automaticrestarts">Turn off JVM hot code swapping & automatic restarts</a></li></ul> Modified: websites/production/tapestry/content/client-side-javascript.html ============================================================================== --- websites/production/tapestry/content/client-side-javascript.html (original) +++ websites/production/tapestry/content/client-side-javascript.html Fri Feb 28 18:18:17 2025 @@ -154,15 +154,7 @@ <!-- /// Content Start --> <div id="content"> - <div id="ConfluenceContent"><p>Perhaps nothing in Tapestry has changed over the years so much as the way client-side JavaScript is supported. From the get go, the goal was to make JavaScript a first-class citizen in the Tapestry world, and make it easy to encapsulate JavaScript within components.</p> - -<div class="adaptavist-psl-unlicensed-banner adaptavist-psl-warning adaptavist-psl-js"> - <b>This page contains macros or features from a plugin which requires a valid license.</b> - - <p>You will need to contact your administrator.</p> - -</div> -<div class="aui-label" style="float:right" title="Related Articles"> + <div id="ConfluenceContent"><p>Perhaps nothing in Tapestry has changed over the years so much as the way client-side JavaScript is supported. From the get go, the goal was to make JavaScript a first-class citizen in the Tapestry world, and make it easy to encapsulate JavaScript within components.</p><div class="aui-label" style="float:right" title="Related Articles"> Modified: websites/production/tapestry/content/coffeescript.html ============================================================================== --- websites/production/tapestry/content/coffeescript.html (original) +++ websites/production/tapestry/content/coffeescript.html Fri Feb 28 18:18:17 2025 @@ -154,15 +154,7 @@ <!-- /// Content Start --> <div id="content"> - <div id="ConfluenceContent"><p><strong>CoffeeScript</strong> (<a class="external-link" href="http://coffeescript.org" rel="nofollow">http://coffeescript.org</a>) is a language that compiles down to JavaScript.</p> - -<div class="adaptavist-psl-unlicensed-banner adaptavist-psl-warning adaptavist-psl-js"> - <b>This page contains macros or features from a plugin which requires a valid license.</b> - - <p>You will need to contact your administrator.</p> - -</div> -<div class="aui-label" style="float:right" title="Related Articles"> + <div id="ConfluenceContent"><p><strong>CoffeeScript</strong> (<a class="external-link" href="http://coffeescript.org" rel="nofollow">http://coffeescript.org</a>) is a language that compiles down to JavaScript.</p><div class="aui-label" style="float:right" title="Related Articles"> Modified: websites/production/tapestry/content/committers.html ============================================================================== --- websites/production/tapestry/content/committers.html (original) +++ websites/production/tapestry/content/committers.html Fri Feb 28 18:18:17 2025 @@ -154,15 +154,7 @@ <!-- /// Content Start --> <div id="content"> - <div id="ConfluenceContent"><div class="table-wrap"><table class="table table-bordered table-responsive"><colgroup span="1"><col span="1"><col span="1"><col span="1"><col span="1"><col span="1"></colgroup><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Name</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>ID</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>role</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>email address</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>website</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>Andreas Andreou</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>andyhot</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>PMC member</p></td><td colspan="1" rowspan="1" class="confluenceTd"><div class="content-wrapper"> - -<div class="adaptavist-psl-unlicensed-banner adaptavist-psl-warning adaptavist-psl-js"> - <b>This page contains macros or features from a plugin which requires a valid license.</b> - - <p>You will need to contact your administrator.</p> - -</div> - + <div id="ConfluenceContent"><div class="table-wrap"><table class="table table-bordered table-responsive"><colgroup span="1"><col span="1"><col span="1"><col span="1"><col span="1"><col span="1"></colgroup><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Name</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>ID</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>role</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>email address</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>website</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>Andreas Andreou</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>andyhot</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>PMC member</p></td><td colspan="1" rowspan="1" class="confluenceTd"><div class="content-wrapper"> <div class="cfm-align-right" style="text-align: right;">andy...@apache.org</div> </div></td><td colspan="1" rowspan="1" class="confluenceTd"><a class="external-link" href="http://andyhot.gr" rel="nofollow">http://andyhot.gr</a></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>Ben Dotte</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>bdotte</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>committer</p></td><td colspan="1" rowspan="1" class="confluenceTd"><div class="content-wrapper"> <div class="cfm-align-right" style="text-align: right;">bdo...@apache.org</div> Modified: websites/production/tapestry/content/community.html ============================================================================== --- websites/production/tapestry/content/community.html (original) +++ websites/production/tapestry/content/community.html Fri Feb 28 18:18:17 2025 @@ -155,11 +155,11 @@ <!-- /// Content Start --> <div id="content"> <div id="ConfluenceContent"><p>Tapestry has an active community of users and developers. This is an overview of how to participate, along with a list of some of the great contributions of the community members.</p><p><style type="text/css">/*<![CDATA[*/ -div.rbtoc1740593710444 {padding: 0px;} -div.rbtoc1740593710444 ul {margin-left: 0px;} -div.rbtoc1740593710444 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1740766511006 {padding: 0px;} +div.rbtoc1740766511006 ul {margin-left: 0px;} +div.rbtoc1740766511006 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></p><div class="toc-macro rbtoc1740593710444"> +/*]]>*/</style></p><div class="toc-macro rbtoc1740766511006"> <ul class="toc-indentation"><li><a href="#Community-GettingInvolved">Getting Involved</a> <ul class="toc-indentation"><li><a href="#Community-ReportingProblems/GettingSupport">Reporting Problems / Getting Support</a></li><li><a href="#Community-ContributingtranslationsforTapestrybuilt-inmessages">Contributing translations for Tapestry built-in messages</a></li><li><a href="#Community-SourceCodeAccess">Source Code Access</a></li><li><a href="#Community-BecomingaContributor">Becoming a Contributor</a></li><li><a href="#Community-BecomingaCommitter">Becoming a Committer</a></li></ul> </li><li><a href="#Community-CommunityContributions">Community Contributions</a> Modified: websites/production/tapestry/content/component-cheat-sheet.html ============================================================================== --- websites/production/tapestry/content/component-cheat-sheet.html (original) +++ websites/production/tapestry/content/component-cheat-sheet.html Fri Feb 28 18:18:17 2025 @@ -154,15 +154,7 @@ <!-- /// Content Start --> <div id="content"> - <div id="ConfluenceContent"><p>This is a summary of the more common annotations and methods you can add to Tapestry pages and component classes.</p> - -<div class="adaptavist-psl-unlicensed-banner adaptavist-psl-warning adaptavist-psl-js"> - <b>This page contains macros or features from a plugin which requires a valid license.</b> - - <p>You will need to contact your administrator.</p> - -</div> -<div class="aui-label" style="float:right" title="Related Articles"> + <div id="ConfluenceContent"><p>This is a summary of the more common annotations and methods you can add to Tapestry pages and component classes.</p><div class="aui-label" style="float:right" title="Related Articles"> Modified: websites/production/tapestry/content/component-classes.html ============================================================================== --- websites/production/tapestry/content/component-classes.html (original) +++ websites/production/tapestry/content/component-classes.html Fri Feb 28 18:18:17 2025 @@ -154,15 +154,7 @@ <!-- /// Content Start --> <div id="content"> - <div id="ConfluenceContent"><p>A <strong>component class</strong> is the class associated with a page, component or mixin in your Tapestry web application. Classes for pages, components and mixins are all created in an identical way. They are pure POJOs (Plain Old Java Objects), typically with annotations and conventionally named methods. They are not <em>abstract</em>, nor do they need to extend base classes or implement interfaces.</p> - -<div class="adaptavist-psl-unlicensed-banner adaptavist-psl-warning adaptavist-psl-js"> - <b>This page contains macros or features from a plugin which requires a valid license.</b> - - <p>You will need to contact your administrator.</p> - -</div> -<div class="aui-label" style="float:right" title="Related Articles"> + <div id="ConfluenceContent"><p>A <strong>component class</strong> is the class associated with a page, component or mixin in your Tapestry web application. Classes for pages, components and mixins are all created in an identical way. They are pure POJOs (Plain Old Java Objects), typically with annotations and conventionally named methods. They are not <em>abstract</em>, nor do they need to extend base classes or implement interfaces.</p><div class="aui-label" style="float:right" title="Related Articles"> Modified: websites/production/tapestry/content/component-events-faq.html ============================================================================== --- websites/production/tapestry/content/component-events-faq.html (original) +++ websites/production/tapestry/content/component-events-faq.html Fri Feb 28 18:18:17 2025 @@ -155,11 +155,11 @@ <!-- /// Content Start --> <div id="content"> <div id="ConfluenceContent"><h1 id="ComponentEventsFAQ-ComponentEvents">Component Events</h1><p>Main Article: <a href="component-events.html">Component Events</a></p><h2 id="ComponentEventsFAQ-Contents">Contents</h2><p><style type="text/css">/*<![CDATA[*/ -div.rbtoc1740593809153 {padding: 0px;} -div.rbtoc1740593809153 ul {margin-left: 0px;} -div.rbtoc1740593809153 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1740766609954 {padding: 0px;} +div.rbtoc1740766609954 ul {margin-left: 0px;} +div.rbtoc1740766609954 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></p><div class="toc-macro rbtoc1740593809153"> +/*]]>*/</style></p><div class="toc-macro rbtoc1740766609954"> <ul class="toc-indentation"><li><a href="#ComponentEventsFAQ-WhydoesTapestrysendaredirectafteraformissubmitted?">Why does Tapestry send a redirect after a form is submitted?</a></li><li><a href="#ComponentEventsFAQ-IspecifiedazoneinmyActionLink/EventLink,sowhydoesn'tmyeventfireviaajax(request.isXHR()isfalse)?">I specified a zone in my ActionLink/EventLink, so why doesn't my event fire via ajax (request.isXHR() is false)?</a></li></ul> </div><h2 id="ComponentEventsFAQ-WhydoesTapestrysendaredirectafteraformissubmitted?">Why does Tapestry send a redirect after a form is submitted?</h2><p>This is an extension of the <a class="external-link" href="http://en.wikipedia.org/wiki/Post/Redirect/Get" rel="nofollow">Post/Redirect/Get</a> approach. It ensures that after an operation that updates server-side state, such as a form submission, if the user resubmits the resulting page, the operation is <strong>not</strong> performed a second time; instead just the results of the operation, reflecting the changed server-side state, is re-rendered.</p><p>This has the unwanted requirement that any data needed to render the response must persist between the event request (the form submission) and the render request; this often means that fields must be annotated with @<a class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/annotations/Persist.html">Persist</a>. Modified: websites/production/tapestry/content/component-events.html ============================================================================== --- websites/production/tapestry/content/component-events.html (original) +++ websites/production/tapestry/content/component-events.html Fri Feb 28 18:18:17 2025 @@ -154,15 +154,7 @@ <!-- /// Content Start --> <div id="content"> - <div id="ConfluenceContent"><p><strong>Component events</strong> are Tapestry's way of conveying a user's interactions with the web page, such as clicking links and submitting forms, to designated methods in your page and component classes. When a component event is triggered, Tapestry calls the event handler method you've provided, if any, in the containing component's class.</p> - -<div class="adaptavist-psl-unlicensed-banner adaptavist-psl-warning adaptavist-psl-js"> - <b>This page contains macros or features from a plugin which requires a valid license.</b> - - <p>You will need to contact your administrator.</p> - -</div> -<div class="aui-label" style="float:right; max-width: 30%; margin: 1em" title="Related Articles"> + <div id="ConfluenceContent"><p><strong>Component events</strong> are Tapestry's way of conveying a user's interactions with the web page, such as clicking links and submitting forms, to designated methods in your page and component classes. When a component event is triggered, Tapestry calls the event handler method you've provided, if any, in the containing component's class.</p><div class="aui-label" style="float:right; max-width: 30%; margin: 1em" title="Related Articles"> Modified: websites/production/tapestry/content/component-libraries.html ============================================================================== --- websites/production/tapestry/content/component-libraries.html (original) +++ websites/production/tapestry/content/component-libraries.html Fri Feb 28 18:18:17 2025 @@ -154,15 +154,7 @@ <!-- /// Content Start --> <div id="content"> - <div id="ConfluenceContent"><div class="confluence-information-macro confluence-information-macro-warning"><span class="aui-icon aui-icon-small aui-iconfont-error confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>This page has not yet been fully updated for Tapestry 5.4. Things are different and simpler in 5.4 than in previous releases.</p></div></div><h1 id="ComponentLibraries-CreatingComponentLibraries">Creating Component Libraries</h1><p>Nearly every Tapestry application includes a least a couple of custom components, specific to the application. What's exciting about Tapestry is how easy it is to package components for reuse across many applications ... and the fact that applications using a component library need no special configuration.</p> - -<div class="adaptavist-psl-unlicensed-banner adaptavist-psl-warning adaptavist-psl-js"> - <b>This page contains macros or features from a plugin which requires a valid license.</b> - - <p>You will need to contact your administrator.</p> - -</div> -<div class="aui-label" style="float:right" title="Related Articles"> + <div id="ConfluenceContent"><div class="confluence-information-macro confluence-information-macro-warning"><span class="aui-icon aui-icon-small aui-iconfont-error confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>This page has not yet been fully updated for Tapestry 5.4. Things are different and simpler in 5.4 than in previous releases.</p></div></div><h1 id="ComponentLibraries-CreatingComponentLibraries">Creating Component Libraries</h1><p>Nearly every Tapestry application includes a least a couple of custom components, specific to the application. What's exciting about Tapestry is how easy it is to package components for reuse across many applications ... and the fact that applications using a component library need no special configuration.</p><div class="aui-label" style="float:right" title="Related Articles"> Modified: websites/production/tapestry/content/component-mixins.html ============================================================================== --- websites/production/tapestry/content/component-mixins.html (original) +++ websites/production/tapestry/content/component-mixins.html Fri Feb 28 18:18:17 2025 @@ -154,15 +154,7 @@ <!-- /// Content Start --> <div id="content"> - <div id="ConfluenceContent"><p>A <strong>Component Mixin</strong> is a way to supplement an existing Tapestry component with additional behavior.</p> - -<div class="adaptavist-psl-unlicensed-banner adaptavist-psl-warning adaptavist-psl-js"> - <b>This page contains macros or features from a plugin which requires a valid license.</b> - - <p>You will need to contact your administrator.</p> - -</div> -<div class="aui-label" style="float:right" title="Related Articles"> + <div id="ConfluenceContent"><p>A <strong>Component Mixin</strong> is a way to supplement an existing Tapestry component with additional behavior.</p><div class="aui-label" style="float:right" title="Related Articles"> Modified: websites/production/tapestry/content/component-parameters.html ============================================================================== --- websites/production/tapestry/content/component-parameters.html (original) +++ websites/production/tapestry/content/component-parameters.html Fri Feb 28 18:18:17 2025 @@ -154,15 +154,7 @@ <!-- /// Content Start --> <div id="content"> - <div id="ConfluenceContent"><p><strong>Component parameters</strong> are the primary means for a component instance and its container to communicate with each other. Parameters are used to <em>configure</em> component instances.</p> - -<div class="adaptavist-psl-unlicensed-banner adaptavist-psl-warning adaptavist-psl-js"> - <b>This page contains macros or features from a plugin which requires a valid license.</b> - - <p>You will need to contact your administrator.</p> - -</div> -<div class="aui-label" style="float:right; margin: 1em" title="Related Articles"> + <div id="ConfluenceContent"><p><strong>Component parameters</strong> are the primary means for a component instance and its container to communicate with each other. Parameters are used to <em>configure</em> component instances.</p><div class="aui-label" style="float:right; margin: 1em" title="Related Articles"> @@ -267,11 +259,11 @@ </div></div><p>A component may have any number of parameters. Each parameter has a specific name, a specific Java type (which may be a primitive value), and may be <em>optional</em> or <em>required</em>.</p><p>Within a component class, parameters are declared by using the @<a class="external-link" href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/annotations/Parameter.html">Parameter</a> annotation on a private field, as we'll see below.</p><p><span class="confluence-anchor-link" id="ComponentParameters-bindingparameters"></span></p><h1 id="ComponentParameters-ParameterBindings">Parameter Bindings</h1><p>In Tapestry, a parameter is not a slot into which data is pushed: it is a <em>connection</em> between a field of the component (marked with the @Parameter annotation) and a property or resource of the component's container. (Components can be nested, so the container can be either the page or another component.)</p><div class="navmenu" style="float:right; backgro und:white; margin:3px; padding:3px"> <div class="panel" style="border-width: 1px;"><div class="panelHeader" style="border-bottom-width: 1px;"><b>Contents</b></div><div class="panelContent"> <style type="text/css">/*<![CDATA[*/ -div.rbtoc1740593638309 {padding: 0px;} -div.rbtoc1740593638309 ul {margin-left: 0px;} -div.rbtoc1740593638309 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1740766438828 {padding: 0px;} +div.rbtoc1740766438828 ul {margin-left: 0px;} +div.rbtoc1740766438828 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style><div class="toc-macro rbtoc1740593638309"> +/*]]>*/</style><div class="toc-macro rbtoc1740766438828"> <ul class="toc-indentation"><li><a href="#ComponentParameters-ParameterBindings">Parameter Bindings</a></li><li><a href="#ComponentParameters-BindingExpressions">Binding Expressions</a></li><li><a href="#ComponentParameters-@Parameterannotation">@Parameter annotation</a></li><li><a href="#ComponentParameters-Don'tusethe${...}syntax!">Don't use the ${...} syntax!</a></li><li><a href="#ComponentParameters-InformalParameters">Informal Parameters</a></li><li><a href="#ComponentParameters-ParametersAreBi-Directional">Parameters Are Bi-Directional</a></li><li><a href="#ComponentParameters-InheritedParameterBindings">Inherited Parameter Bindings</a></li><li><a href="#ComponentParameters-ComputedParameterBindingDefaults">Computed Parameter Binding Defaults</a></li><li><a href="#ComponentParameters-UnboundParameters">Unbound Parameters</a></li><li><a href="#ComponentParameters-ParameterTypeCoercion">Parameter Type Coercion</a></li><li><a href="#ComponentParameters-ParameterNames">Parameter N ames</a></li><li><a href="#ComponentParameters-DeterminingifBound">Determining if Bound</a></li><li><a href="#ComponentParameters-PublishingParameters">Publishing Parameters</a></li></ul> </div> </div></div></div> <p>The connection between a component and a property (or resource) of its container is called a <em>binding</em>. The binding is two-way: the component can read the bound property by reading its parameter field. Likewise, a component that updates its parameter field will update the bound property.</p><p>This is important in a lot of cases; for example a TextField component can read <em>and update</em> the property bound to its value parameter. It reads the value when rendering, but updates the value when the form is submitted.</p><p>The component listed below is a looping component; it renders its body a number of times, defined by its <code>start</code> and <code>end</code> parameters (which set the boundaries of the loop). The component can update a <code>result</code> parameter bound to a property of its container; it will automatically count up or down depending on whether <code>start</code> or <code>end</code> is larger.</p><div class="code panel pdl" st yle="border-width: 1px;"><div class="codeContent panelContent pdl"> Modified: websites/production/tapestry/content/component-reference.html ============================================================================== --- websites/production/tapestry/content/component-reference.html (original) +++ websites/production/tapestry/content/component-reference.html Fri Feb 28 18:18:17 2025 @@ -154,15 +154,7 @@ <!-- /// Content Start --> <div id="content"> - <div id="ConfluenceContent"><p>Tapestry includes more than 65 built-in components and mixins. In addition, there are hundreds of Tapestry components freely available from others. Of course, Tapestry makes it <a href="component-classes.html">trivially easy</a> to create your own custom components, so if you don't see what you need, just develop them yourself.</p> - -<div class="adaptavist-psl-unlicensed-banner adaptavist-psl-warning adaptavist-psl-js"> - <b>This page contains macros or features from a plugin which requires a valid license.</b> - - <p>You will need to contact your administrator.</p> - -</div> -<div class="aui-label" style="float:right" title="Related Articles"> + <div id="ConfluenceContent"><p>Tapestry includes more than 65 built-in components and mixins. In addition, there are hundreds of Tapestry components freely available from others. Of course, Tapestry makes it <a href="component-classes.html">trivially easy</a> to create your own custom components, so if you don't see what you need, just develop them yourself.</p><div class="aui-label" style="float:right" title="Related Articles"> @@ -207,11 +199,11 @@ <p></p><p><strong>Contents</strong></p><p><style type="text/css">/*<![CDATA[*/ -div.rbtoc1740593686909 {padding: 0px;} -div.rbtoc1740593686909 ul {margin-left: 0px;} -div.rbtoc1740593686909 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1740766487394 {padding: 0px;} +div.rbtoc1740766487394 ul {margin-left: 0px;} +div.rbtoc1740766487394 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></p><div class="toc-macro rbtoc1740593686909"> +/*]]>*/</style></p><div class="toc-macro rbtoc1740766487394"> <ul class="toc-indentation"><li><a href="#ComponentReference-Tapestry-providedComponents">Tapestry-provided Components</a> <ul class="toc-indentation"><li><a href="#ComponentReference-AJAX-specificComponents">AJAX-specific Components</a></li><li><a href="#ComponentReference-BeanDisplaying&Editing">Bean Displaying & Editing</a></li><li><a href="#ComponentReference-ConditionalandLoopingComponents">Conditional and Looping Components</a></li><li><a href="#ComponentReference-FormComponents">Form Components</a></li><li><a href="#ComponentReference-Grids,TablesandTrees">Grids, Tables and Trees</a></li><li><a href="#ComponentReference-LinksandButtons">Links and Buttons</a></li><li><a href="#ComponentReference-OutputandMessages">Output and Messages</a></li><li><a href="#ComponentReference-Miscellaneous">Miscellaneous</a></li></ul> </li><li><a href="#ComponentReference-TapestryMixins">Tapestry Mixins</a></li><li><a href="#ComponentReference-TapestryPages">Tapestry Pages</a></li><li><a href="#ComponentReference-BaseComponents">Base Components</a></li><li><a href="#ComponentReference-OtherComponentLibraries">Other Component Libraries</a></li></ul> Modified: websites/production/tapestry/content/component-rendering.html ============================================================================== --- websites/production/tapestry/content/component-rendering.html (original) +++ websites/production/tapestry/content/component-rendering.html Fri Feb 28 18:18:17 2025 @@ -154,15 +154,7 @@ <!-- /// Content Start --> <div id="content"> - <div id="ConfluenceContent"><p><strong>Rendering of components</strong> in Tapestry 5 is based on a <em>state machine</em> and a <em>queue</em> (instead of the tail recursion used in Tapestry 4). This breaks the rendering process up into tiny pieces that can easily be implemented or overridden. Don't worry, in practice, writing components requires a breathtakingly small amount of code.</p> - -<div class="adaptavist-psl-unlicensed-banner adaptavist-psl-warning adaptavist-psl-js"> - <b>This page contains macros or features from a plugin which requires a valid license.</b> - - <p>You will need to contact your administrator.</p> - -</div> -<div class="aui-label" style="float:right" title="Related Articles"> + <div id="ConfluenceContent"><p><strong>Rendering of components</strong> in Tapestry 5 is based on a <em>state machine</em> and a <em>queue</em> (instead of the tail recursion used in Tapestry 4). This breaks the rendering process up into tiny pieces that can easily be implemented or overridden. Don't worry, in practice, writing components requires a breathtakingly small amount of code.</p><div class="aui-label" style="float:right" title="Related Articles"> Modified: websites/production/tapestry/content/component-templates.html ============================================================================== --- websites/production/tapestry/content/component-templates.html (original) +++ websites/production/tapestry/content/component-templates.html Fri Feb 28 18:18:17 2025 @@ -154,15 +154,7 @@ <!-- /// Content Start --> <div id="content"> - <div id="ConfluenceContent"> - -<div class="adaptavist-psl-unlicensed-banner adaptavist-psl-warning adaptavist-psl-js"> - <b>This page contains macros or features from a plugin which requires a valid license.</b> - - <p>You will need to contact your administrator.</p> - -</div> -<div class="aui-label" style="float:right; margin: 1em" title="Related Articles"> + <div id="ConfluenceContent"><div class="aui-label" style="float:right; margin: 1em" title="Related Articles"> Modified: websites/production/tapestry/content/configuration.html ============================================================================== --- websites/production/tapestry/content/configuration.html (original) +++ websites/production/tapestry/content/configuration.html Fri Feb 28 18:18:17 2025 @@ -154,15 +154,7 @@ <!-- /// Content Start --> <div id="content"> - <div id="ConfluenceContent"> - -<div class="adaptavist-psl-unlicensed-banner adaptavist-psl-warning adaptavist-psl-js"> - <b>This page contains macros or features from a plugin which requires a valid license.</b> - - <p>You will need to contact your administrator.</p> - -</div> -<div class="aui-label" style="float:right" title="Related Articles"> + <div id="ConfluenceContent"><div class="aui-label" style="float:right" title="Related Articles"> @@ -234,11 +226,11 @@ <h1 id="Configuration-ConfiguringTapestry">Configuring Tapestry</h1><p>This page discusses all the ways in which Tapestry can be configured. Tapestry applications are configured almost entirely using Java, with very little XML at all.</p><p><strong>Contents</strong></p><p><style type="text/css">/*<![CDATA[*/ -div.rbtoc1740593601147 {padding: 0px;} -div.rbtoc1740593601147 ul {margin-left: 0px;} -div.rbtoc1740593601147 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1740766402027 {padding: 0px;} +div.rbtoc1740766402027 ul {margin-left: 0px;} +div.rbtoc1740766402027 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></p><div class="toc-macro rbtoc1740593601147"> +/*]]>*/</style></p><div class="toc-macro rbtoc1740766402027"> <ul class="toc-indentation"><li><a href="#Configuration-XMLconfiguration(web.xml)">XML configuration (web.xml)</a></li><li><a href="#Configuration-YourApplication'sModuleClass">Your Application's Module Class</a></li><li><a href="#Configuration-ConfigurationSymbolNames">Configuration Symbol Names</a></li><li><a href="#Configuration-SettingComponentParameterDefaults">Setting Component Parameter Defaults</a></li><li><a href="#Configuration-ConfiguringIgnoredPaths">Configuring Ignored Paths</a></li><li><a href="#Configuration-ConfiguringContentTypeMapping">Configuring Content Type Mapping</a></li><li><a href="#Configuration-SettingExecutionModes">Setting Execution Modes</a></li><li><a href="#Configuration-SegregatingApplicationsIntoFolders">Segregating Applications Into Folders</a></li></ul> </div><h2 id="Configuration-XMLconfiguration(web.xml)">XML configuration (web.xml)</h2><p>Tapestry runs on top of the standard Java Servlet API. To the servlet container, such as Tomcat, Tapestry appears as a <em>servlet filter</em>. This gives Tapestry great flexibility in matching URLs without requiring lots of XML configuration.</p><p>Although most configuration is done with Java, a small but necessary amount of configuration occurs inside the servlet deployment descriptor, WEB-INF/web.xml. Most of the configuration is boilerplate, nearly the same for all applications.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>web.xml (partial)</b></div><div class="codeContent panelContent pdl"> <pre><code class="language-xml"><!DOCTYPE web-app Modified: websites/production/tapestry/content/confluence-site-setup.html ============================================================================== --- websites/production/tapestry/content/confluence-site-setup.html (original) +++ websites/production/tapestry/content/confluence-site-setup.html Fri Feb 28 18:18:17 2025 @@ -154,15 +154,7 @@ <!-- /// Content Start --> <div id="content"> - <div id="ConfluenceContent"><p>This document describes our web site setup: what is where and how it works.</p> - -<div class="adaptavist-psl-unlicensed-banner adaptavist-psl-warning adaptavist-psl-js"> - <b>This page contains macros or features from a plugin which requires a valid license.</b> - - <p>You will need to contact your administrator.</p> - -</div> -<div class="aui-label" style="float:right" title="Related Articles"> + <div id="ConfluenceContent"><p>This document describes our web site setup: what is where and how it works.</p><div class="aui-label" style="float:right" title="Related Articles"> Modified: websites/production/tapestry/content/contributors.html ============================================================================== --- websites/production/tapestry/content/contributors.html (original) +++ websites/production/tapestry/content/contributors.html Fri Feb 28 18:18:17 2025 @@ -156,15 +156,7 @@ <div id="content"> <div id="ConfluenceContent"><h2 id="Contributors-Committers">Committers</h2> -<div class="table-wrap"><table class="table table-bordered table-responsive"><colgroup span="1"><col span="1"><col span="1"><col span="1"><col span="1"><col span="1"></colgroup><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Name</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>ID</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>role</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>email address</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>website</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>Andreas Andreou</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>andyhot</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>PMC member</p></td><td colspan="1" rowspan="1" class="confluenceTd"><div class="content-wrapper"> - -<div class="adaptavist-psl-unlicensed-banner adaptavist-psl-warning adaptavist-psl-js"> - <b>This page contains macros or features from a plugin which requires a valid license.</b> - - <p>You will need to contact your administrator.</p> - -</div> - +<div class="table-wrap"><table class="table table-bordered table-responsive"><colgroup span="1"><col span="1"><col span="1"><col span="1"><col span="1"><col span="1"></colgroup><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Name</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>ID</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>role</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>email address</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>website</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>Andreas Andreou</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>andyhot</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>PMC member</p></td><td colspan="1" rowspan="1" class="confluenceTd"><div class="content-wrapper"> <div class="cfm-align-right" style="text-align: right;">andy...@apache.org</div> </div></td><td colspan="1" rowspan="1" class="confluenceTd"><a class="external-link" href="http://andyhot.gr" rel="nofollow">http://andyhot.gr</a></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>Ben Dotte</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>bdotte</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>committer</p></td><td colspan="1" rowspan="1" class="confluenceTd"><div class="content-wrapper"> <div class="cfm-align-right" style="text-align: right;">bdo...@apache.org</div> Modified: websites/production/tapestry/content/cookbook.html ============================================================================== --- websites/production/tapestry/content/cookbook.html (original) +++ websites/production/tapestry/content/cookbook.html Fri Feb 28 18:18:17 2025 @@ -154,15 +154,7 @@ <!-- /// Content Start --> <div id="content"> - <div id="ConfluenceContent"><p>This is the <strong>Tapestry Cookbook</strong>, a collection of mini-tutorials for commonly occurring patterns in Tapestry.</p><h1 id="Cookbook-Contents">Contents</h1><ul class="childpages-macro"><li><a href="default-parameter.html">Default Parameter</a> — <span class="smalltext">Avoiding repetition when using component parameters by adding autoconnect=true</span></li><li><a href="overriding-exception-reporting.html">Overriding Exception Reporting</a> — <span class="smalltext">Customizing Tapestry's default exception reporting page</span></li><li><a href="error-page-recipe.html">Error Page Recipe</a> — <span class="smalltext">Serving up a Tapestry page as your site's custom 404 response page</span></li><li><a href="supporting-informal-parameters.html">Supporting Informal Parameters</a> — <span class="smalltext">How to make your custom component accept and pass on all unknown parameters to the underlyi ng HTML element</span></li><li><a href="component-libraries.html">Component Libraries</a> — <span class="smalltext">How to create a library of your custom components</span></li><li><a href="switching-cases.html">Switching Cases</a> — <span class="smalltext">Performing the equivalent of a "switch" statement in your component template using blocks and a delegate</span></li><li><a href="enum-parameter-recipe.html">Enum Parameter Recipe</a> — <span class="smalltext">Using an Enum as a component parameter using coercion</span></li><li><a href="extending-the-if-component.html">Extending the If Component</a> — <span class="smalltext">Adding a type coercion to enable the If component to test for anything</span></li><li><a href="meta-programming-page-content.html">Meta-Programming Page Content</a> — <span class="smalltext">Adding an Annotation and a Filter to customize Tapestry's page rendering</span></li><li><a href="using-select-with-a-list.html">Using Select With a List</a> — <span class="smalltext">Using SelectModel, SelectModelFactory and ValueEncoder for Select menus populated from a database</span></li><li><a href="ioc-cookbook.html">IoC cookbook</a> — <span class="smalltext">A tutorial for using Tapestry's Inversion of Control container</span><ul class="childpages-macro"><li><a href="ioc-cookbook-basic-services-and-injection.html">IoC Cookbook - Basic Services and Injection</a></li><li><a href="ioc-cookbook-overriding-ioc-services.html">IoC Cookbook - Overriding IoC Services</a></li><li><a href="ioc-cookbook-patterns.html">IoC Cookbook - Patterns</a></li><li><a href="ioc-cookbook-service-configurations.html">IoC cookbook - Service Configurations</a></li></ul></li><li><a href="performance-and-clustering.html">Performance and Clustering</a></li><li><a href="google-app-engine.html">Google App Engine</a> — <span class="smalltext">Running a Tapestry app within a GAE server environment</span></li></ul> - -<div class="adaptavist-psl-unlicensed-banner adaptavist-psl-warning adaptavist-psl-js"> - <b>This page contains macros or features from a plugin which requires a valid license.</b> - - <p>You will need to contact your administrator.</p> - -</div> -</div> + <div id="ConfluenceContent"><p>This is the <strong>Tapestry Cookbook</strong>, a collection of mini-tutorials for commonly occurring patterns in Tapestry.</p><h1 id="Cookbook-Contents">Contents</h1><ul class="childpages-macro"><li><a href="default-parameter.html">Default Parameter</a> — <span class="smalltext">Avoiding repetition when using component parameters by adding autoconnect=true</span></li><li><a href="overriding-exception-reporting.html">Overriding Exception Reporting</a> — <span class="smalltext">Customizing Tapestry's default exception reporting page</span></li><li><a href="error-page-recipe.html">Error Page Recipe</a> — <span class="smalltext">Serving up a Tapestry page as your site's custom 404 response page</span></li><li><a href="supporting-informal-parameters.html">Supporting Informal Parameters</a> — <span class="smalltext">How to make your custom component accept and pass on all unknown parameters to the underlyi ng HTML element</span></li><li><a href="component-libraries.html">Component Libraries</a> — <span class="smalltext">How to create a library of your custom components</span></li><li><a href="switching-cases.html">Switching Cases</a> — <span class="smalltext">Performing the equivalent of a "switch" statement in your component template using blocks and a delegate</span></li><li><a href="enum-parameter-recipe.html">Enum Parameter Recipe</a> — <span class="smalltext">Using an Enum as a component parameter using coercion</span></li><li><a href="extending-the-if-component.html">Extending the If Component</a> — <span class="smalltext">Adding a type coercion to enable the If component to test for anything</span></li><li><a href="meta-programming-page-content.html">Meta-Programming Page Content</a> — <span class="smalltext">Adding an Annotation and a Filter to customize Tapestry's page rendering</span></li><li><a href="using-select-with-a-list.html">Using Select With a List</a> — <span class="smalltext">Using SelectModel, SelectModelFactory and ValueEncoder for Select menus populated from a database</span></li><li><a href="ioc-cookbook.html">IoC cookbook</a> — <span class="smalltext">A tutorial for using Tapestry's Inversion of Control container</span><ul class="childpages-macro"><li><a href="ioc-cookbook-basic-services-and-injection.html">IoC Cookbook - Basic Services and Injection</a></li><li><a href="ioc-cookbook-overriding-ioc-services.html">IoC Cookbook - Overriding IoC Services</a></li><li><a href="ioc-cookbook-patterns.html">IoC Cookbook - Patterns</a></li><li><a href="ioc-cookbook-service-configurations.html">IoC cookbook - Service Configurations</a></li></ul></li><li><a href="performance-and-clustering.html">Performance and Clustering</a></li><li><a href="google-app-engine.html">Google App Engine</a> — <span class="smalltext">Running a Tapestry app within a GAE server environment</span></li></ul></div> </div> <!-- /// Content End --> </div>