Modified: websites/production/tapestry/content/documentation.html
==============================================================================
--- websites/production/tapestry/content/documentation.html (original)
+++ websites/production/tapestry/content/documentation.html Sun Nov 8 17:21:51
2015
@@ -57,7 +57,7 @@
</div>
<div id="content">
-<div id="ConfluenceContent"><div style="float:right;margin-left:1em"><h2
id="Documentation-AllTopics">All Topics</h2><ul class="childpages-macro"><li><a
shape="rect" href="introduction.html">Introduction</a></li><li><a shape="rect"
href="getting-started.html">Getting Started</a></li><li><a shape="rect"
href="principles.html">Principles</a></li><li><a shape="rect"
href="tapestry-tutorial.html">Tapestry Tutorial</a><ul
class="childpages-macro"><li><a shape="rect"
href="dependencies-tools-and-plugins.html">Dependencies, Tools and
Plugins</a></li><li><a shape="rect"
href="creating-the-skeleton-application.html">Creating The Skeleton
Application</a></li><li><a shape="rect"
href="exploring-the-project.html">Exploring the Project</a></li><li><a
shape="rect" href="implementing-the-hi-lo-guessing-game.html">Implementing the
Hi-Lo Guessing Game</a></li><li><a shape="rect"
href="using-beaneditform-to-create-user-forms.html">Using BeanEditForm To
Create User Forms</a></li><li><a shape="rect" hr
ef="using-tapestry-with-hibernate.html">Using Tapestry With
Hibernate</a></li></ul></li><li><a shape="rect" href="user-guide.html">User
Guide</a><ul class="childpages-macro"><li><a shape="rect"
href="project-layout.html">Project Layout</a></li><li><a shape="rect"
href="configuration.html">Configuration</a></li><li><a shape="rect"
href="runtime-exceptions.html">Runtime Exceptions</a></li><li><a shape="rect"
href="class-reloading.html">Class Reloading</a></li><li><a shape="rect"
href="component-reference.html">Component Reference</a></li><li><a shape="rect"
href="annotations.html">Annotations</a></li><li><a shape="rect"
href="component-classes.html">Component Classes</a></li><li><a shape="rect"
href="component-templates.html">Component Templates</a></li><li><a shape="rect"
href="property-expressions.html">Property Expressions</a></li><li><a
shape="rect" href="component-parameters.html">Component
Parameters</a></li><li><a shape="rect"
href="parameter-type-coercion.html">Parameter Type
Coercion</a></li><li><a shape="rect" href="layout-component.html">Layout
Component</a></li><li><a shape="rect" href="component-mixins.html">Component
Mixins</a><ul class="childpages-macro"><li><a shape="rect"
href="built-in-mixins.html">Built-in Mixins</a></li></ul></li><li><a
shape="rect" href="page-navigation.html">Page Navigation</a></li><li><a
shape="rect" href="localization.html">Localization</a></li><li><a shape="rect"
href="page-life-cycle.html">Page Life Cycle</a></li><li><a shape="rect"
href="request-processing.html">Request Processing</a></li><li><a shape="rect"
href="component-rendering.html">Component Rendering</a></li><li><a shape="rect"
href="component-events.html">Component Events</a></li><li><a shape="rect"
href="url-rewriting.html">URL rewriting</a></li><li><a shape="rect"
href="dom.html">DOM</a></li><li><a shape="rect"
href="response-compression.html">Response Compression</a></li><li><a
shape="rect" href="security.html">Security</a></li><li><a shape="rect" href="ht
tps.html">HTTPS</a></li><li><a shape="rect"
href="content-type-and-markup.html">Content Type and Markup</a></li><li><a
shape="rect" href="persistent-page-data.html">Persistent Page
Data</a></li><li><a shape="rect" href="session-storage.html">Session
Storage</a><ul class="childpages-macro"><li><a shape="rect"
href="clustering-issues.html">Clustering Issues</a></li></ul></li><li><a
shape="rect" href="injection.html">Injection</a></li><li><a shape="rect"
href="environmental-services.html">Environmental Services</a></li><li><a
shape="rect" href="css.html">CSS</a></li><li><a shape="rect"
href="assets.html">Assets</a></li><li><a shape="rect"
href="forms-and-validation.html">Forms and Validation</a></li><li><a
shape="rect" href="beaneditform-guide.html">BeanEditForm Guide</a></li><li><a
shape="rect" href="uploading-files.html">Uploading Files</a></li><li><a
shape="rect" href="logging.html">Logging</a></li><li><a shape="rect"
href="unit-testing-pages-or-components.html">Unit testing pages o
r components</a></li><li><a shape="rect"
href="integration-testing.html">Integration Testing</a></li><li><a shape="rect"
href="development-dashboard.html">Development Dashboard</a></li><li><a
shape="rect" href="modules.html">Modules</a><ul class="childpages-macro"><li><a
shape="rect" href="built-in-modules.html">Built In Modules</a></li><li><a
shape="rect" href="third-party-modules.html">Third Party
Modules</a></li></ul></li><li><a shape="rect" href="ioc.html">IoC</a><ul
class="childpages-macro"><li><a shape="rect"
href="tapestry-ioc-overview.html">Tapestry IoC Overview</a></li><li><a
shape="rect" href="tapestry-ioc-modules.html">Tapestry IoC
Modules</a></li><li><a shape="rect"
href="defining-tapestry-ioc-services.html">Defining Tapestry IOC
Services</a></li><li><a shape="rect" href="service-advisors.html">Service
Advisors</a></li><li><a shape="rect"
href="tapestry-ioc-decorators.html">Tapestry IoC Decorators</a></li><li><a
shape="rect" href="tapestry-ioc-configuration.html">Tapestr
y IoC Configuration</a></li><li><a shape="rect"
href="case-insensitivity.html">Case Insensitivity</a></li><li><a shape="rect"
href="autoloading-modules.html">Autoloading Modules</a></li><li><a shape="rect"
href="service-implementation-reloading.html">Service Implementation
Reloading</a></li><li><a shape="rect"
href="ordering-by-constraints.html">Ordering by Constraints</a></li><li><a
shape="rect" href="symbols.html">Symbols</a></li><li><a shape="rect"
href="chainbuilder-service.html">ChainBuilder Service</a></li><li><a
shape="rect" href="pipelinebuilder-service.html">PipelineBuilder
Service</a></li><li><a shape="rect"
href="shadowbuilder-service.html">ShadowBuilder Service</a></li><li><a
shape="rect" href="strategybuilder-service.html">StrategyBuilder
Service</a></li><li><a shape="rect" href="injection-in-detail.html">Injection
in Detail</a></li><li><a shape="rect" href="object-providers.html">Object
Providers</a></li><li><a shape="rect" href="service-serialization.html">Service
Ser
ialization</a></li><li><a shape="rect" href="type-coercion.html">Type
Coercion</a></li><li><a shape="rect"
href="starting-the-ioc-registry.html">Starting the IoC Registry</a></li><li><a
shape="rect" href="registry-startup.html">Registry Startup</a></li><li><a
shape="rect" href="parallel-execution.html">Parallel Execution</a></li><li><a
shape="rect" href="logging-in-tapestry.html">Logging in Tapestry</a></li><li><a
shape="rect" href="using-jsr-330-standard-annotations.html">Using JSR 330
standard annotations</a></li><li><a shape="rect"
href="operation-tracker.html">Operation Tracker</a></li></ul></li><li><a
shape="rect" href="hibernate-core.html">Hibernate - Core</a><ul
class="childpages-macro"><li><a shape="rect"
href="hibernate-core-conf.html">Hibernate - Core - Conf</a></li><li><a
shape="rect" href="hibernate.html">Hibernate</a></li></ul></li><li><a
shape="rect" href="integrating-with-spring-framework.html">Integrating with
Spring Framework</a></li><li><a shape="rect" href="bean-v
alidation.html">Bean Validation</a></li><li><a shape="rect"
href="component-report.html">Component Report</a></li><li><a shape="rect"
href="aliases.html">Aliases</a></li><li><a shape="rect"
href="integrating-with-jpa.html">Integrating with JPA</a></li><li><a
shape="rect" href="client-side-javascript.html">Client-Side JavaScript</a><ul
class="childpages-macro"><li><a shape="rect"
href="javascript-modules.html">JavaScript Modules</a></li><li><a shape="rect"
href="coffeescript.html">CoffeeScript</a></li><li><a shape="rect"
href="legacy-javascript.html">Legacy JavaScript</a></li><li><a shape="rect"
href="ajax-and-zones.html">Ajax and Zones</a></li></ul></li></ul></li><li><a
shape="rect" href="cheat-sheets.html">Cheat Sheets</a><ul
class="childpages-macro"><li><a shape="rect"
href="application-module-class-cheat-sheet.html">Application Module Class Cheat
Sheet</a></li><li><a shape="rect" href="component-cheat-sheet.html">Component
Cheat Sheet</a></li><li><a shape="rect" href="tapestry-fo
r-jsf-users.html">Tapestry for JSF Users</a></li></ul></li><li><a shape="rect"
href="cookbook.html">Cookbook</a><ul class="childpages-macro"><li><a
shape="rect" href="default-parameter.html">Default Parameter</a></li><li><a
shape="rect" href="overriding-exception-reporting.html">Overriding Exception
Reporting</a></li><li><a shape="rect" href="error-page-recipe.html">Error Page
Recipe</a></li><li><a shape="rect"
href="supporting-informal-parameters.html">Supporting Informal
Parameters</a></li><li><a shape="rect"
href="component-libraries.html">Component Libraries</a></li><li><a shape="rect"
href="switching-cases.html">Switching Cases</a></li><li><a shape="rect"
href="enum-parameter-recipe.html">Enum Parameter Recipe</a></li><li><a
shape="rect" href="extending-the-if-component.html">Extending the If
Component</a></li><li><a shape="rect"
href="meta-programming-page-content.html">Meta-Programming Page
Content</a></li><li><a shape="rect" href="using-select-with-a-list.html">Using
Select
With a List</a></li><li><a shape="rect" href="ioc-cookbook.html">IoC
cookbook</a><ul class="childpages-macro"><li><a shape="rect"
href="ioc-cookbook-basic-services-and-injection.html">IoC Cookbook - Basic
Services and Injection</a></li><li><a shape="rect"
href="ioc-cookbook-overriding-ioc-services.html">IoC Cookbook - Overriding IoC
Services</a></li><li><a shape="rect" href="ioc-cookbook-patterns.html">IoC
Cookbook - Patterns</a></li><li><a shape="rect"
href="ioc-cookbook-service-configurations.html">IoC cookbook - Service
Configurations</a></li></ul></li><li><a shape="rect"
href="performance-and-clustering.html">Performance and
Clustering</a></li></ul></li><li><a shape="rect"
href="frequently-asked-questions.html">Frequently Asked Questions</a><ul
class="childpages-macro"><li><a shape="rect"
href="general-questions.html">General Questions</a></li><li><a shape="rect"
href="templating-and-markup-faq.html">Templating and Markup FAQ</a></li><li><a
shape="rect" href="page-and-component-
classes-faq.html">Page And Component Classes FAQ</a></li><li><a shape="rect"
href="forms-and-form-components-faq.html">Forms and Form Components
FAQ</a></li><li><a shape="rect" href="beaneditform-faq.html">BeanEditForm
FAQ</a></li><li><a shape="rect" href="link-components-faq.html">Link Components
FAQ</a></li><li><a shape="rect" href="component-events-faq.html">Component
Events FAQ</a></li><li><a shape="rect" href="javascript-faq.html">JavaScript
FAQ</a></li><li><a shape="rect" href="ajax-components-faq.html">Ajax Components
FAQ</a></li><li><a shape="rect" href="injection-faq.html">Injection
FAQ</a></li><li><a shape="rect"
href="tapestry-inversion-of-control-faq.html">Tapestry Inversion of Control
FAQ</a></li><li><a shape="rect" href="security-faq.html">Security
FAQ</a></li><li><a shape="rect"
href="integration-with-existing-applications.html">Integration with existing
applications</a></li><li><a shape="rect"
href="request-processing-faq.html">Request Processing FAQ</a></li><li><a s
hape="rect" href="limitations.html">Limitations</a></li><li><a shape="rect"
href="specific-errors-faq.html">Specific Errors FAQ</a></li><li><a shape="rect"
href="hibernate-support-faq.html">Hibernate Support FAQ</a></li><li><a
shape="rect" href="maven-support-faq.html">Maven Support FAQ</a></li><li><a
shape="rect" href="release-upgrade-faq.html">Release Upgrade
FAQ</a></li></ul></li><li><a shape="rect" href="release-notes.html">Release
Notes</a><ul class="childpages-macro"><li><a shape="rect"
href="how-to-upgrade.html">How to Upgrade</a></li><li><a shape="rect"
href="release-notes-50.html">Release Notes 5.0</a></li><li><a shape="rect"
href="release-notes-51.html">Release Notes 5.1</a></li><li><a shape="rect"
href="release-notes-52.html">Release Notes 5.2</a><ul
class="childpages-macro"><li><a shape="rect"
href="release-notes-520.html">Release Notes 5.2.0</a></li><li><a shape="rect"
href="release-notes-521.html">Release Notes 5.2.1</a></li><li><a shape="rect"
href="release-notes-522.
html">Release Notes 5.2.2</a></li><li><a shape="rect"
href="release-notes-523.html">Release Notes 5.2.3</a></li><li><a shape="rect"
href="release-notes-524.html">Release Notes 5.2.4</a></li><li><a shape="rect"
href="release-notes-525.html">Release Notes 5.2.5</a></li><li><a shape="rect"
href="release-notes-526.html">Release Notes 5.2.6</a></li></ul></li><li><a
shape="rect" href="release-notes-53.html">Release Notes 5.3</a></li><li><a
shape="rect" href="release-notes-531.html">Release Notes 5.3.1</a></li><li><a
shape="rect" href="release-notes-532.html">Release Notes 5.3.2</a></li><li><a
shape="rect" href="release-notes-533.html">Release Notes 5.3.3</a></li><li><a
shape="rect" href="release-notes-534.html">Release Notes 5.3.4</a></li><li><a
shape="rect" href="release-notes-535.html">Release Notes 5.3.5</a></li><li><a
shape="rect" href="release-notes-536.html">Release Notes 5.3.6</a></li><li><a
shape="rect" href="release-notes-537.html">Release Notes 5.3.7</a></li><li><a
shape="rect"
href="release-notes-54.html">Release Notes 5.4</a></li><li><a shape="rect"
href="release-notes-538.html">Release notes 5.3.8</a></li></ul></li><li><a
shape="rect" href="javascript-rewrite-in-54.html">JavaScript Rewrite in
5.4</a></li><li><a shape="rect" href="support.html">Support</a></li><li><a
shape="rect" href="developer-information.html">Developer Information</a><ul
class="childpages-macro"><li><a shape="rect"
href="building-tapestry-from-source.html">Building Tapestry from
Source</a></li><li><a shape="rect" href="confluence-site-setup.html">Confluence
Site Setup</a><ul class="childpages-macro"><li><a shape="rect"
href="since-and-deprecated-user-macros.html">Since and Deprecated User
Macros</a></li></ul></li><li><a shape="rect"
href="developer-bible.html">Developer Bible</a></li><li><a shape="rect"
href="release-process.html">Release Process</a></li><li><a shape="rect"
href="the-tapestry-jail.html">The tapestry jail</a></li><li><a shape="rect"
href="version-numbers.html">Version
Numbers</a></li></ul></li></ul></div><p>Welcome to the Tapestry 5
Documentation. A rich collection of guides is available to teach beginners the
basics and help even experienced developers deepen their understanding of
Tapestry's power. <em>Code less, deliver more!</em></p><h1
id="Documentation-Highlights">Highlights</h1><p>These are the most useful
starting points for common needs.</p><div class="table-wrap"><table
class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><a shape="rect"
href="introduction.html">Introduction</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>An overview of Tapestry's general approach and
philosophy</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><a shape="rect" href="getting-started.html">Getting
Started</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>A quick
guide to creating your first Tapestry project, using Maven</p></td></tr><tr><td
colspan="1" rowspan="1" class="c
onfluenceTd"><p><a shape="rect" href="tapestry-tutorial.html">Tapestry
Tutorial</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Picks
up where <em>Getting Started</em> leaves off, explaining in greater detail how
Tapestry works</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><a shape="rect" href="user-guide.html">User
Guide</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Detailed
articles on every Tapestry feature</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><a shape="rect"
href="community.html">Community</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Getting support, mailing lists, JIRA, outside
resources, and access to the source</p></td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p><a shape="rect"
href="cookbook.html">Cookbook</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Guides to doing common things with
Tapestry</p></td></tr><tr><td colspan="1" rowspan
="1" class="confluenceTd"><p><strong><a shape="rect"
href="frequently-asked-questions.html">FAQ</a></strong></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>A quick place to check for common problems
and solutions</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><a shape="rect"
href="component-cheat-sheet.html">Component Cheat Sheet</a></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>A concise guide to component
classes, methods and annotations</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><a shape="rect" class="external-link"
href="http://refcardz.dzone.com/refcardz/apache-tapestry-50?oid=hom7948"
>Refcard</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>A
color, six page foldout guide to Tapestry 5.0
(PDF)</p></td></tr></tbody></table></div><h1
id="Documentation-APIandComponentReference">API and Component
Reference</h1><div class="table-wrap"><table
class="confluenceTable"><tbody><tr><th colspan="1"
rowspan="1" class="confluenceTh"><p>API (Javadoc):</p></th><td colspan="1"
rowspan="1" class="confluenceTd"><p>5.0<sup>1</sup></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>5.1<sup>1</sup></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>5.2<sup>1</sup></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p><a shape="rect" class="external-link"
href="http://tapestry.apache.org/current/apidocs/">5.3.7
(current)</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><a
shape="rect" class="external-link" href="http://tapestry.apache.org/5.4/">5.4
(beta)</a></td></tr><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p>Component Reference:</p></th><td colspan="1"
rowspan="1" class="confluenceTd"><p>5.0<sup>1</sup></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>5.1<sup>1</sup></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>5.2<sup>1</sup></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p><a shape="rect" href="comp
onent-reference.html">5.3.7 (current)</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd">same as current</td></tr><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p>Release Notes:</p></th><td colspan="1" rowspan="1"
class="confluenceTd"><p><a shape="rect"
href="release-notes-50.html">5.0</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><a shape="rect"
href="release-notes-51.html">5.1</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><a shape="rect"
href="release-notes-52.html">5.2</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><a shape="rect" href="release-notes.html">5.3.7
(current)</a></p></td><td colspan="1" rowspan="1" class="confluenceTd">not yet
available</td></tr></tbody></table></div><p><sup>1</sup> needs to be built
manually from archived sources at <a shape="rect" class="external-link"
href="http://archive.apache.org/dist/tapestry/">http://archive.apache.org/dist/tapestry/</a>.</p><h1
id="Documentation-UserGuide"
>User Guide</h1><p><span class="confluence-anchor-link"
>id="Documentation-userguide"></span>The <a shape="rect"
>href="user-guide.html">User Guide</a> consists of over 75 pages of detailed
>information on the concepts behind Tapestry and instructions on how to use
>this powerful tool. Highlights include:</p><ul><li><a shape="rect"
>href="legacy-javascript.html">Legacy JavaScript</a> and <a shape="rect"
>href="ajax-and-zones.html">Ajax and Zones</a> describe Tapestry's built-in
>support for dynamic in-page behavior.</li><li><a shape="rect"
>href="integrating-with-spring-framework.html">Integrating with Spring
>Framework</a> describes how to integrate Spring into your Tapestry
>application.</li><li><a shape="rect" href="hibernate.html">Tapestry/Hibernate
>Integration Library</a> provides out-of-the-box support for using Hibernate
>3.</li><li><a shape="rect" href="bean-validation.html">JSR 303: Bean
>Validation</a> shows how to use standard annotations for
>validation</li><li><a shape="rect" href="
integration-testing.html">Integration Testing</a> shows how to test your
application with Selenium.</li></ul><p><a shape="rect"
href="user-guide.html">More topics</a>...</p><h1
id="Documentation-BlogsbyTapestryDevelopersandtheCommunity">Blogs by Tapestry
Developers and the Community</h1><ul><li><a shape="rect" class="external-link"
href="http://tapestryjava.blogspot.com/" >Tapestry Central</a> is Howard Lewis
Ship's blog. As the creator of Tapestry, he provides valuable insights into
Tapestry's latest features and future directions.</li><li><a shape="rect"
class="external-link" href="http://blog.tapestry5.de/" >Igor Drobiazko's
blog</a> (committer & PMC) contains news on Tapestry development and will
guide you through some of the most exciting parts of Tapestry.</li><li><a
shape="rect" class="external-link" href="http://tawus.wordpress.com/" >Java
Magic</a> (by Taha Hafeez, committer) has a series of tutorials illustrating
some of the more advanced Tapestry and Plastic features
and techniques.</li><li><a shape="rect" class="external-link"
href="http://blog.andyhot.gr/tag/tapestry/" >Andreas Andreou's blog</a>
(committer & PMC) has news and commentary on Tapestry.</li><li><a
shape="rect" class="external-link" href="http://spreadthesource.com/" >Spread
the Source blog</a> (Christophe Cordenier and Robin Komiwes) has news and
advanced tutorials on Tapestry 5.</li></ul><h1
id="Documentation-BooksonTapestry">Books on Tapestry</h1><p>There are at least
8 published <a shape="rect" href="books.html">books on Tapestry</a>, including
two on Tapestry 5 — and more on the way.</p><h1
id="Documentation-ArticlesonTapestry">Articles on Tapestry</h1><ul><li>This <a
shape="rect" class="external-link"
href="http://www.laliluna.de/articles/the-web-framework-evaluation.html"
>eBook</a> published in 2009 contains a <a shape="rect" class="external-link"
href="http://www.laliluna.de/articles/2009/08/14/tapestry-web-framework-evaluation-and-test.html"
>good introduction
and analysis of Tapestry 5</a></li></ul><ul><li><a shape="rect"
class="external-link" href="http://www.infoq.com/articles/tapestry5-intro"
>Tapestry 5 for Nonbelievers</a> will convince the skeptical why Tapestry is
the best web framework.</li></ul><p><a shape="rect" href="articles.html">More
articles</a>...</p><h1 id="Documentation-TapestryPresentations">Tapestry
Presentations</h1><ul><li>Mark W. Shead's <a shape="rect" class="external-link"
href="http://blog.markwshead.com/900/tapestry-5-10-minute-demo/" >10 Minute
Demo</a></li><li>H. L. Ship's <a shape="rect" class="external-link"
href="https://www.youtube.com/watch?v=5BGt7eMFC20" >Tapestry 5.4 -
Bootstrap-enhanced Exception Reporting</a></li><li><a shape="rect"
class="external-link"
href="http://jazoon.com/Portals/0/Content/slides/th_a7_1130-1220_drobiazko.pdf"
>JavaServer Faces 2.0 vs. Tapestry 5</a> (PDF) A Head-to-Head Comparison by
Igor Drobiazko at Jazoon 2010</li><li><a shape="rect" class="external-link"
href="http://www.p
arleys.com/#st=5&sl=5&id=1700" >Tapestry 5: Java power, Scripting
Ease</a> (VIDEO) by Howard Lewis Ship at Devoxx 2009</li></ul><p><a
shape="rect" href="presentations.html">More presentations</a> ...</p><h1
id="Documentation-TapestryWikis">Tapestry Wikis</h1><ul><li><a shape="rect"
class="external-link" href="http://wiki.apache.org/tapestry/FrontPage">Tapestry
Community Wiki</a> (Moin Moin) contains a lot of user-generated information on
different Tapestry use cases.</li><li><a shape="rect"
href="https://cwiki.apache.org/confluence/x/VCFkAQ">Documentation Source
wiki</a> (Confluence) – the wiki used as the content editor for the
official Tapestry documentation</li></ul><h1
id="Documentation-Gettinghelp">Getting help</h1><p>The primary method of
support is the <a shape="rect" href="mailing-lists.html">Tapestry Mailing
Lists</a>.</p><p>In addition, there are occasionally questions and answers
about Tapestry at <a shape="rect" class="external-link" href="http://stackoverf
low.com/questions/tagged/tapestry" >Stack Overflow</a>.</p><h1
id="Documentation-TheDeveloperCorner">The Developer Corner</h1><p><a
shape="rect" href="developer-information.html">Developer Information</a> gives
information needed by the Tapestry developers</p><p> </p></div>
+<div id="ConfluenceContent"><div style="float:right;margin-left:1em"><h2
id="Documentation-AllTopics">All Topics</h2><ul class="childpages-macro"><li><a
shape="rect" href="introduction.html">Introduction</a></li><li><a shape="rect"
href="getting-started.html">Getting Started</a></li><li><a shape="rect"
href="principles.html">Principles</a></li><li><a shape="rect"
href="tapestry-tutorial.html">Tapestry Tutorial</a><ul
class="childpages-macro"><li><a shape="rect"
href="dependencies-tools-and-plugins.html">Dependencies, Tools and
Plugins</a></li><li><a shape="rect"
href="creating-the-skeleton-application.html">Creating The Skeleton
Application</a></li><li><a shape="rect"
href="exploring-the-project.html">Exploring the Project</a></li><li><a
shape="rect" href="implementing-the-hi-lo-guessing-game.html">Implementing the
Hi-Lo Guessing Game</a></li><li><a shape="rect"
href="using-beaneditform-to-create-user-forms.html">Using BeanEditForm To
Create User Forms</a></li><li><a shape="rect" hr
ef="using-tapestry-with-hibernate.html">Using Tapestry With
Hibernate</a></li></ul></li><li><a shape="rect" href="user-guide.html">User
Guide</a><ul class="childpages-macro"><li><a shape="rect"
href="project-layout.html">Project Layout</a></li><li><a shape="rect"
href="configuration.html">Configuration</a></li><li><a shape="rect"
href="runtime-exceptions.html">Runtime Exceptions</a></li><li><a shape="rect"
href="class-reloading.html">Class Reloading</a></li><li><a shape="rect"
href="component-reference.html">Component Reference</a></li><li><a shape="rect"
href="annotations.html">Annotations</a></li><li><a shape="rect"
href="component-classes.html">Component Classes</a></li><li><a shape="rect"
href="component-templates.html">Component Templates</a></li><li><a shape="rect"
href="property-expressions.html">Property Expressions</a></li><li><a
shape="rect" href="component-parameters.html">Component
Parameters</a></li><li><a shape="rect"
href="parameter-type-coercion.html">Parameter Type
Coercion</a></li><li><a shape="rect" href="layout-component.html">Layout
Component</a></li><li><a shape="rect" href="component-mixins.html">Component
Mixins</a><ul class="childpages-macro"><li><a shape="rect"
href="built-in-mixins.html">Built-in Mixins</a></li></ul></li><li><a
shape="rect" href="page-navigation.html">Page Navigation</a></li><li><a
shape="rect" href="localization.html">Localization</a></li><li><a shape="rect"
href="page-life-cycle.html">Page Life Cycle</a></li><li><a shape="rect"
href="request-processing.html">Request Processing</a></li><li><a shape="rect"
href="component-rendering.html">Component Rendering</a></li><li><a shape="rect"
href="component-events.html">Component Events</a></li><li><a shape="rect"
href="url-rewriting.html">URL rewriting</a></li><li><a shape="rect"
href="dom.html">DOM</a></li><li><a shape="rect"
href="response-compression.html">Response Compression</a></li><li><a
shape="rect" href="security.html">Security</a></li><li><a shape="rect" href="ht
tps.html">HTTPS</a></li><li><a shape="rect"
href="content-type-and-markup.html">Content Type and Markup</a></li><li><a
shape="rect" href="persistent-page-data.html">Persistent Page
Data</a></li><li><a shape="rect" href="session-storage.html">Session
Storage</a><ul class="childpages-macro"><li><a shape="rect"
href="clustering-issues.html">Clustering Issues</a></li></ul></li><li><a
shape="rect" href="injection.html">Injection</a></li><li><a shape="rect"
href="environmental-services.html">Environmental Services</a></li><li><a
shape="rect" href="css.html">CSS</a></li><li><a shape="rect"
href="assets.html">Assets</a></li><li><a shape="rect"
href="forms-and-validation.html">Forms and Validation</a></li><li><a
shape="rect" href="beaneditform-guide.html">BeanEditForm Guide</a></li><li><a
shape="rect" href="uploading-files.html">Uploading Files</a></li><li><a
shape="rect" href="logging.html">Logging</a></li><li><a shape="rect"
href="unit-testing-pages-or-components.html">Unit testing pages o
r components</a></li><li><a shape="rect"
href="integration-testing.html">Integration Testing</a></li><li><a shape="rect"
href="development-dashboard.html">Development Dashboard</a></li><li><a
shape="rect" href="modules.html">Modules</a><ul class="childpages-macro"><li><a
shape="rect" href="built-in-modules.html">Built In Modules</a></li><li><a
shape="rect" href="third-party-modules.html">Third Party
Modules</a></li></ul></li><li><a shape="rect" href="ioc.html">IOC</a><ul
class="childpages-macro"><li><a shape="rect"
href="tapestry-ioc-overview.html">Tapestry IoC Overview</a></li><li><a
shape="rect" href="tapestry-ioc-modules.html">Tapestry IoC
Modules</a></li><li><a shape="rect"
href="defining-tapestry-ioc-services.html">Defining Tapestry IOC
Services</a></li><li><a shape="rect" href="service-advisors.html">Service
Advisors</a></li><li><a shape="rect"
href="tapestry-ioc-decorators.html">Tapestry IoC Decorators</a></li><li><a
shape="rect" href="tapestry-ioc-configuration.html">Tapestr
y IoC Configuration</a></li><li><a shape="rect"
href="case-insensitivity.html">Case Insensitivity</a></li><li><a shape="rect"
href="autoloading-modules.html">Autoloading Modules</a></li><li><a shape="rect"
href="service-implementation-reloading.html">Service Implementation
Reloading</a></li><li><a shape="rect"
href="ordering-by-constraints.html">Ordering by Constraints</a></li><li><a
shape="rect" href="symbols.html">Symbols</a></li><li><a shape="rect"
href="chainbuilder-service.html">ChainBuilder Service</a></li><li><a
shape="rect" href="pipelinebuilder-service.html">PipelineBuilder
Service</a></li><li><a shape="rect"
href="shadowbuilder-service.html">ShadowBuilder Service</a></li><li><a
shape="rect" href="strategybuilder-service.html">StrategyBuilder
Service</a></li><li><a shape="rect" href="injection-in-detail.html">Injection
in Detail</a></li><li><a shape="rect" href="object-providers.html">Object
Providers</a></li><li><a shape="rect" href="service-serialization.html">Service
Ser
ialization</a></li><li><a shape="rect" href="type-coercion.html">Type
Coercion</a></li><li><a shape="rect"
href="starting-the-ioc-registry.html">Starting the IoC Registry</a></li><li><a
shape="rect" href="registry-startup.html">Registry Startup</a></li><li><a
shape="rect" href="parallel-execution.html">Parallel Execution</a></li><li><a
shape="rect" href="logging-in-tapestry.html">Logging in Tapestry</a></li><li><a
shape="rect" href="using-jsr-330-standard-annotations.html">Using JSR 330
standard annotations</a></li><li><a shape="rect"
href="operation-tracker.html">Operation Tracker</a></li></ul></li><li><a
shape="rect" href="hibernate-core.html">Hibernate - Core</a><ul
class="childpages-macro"><li><a shape="rect"
href="hibernate-core-conf.html">Hibernate - Core - Conf</a></li><li><a
shape="rect" href="hibernate.html">Hibernate</a></li></ul></li><li><a
shape="rect" href="integrating-with-spring-framework.html">Integrating with
Spring Framework</a></li><li><a shape="rect" href="bean-v
alidation.html">Bean Validation</a></li><li><a shape="rect"
href="component-report.html">Component Report</a></li><li><a shape="rect"
href="aliases.html">Aliases</a></li><li><a shape="rect"
href="integrating-with-jpa.html">Integrating with JPA</a></li><li><a
shape="rect" href="client-side-javascript.html">Client-Side JavaScript</a><ul
class="childpages-macro"><li><a shape="rect"
href="javascript-modules.html">JavaScript Modules</a></li><li><a shape="rect"
href="coffeescript.html">CoffeeScript</a></li><li><a shape="rect"
href="legacy-javascript.html">Legacy JavaScript</a></li><li><a shape="rect"
href="ajax-and-zones.html">Ajax and Zones</a></li></ul></li></ul></li><li><a
shape="rect" href="cheat-sheets.html">Cheat Sheets</a><ul
class="childpages-macro"><li><a shape="rect"
href="application-module-class-cheat-sheet.html">Application Module Class Cheat
Sheet</a></li><li><a shape="rect" href="component-cheat-sheet.html">Component
Cheat Sheet</a></li><li><a shape="rect" href="tapestry-fo
r-jsf-users.html">Tapestry for JSF Users</a></li></ul></li><li><a shape="rect"
href="cookbook.html">Cookbook</a><ul class="childpages-macro"><li><a
shape="rect" href="default-parameter.html">Default Parameter</a></li><li><a
shape="rect" href="overriding-exception-reporting.html">Overriding Exception
Reporting</a></li><li><a shape="rect" href="error-page-recipe.html">Error Page
Recipe</a></li><li><a shape="rect"
href="supporting-informal-parameters.html">Supporting Informal
Parameters</a></li><li><a shape="rect"
href="component-libraries.html">Component Libraries</a></li><li><a shape="rect"
href="switching-cases.html">Switching Cases</a></li><li><a shape="rect"
href="enum-parameter-recipe.html">Enum Parameter Recipe</a></li><li><a
shape="rect" href="extending-the-if-component.html">Extending the If
Component</a></li><li><a shape="rect"
href="meta-programming-page-content.html">Meta-Programming Page
Content</a></li><li><a shape="rect" href="using-select-with-a-list.html">Using
Select
With a List</a></li><li><a shape="rect" href="ioc-cookbook.html">IoC
cookbook</a><ul class="childpages-macro"><li><a shape="rect"
href="ioc-cookbook-basic-services-and-injection.html">IoC Cookbook - Basic
Services and Injection</a></li><li><a shape="rect"
href="ioc-cookbook-overriding-ioc-services.html">IoC Cookbook - Overriding IoC
Services</a></li><li><a shape="rect" href="ioc-cookbook-patterns.html">IoC
Cookbook - Patterns</a></li><li><a shape="rect"
href="ioc-cookbook-service-configurations.html">IoC cookbook - Service
Configurations</a></li></ul></li><li><a shape="rect"
href="performance-and-clustering.html">Performance and
Clustering</a></li></ul></li><li><a shape="rect"
href="frequently-asked-questions.html">Frequently Asked Questions</a><ul
class="childpages-macro"><li><a shape="rect"
href="general-questions.html">General Questions</a></li><li><a shape="rect"
href="templating-and-markup-faq.html">Templating and Markup FAQ</a></li><li><a
shape="rect" href="page-and-component-
classes-faq.html">Page And Component Classes FAQ</a></li><li><a shape="rect"
href="forms-and-form-components-faq.html">Forms and Form Components
FAQ</a></li><li><a shape="rect" href="beaneditform-faq.html">BeanEditForm
FAQ</a></li><li><a shape="rect" href="link-components-faq.html">Link Components
FAQ</a></li><li><a shape="rect" href="component-events-faq.html">Component
Events FAQ</a></li><li><a shape="rect" href="javascript-faq.html">JavaScript
FAQ</a></li><li><a shape="rect" href="ajax-components-faq.html">Ajax Components
FAQ</a></li><li><a shape="rect" href="injection-faq.html">Injection
FAQ</a></li><li><a shape="rect"
href="tapestry-inversion-of-control-faq.html">Tapestry Inversion of Control
FAQ</a></li><li><a shape="rect" href="security-faq.html">Security
FAQ</a></li><li><a shape="rect"
href="integration-with-existing-applications.html">Integration with existing
applications</a></li><li><a shape="rect"
href="request-processing-faq.html">Request Processing FAQ</a></li><li><a s
hape="rect" href="limitations.html">Limitations</a></li><li><a shape="rect"
href="specific-errors-faq.html">Specific Errors FAQ</a></li><li><a shape="rect"
href="hibernate-support-faq.html">Hibernate Support FAQ</a></li><li><a
shape="rect" href="maven-support-faq.html">Maven Support FAQ</a></li><li><a
shape="rect" href="release-upgrade-faq.html">Release Upgrade
FAQ</a></li></ul></li><li><a shape="rect" href="release-notes.html">Release
Notes</a><ul class="childpages-macro"><li><a shape="rect"
href="how-to-upgrade.html">How to Upgrade</a></li><li><a shape="rect"
href="release-notes-50.html">Release Notes 5.0</a></li><li><a shape="rect"
href="release-notes-51.html">Release Notes 5.1</a></li><li><a shape="rect"
href="release-notes-52.html">Release Notes 5.2</a><ul
class="childpages-macro"><li><a shape="rect"
href="release-notes-520.html">Release Notes 5.2.0</a></li><li><a shape="rect"
href="release-notes-521.html">Release Notes 5.2.1</a></li><li><a shape="rect"
href="release-notes-522.
html">Release Notes 5.2.2</a></li><li><a shape="rect"
href="release-notes-523.html">Release Notes 5.2.3</a></li><li><a shape="rect"
href="release-notes-524.html">Release Notes 5.2.4</a></li><li><a shape="rect"
href="release-notes-525.html">Release Notes 5.2.5</a></li><li><a shape="rect"
href="release-notes-526.html">Release Notes 5.2.6</a></li></ul></li><li><a
shape="rect" href="release-notes-53.html">Release Notes 5.3</a></li><li><a
shape="rect" href="release-notes-531.html">Release Notes 5.3.1</a></li><li><a
shape="rect" href="release-notes-532.html">Release Notes 5.3.2</a></li><li><a
shape="rect" href="release-notes-533.html">Release Notes 5.3.3</a></li><li><a
shape="rect" href="release-notes-534.html">Release Notes 5.3.4</a></li><li><a
shape="rect" href="release-notes-535.html">Release Notes 5.3.5</a></li><li><a
shape="rect" href="release-notes-536.html">Release Notes 5.3.6</a></li><li><a
shape="rect" href="release-notes-537.html">Release Notes 5.3.7</a></li><li><a
shape="rect"
href="release-notes-54.html">Release Notes 5.4</a></li><li><a shape="rect"
href="release-notes-538.html">Release notes 5.3.8</a></li></ul></li><li><a
shape="rect" href="javascript-rewrite-in-54.html">JavaScript Rewrite in
5.4</a></li><li><a shape="rect" href="support.html">Support</a></li><li><a
shape="rect" href="developer-information.html">Developer Information</a><ul
class="childpages-macro"><li><a shape="rect"
href="building-tapestry-from-source.html">Building Tapestry from
Source</a></li><li><a shape="rect" href="confluence-site-setup.html">Confluence
Site Setup</a><ul class="childpages-macro"><li><a shape="rect"
href="since-and-deprecated-user-macros.html">Since and Deprecated User
Macros</a></li></ul></li><li><a shape="rect"
href="developer-bible.html">Developer Bible</a></li><li><a shape="rect"
href="release-process.html">Release Process</a></li><li><a shape="rect"
href="the-tapestry-jail.html">The tapestry jail</a></li><li><a shape="rect"
href="version-numbers.html">Version
Numbers</a></li></ul></li></ul></div><p>Welcome to the Tapestry 5
Documentation. A rich collection of guides is available to teach beginners the
basics and help even experienced developers deepen their understanding of
Tapestry's power. <em>Code less, deliver more!</em></p><h1
id="Documentation-Highlights">Highlights</h1><p>These are the most useful
starting points for common needs.</p><div class="table-wrap"><table
class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><a shape="rect"
href="introduction.html">Introduction</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>An overview of Tapestry's general approach and
philosophy</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><a shape="rect" href="getting-started.html">Getting
Started</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>A quick
guide to creating your first Tapestry project, using Maven</p></td></tr><tr><td
colspan="1" rowspan="1" class="c
onfluenceTd"><p><a shape="rect" href="tapestry-tutorial.html">Tapestry
Tutorial</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Picks
up where <em>Getting Started</em> leaves off, explaining in greater detail how
Tapestry works</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><a shape="rect" href="user-guide.html">User
Guide</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Detailed
articles on every Tapestry feature</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><a shape="rect"
href="community.html">Community</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Getting support, mailing lists, JIRA, outside
resources, and access to the source</p></td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p><a shape="rect"
href="cookbook.html">Cookbook</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Guides to doing common things with
Tapestry</p></td></tr><tr><td colspan="1" rowspan
="1" class="confluenceTd"><p><strong><a shape="rect"
href="frequently-asked-questions.html">FAQ</a></strong></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>A quick place to check for common problems
and solutions</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><a shape="rect"
href="component-cheat-sheet.html">Component Cheat Sheet</a></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>A concise guide to component
classes, methods and annotations</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><a shape="rect" class="external-link"
href="http://refcardz.dzone.com/refcardz/apache-tapestry-50?oid=hom7948"
>Refcard</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>A
color, six page foldout guide to Tapestry 5.0
(PDF)</p></td></tr></tbody></table></div><h1
id="Documentation-APIandComponentReference">API and Component
Reference</h1><div class="table-wrap"><table
class="confluenceTable"><tbody><tr><th colspan="1"
rowspan="1" class="confluenceTh"><p>API (Javadoc):</p></th><td colspan="1"
rowspan="1" class="confluenceTd"><p>5.0<sup>1</sup></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>5.1<sup>1</sup></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>5.2<sup>1</sup></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p><a shape="rect" class="external-link"
href="http://tapestry.apache.org/current/apidocs/">5.3.7
(current)</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><a
shape="rect" class="external-link" href="http://tapestry.apache.org/5.4/">5.4
(beta)</a></td></tr><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p>Component Reference:</p></th><td colspan="1"
rowspan="1" class="confluenceTd"><p>5.0<sup>1</sup></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>5.1<sup>1</sup></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>5.2<sup>1</sup></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p><a shape="rect" href="comp
onent-reference.html">5.3.7 (current)</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd">same as current</td></tr><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p>Release Notes:</p></th><td colspan="1" rowspan="1"
class="confluenceTd"><p><a shape="rect"
href="release-notes-50.html">5.0</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><a shape="rect"
href="release-notes-51.html">5.1</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><a shape="rect"
href="release-notes-52.html">5.2</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><a shape="rect" href="release-notes.html">5.3.7
(current)</a></p></td><td colspan="1" rowspan="1" class="confluenceTd">not yet
available</td></tr></tbody></table></div><p><sup>1</sup> needs to be built
manually from archived sources at <a shape="rect" class="external-link"
href="http://archive.apache.org/dist/tapestry/">http://archive.apache.org/dist/tapestry/</a>.</p><h1
id="Documentation-UserGuide"
>User Guide</h1><p><span class="confluence-anchor-link"
>id="Documentation-userguide"></span>The <a shape="rect"
>href="user-guide.html">User Guide</a> consists of over 75 pages of detailed
>information on the concepts behind Tapestry and instructions on how to use
>this powerful tool. Highlights include:</p><ul><li><a shape="rect"
>href="legacy-javascript.html">Legacy JavaScript</a> and <a shape="rect"
>href="ajax-and-zones.html">Ajax and Zones</a> describe Tapestry's built-in
>support for dynamic in-page behavior.</li><li><a shape="rect"
>href="integrating-with-spring-framework.html">Integrating with Spring
>Framework</a> describes how to integrate Spring into your Tapestry
>application.</li><li><a shape="rect" href="hibernate.html">Tapestry/Hibernate
>Integration Library</a> provides out-of-the-box support for using Hibernate
>3.</li><li><a shape="rect" href="bean-validation.html">JSR 303: Bean
>Validation</a> shows how to use standard annotations for
>validation</li><li><a shape="rect" href="
integration-testing.html">Integration Testing</a> shows how to test your
application with Selenium.</li></ul><p><a shape="rect"
href="user-guide.html">More topics</a>...</p><h1
id="Documentation-BlogsbyTapestryDevelopersandtheCommunity">Blogs by Tapestry
Developers and the Community</h1><ul><li><a shape="rect" class="external-link"
href="http://tapestryjava.blogspot.com/" >Tapestry Central</a> is Howard Lewis
Ship's blog. As the creator of Tapestry, he provides valuable insights into
Tapestry's latest features and future directions.</li><li><a shape="rect"
class="external-link" href="http://blog.tapestry5.de/" >Igor Drobiazko's
blog</a> (committer & PMC) contains news on Tapestry development and will
guide you through some of the most exciting parts of Tapestry.</li><li><a
shape="rect" class="external-link" href="http://tawus.wordpress.com/" >Java
Magic</a> (by Taha Hafeez, committer) has a series of tutorials illustrating
some of the more advanced Tapestry and Plastic features
and techniques.</li><li><a shape="rect" class="external-link"
href="http://blog.andyhot.gr/tag/tapestry/" >Andreas Andreou's blog</a>
(committer & PMC) has news and commentary on Tapestry.</li><li><a
shape="rect" class="external-link" href="http://spreadthesource.com/" >Spread
the Source blog</a> (Christophe Cordenier and Robin Komiwes) has news and
advanced tutorials on Tapestry 5.</li></ul><h1
id="Documentation-BooksonTapestry">Books on Tapestry</h1><p>There are at least
8 published <a shape="rect" href="books.html">books on Tapestry</a>, including
two on Tapestry 5 — and more on the way.</p><h1
id="Documentation-ArticlesonTapestry">Articles on Tapestry</h1><ul><li>This <a
shape="rect" class="external-link"
href="http://www.laliluna.de/articles/the-web-framework-evaluation.html"
>eBook</a> published in 2009 contains a <a shape="rect" class="external-link"
href="http://www.laliluna.de/articles/2009/08/14/tapestry-web-framework-evaluation-and-test.html"
>good introduction
and analysis of Tapestry 5</a></li></ul><ul><li><a shape="rect"
class="external-link" href="http://www.infoq.com/articles/tapestry5-intro"
>Tapestry 5 for Nonbelievers</a> will convince the skeptical why Tapestry is
the best web framework.</li></ul><p><a shape="rect" href="articles.html">More
articles</a>...</p><h1 id="Documentation-TapestryPresentations">Tapestry
Presentations</h1><ul><li>Mark W. Shead's <a shape="rect" class="external-link"
href="http://blog.markwshead.com/900/tapestry-5-10-minute-demo/" >10 Minute
Demo</a></li><li>H. L. Ship's <a shape="rect" class="external-link"
href="https://www.youtube.com/watch?v=5BGt7eMFC20" >Tapestry 5.4 -
Bootstrap-enhanced Exception Reporting</a></li><li><a shape="rect"
class="external-link"
href="http://jazoon.com/Portals/0/Content/slides/th_a7_1130-1220_drobiazko.pdf"
>JavaServer Faces 2.0 vs. Tapestry 5</a> (PDF) A Head-to-Head Comparison by
Igor Drobiazko at Jazoon 2010</li><li><a shape="rect" class="external-link"
href="http://www.p
arleys.com/#st=5&sl=5&id=1700" >Tapestry 5: Java power, Scripting
Ease</a> (VIDEO) by Howard Lewis Ship at Devoxx 2009</li></ul><p><a
shape="rect" href="presentations.html">More presentations</a> ...</p><h1
id="Documentation-TapestryWikis">Tapestry Wikis</h1><ul><li><a shape="rect"
class="external-link" href="http://wiki.apache.org/tapestry/FrontPage">Tapestry
Community Wiki</a> (Moin Moin) contains a lot of user-generated information on
different Tapestry use cases.</li><li><a shape="rect"
href="https://cwiki.apache.org/confluence/x/VCFkAQ">Documentation Source
wiki</a> (Confluence) – the wiki used as the content editor for the
official Tapestry documentation</li></ul><h1
id="Documentation-Gettinghelp">Getting help</h1><p>The primary method of
support is the <a shape="rect" href="mailing-lists.html">Tapestry Mailing
Lists</a>.</p><p>In addition, there are occasionally questions and answers
about Tapestry at <a shape="rect" class="external-link" href="http://stackoverf
low.com/questions/tagged/tapestry" >Stack Overflow</a>.</p><h1
id="Documentation-TheDeveloperCorner">The Developer Corner</h1><p><a
shape="rect" href="developer-information.html">Developer Information</a> gives
information needed by the Tapestry developers</p><p> </p></div>
</div>
<div class="clearer"></div>
Modified: websites/production/tapestry/content/enum-parameter-recipe.html
==============================================================================
--- websites/production/tapestry/content/enum-parameter-recipe.html (original)
+++ websites/production/tapestry/content/enum-parameter-recipe.html Sun Nov 8
17:21:51 2015
@@ -67,7 +67,30 @@
</div>
<div id="content">
-<div id="ConfluenceContent">
+<div id="ConfluenceContent">
+<div class="atb-scrollbar-macro">
+ <div class="prev">
+ <a shape="rect" href="switching-cases.html" rel="prev">
+ <span class="aui-icon aui-icon-small
atb-icon-arrow-left">Previous</span>
+ <span class="title">Switching Cases</span>
+ </a>
+
+ </div>
+ <div class="parent">
+ <a shape="rect" href="cookbook.html" rel="parent">
+ <span class="aui-icon
aui-icon-small atb-icon-arrow-up">Up</span>
+ <span class="title">Cookbook</span>
+ </a>
+
+ </div>
+ <div class="next">
+ <a shape="rect" href="extending-the-if-component.html" rel="next">
+ <span class="title">Extending the If Component</span>
+ <span class="aui-icon aui-icon-small
atb-icon-arrow-right">Next</span>
+ </a>
+
+ </div>
+</div>
<p></p>
<h1 id="EnumParameterRecipe-EnumComponentParameter">Enum Component
Parameter</h1>
Modified: websites/production/tapestry/content/error-page-recipe.html
==============================================================================
--- websites/production/tapestry/content/error-page-recipe.html (original)
+++ websites/production/tapestry/content/error-page-recipe.html Sun Nov 8
17:21:51 2015
@@ -67,7 +67,30 @@
</div>
<div id="content">
-<div id="ConfluenceContent"><h1
id="ErrorPageRecipe-ServingTapestryPagesasServletErrorPages">Serving Tapestry
Pages as Servlet Error Pages</h1><p>Do you want to dress up your site and use a
snazzy Tapestry page instead of the default 404 error page? Using modern
servlet containers, this is a snap!</p><div class="aui-label"
style="float:right" title="Related Articles">
+<div id="ConfluenceContent"><p>
+</p><div class="atb-scrollbar-macro">
+ <div class="prev">
+ <a shape="rect" href="overriding-exception-reporting.html" rel="prev">
+ <span class="aui-icon aui-icon-small
atb-icon-arrow-left">Previous</span>
+ <span class="title">Overriding Exception
Reporting</span>
+ </a>
+
+ </div>
+ <div class="parent">
+ <a shape="rect" href="cookbook.html" rel="parent">
+ <span class="aui-icon
aui-icon-small atb-icon-arrow-up">Up</span>
+ <span class="title">Cookbook</span>
+ </a>
+
+ </div>
+ <div class="next">
+ <a shape="rect" href="supporting-informal-parameters.html" rel="next">
+ <span class="title">Supporting Informal Parameters</span>
+ <span class="aui-icon aui-icon-small
atb-icon-arrow-right">Next</span>
+ </a>
+
+ </div>
+</div><h1 id="ErrorPageRecipe-ServingTapestryPagesasServletErrorPages">Serving
Tapestry Pages as Servlet Error Pages</h1><p>Do you want to dress up your site
and use a snazzy Tapestry page instead of the default 404 error page? Using
modern servlet containers, this is a snap!</p><div class="aui-label"
style="float:right" title="Related Articles">
Modified: websites/production/tapestry/content/exploring-the-project.html
==============================================================================
--- websites/production/tapestry/content/exploring-the-project.html (original)
+++ websites/production/tapestry/content/exploring-the-project.html Sun Nov 8
17:21:51 2015
@@ -233,13 +233,13 @@ public class Index
-<span class="gliffy-container" id="gliffy-container-24346949-7589"
data-fullwidth="913" data-ceoid="24188263"
data-edit="${diagramEditLink.getLinkUrl()}"
data-full="${diagramZoomLink.getLinkUrl()}" data-filename="Templates and
Parameters">
+<span class="gliffy-container" id="gliffy-container-24346949-516"
data-fullwidth="913" data-ceoid="24188263"
data-edit="${diagramEditLink.getLinkUrl()}"
data-full="${diagramZoomLink.getLinkUrl()}" data-filename="Templates and
Parameters">
- <map id="gliffy-map-24346949-8786" name="gliffy-map-24346949-8786"></map>
+ <map id="gliffy-map-24346949-6905" name="gliffy-map-24346949-6905"></map>
- <img class="gliffy-image gliffy-image-border"
id="gliffy-image-24346949-7589" width="304" height="300" data-full-width="913"
data-full-height="901"
src="https://cwiki.apache.org/confluence/download/attachments/24188263/Templates%20and%20Parameters.png?version=2&modificationDate=1371888025000&api=v2"
alt="Templates and Parameters" usemap="#gliffy-map-24346949-8786">
+ <img class="gliffy-image gliffy-image-border"
id="gliffy-image-24346949-516" width="304" height="300" data-full-width="913"
data-full-height="901"
src="https://cwiki.apache.org/confluence/download/attachments/24188263/Templates%20and%20Parameters.png?version=2&modificationDate=1371888025000&api=v2"
alt="Templates and Parameters" usemap="#gliffy-map-24346949-6905">
- <map class="gliffy-dynamic" id="gliffy-dynamic-map-24346949-7589"
name="gliffy-dynamic-map-24346949-7589"></map>
+ <map class="gliffy-dynamic" id="gliffy-dynamic-map-24346949-516"
name="gliffy-dynamic-map-24346949-516"></map>
</span>
Modified: websites/production/tapestry/content/extending-the-if-component.html
==============================================================================
--- websites/production/tapestry/content/extending-the-if-component.html
(original)
+++ websites/production/tapestry/content/extending-the-if-component.html Sun
Nov 8 17:21:51 2015
@@ -67,7 +67,30 @@
</div>
<div id="content">
-<div id="ConfluenceContent"><h1
id="ExtendingtheIfComponent-ExtendingtheIfComponent">Extending the If
Component</h1><p>The <a shape="rect" class="external-link"
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/corelib/components/If.html">If</a>
component can be made very flexible; its main parameter, <code>test</code>,
does not <em>have</em> to be bound to a boolean value, it merely has to be
bound to a value that can be <a shape="rect"
href="type-coercion.html">coerced</a> to boolean.</p><p>For example, you may be
working on an application that does a lot of <a shape="rect"
class="external-link"
href="http://lucene.apache.org/java/docs/index.html">Lucene</a> searches, and
you represent the results as a SearchResult object:</p><div class="code panel
pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl"
style="border-bottom-width: 1px;"><b>SearchResult.java</b></div><div
class="codeContent panelContent pdl">
+<div id="ConfluenceContent">
+<div class="atb-scrollbar-macro">
+ <div class="prev">
+ <a shape="rect" href="enum-parameter-recipe.html" rel="prev">
+ <span class="aui-icon aui-icon-small
atb-icon-arrow-left">Previous</span>
+ <span class="title">Enum Parameter
Recipe</span>
+ </a>
+
+ </div>
+ <div class="parent">
+ <a shape="rect" href="cookbook.html" rel="parent">
+ <span class="aui-icon
aui-icon-small atb-icon-arrow-up">Up</span>
+ <span class="title">Cookbook</span>
+ </a>
+
+ </div>
+ <div class="next">
+ <a shape="rect" href="meta-programming-page-content.html" rel="next">
+ <span class="title">Meta-Programming Page Content</span>
+ <span class="aui-icon aui-icon-small
atb-icon-arrow-right">Next</span>
+ </a>
+
+ </div>
+</div><h1 id="ExtendingtheIfComponent-ExtendingtheIfComponent">Extending the
If Component</h1><p>The <a shape="rect" class="external-link"
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/corelib/components/If.html">If</a>
component can be made very flexible; its main parameter, <code>test</code>,
does not <em>have</em> to be bound to a boolean value, it merely has to be
bound to a value that can be <a shape="rect"
href="type-coercion.html">coerced</a> to boolean.</p><p>For example, you may be
working on an application that does a lot of <a shape="rect"
class="external-link"
href="http://lucene.apache.org/java/docs/index.html">Lucene</a> searches, and
you represent the results as a SearchResult object:</p><div class="code panel
pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl"
style="border-bottom-width: 1px;"><b>SearchResult.java</b></div><div
class="codeContent panelContent pdl">
<pre class="brush: java; gutter: false; theme: Default"
style="font-size:12px;">public class SearchResult<T> {
public final Class<T> itemType;
public final List<T> items;
Modified:
websites/production/tapestry/content/forms-and-form-components-faq.html
==============================================================================
--- websites/production/tapestry/content/forms-and-form-components-faq.html
(original)
+++ websites/production/tapestry/content/forms-and-form-components-faq.html Sun
Nov 8 17:21:51 2015
@@ -67,7 +67,30 @@
</div>
<div id="content">
-<div id="ConfluenceContent"><h2
id="FormsandFormComponentsFAQ-FormsandFormComponents">Forms and Form
Components</h2><p>Main article: <a shape="rect"
href="forms-and-validation.html">Forms and Validation</a></p><h3
id="FormsandFormComponentsFAQ-Whatisthet:formdatahiddenfieldfor?">What is the
<code>t:formdata</code> hidden field for?</h3><p>In Tapestry, rendering a form
can be a complicated process; inside the body of the Form component are many of
field components: TextField, Select, TextArea, and so forth. Each of these must
pull data out of your data model and convert it to the string form used inside
the client web browser. In addition, JavaScript to support client-side
validation must be generated. This can be further complicated by the use of
Loop and If components, or made really complicated by the use of Block (to
render portions of other pages: this is what the BeanEditForm component
does).</p><p>Along the way, the Form is generating unique form control names
for each field c
omponent, as it renders.</p><p>When the client-side Form is submitted, an
event is triggered on the server-side Form component. It now needs to locate
each component, in turn, inform the component of its control name, and allow
the component to read the corresponding query parameter. The component then
converts the client-side string back into a server-side value and performs
validations before updating the data model.</p><p>That's where
<code>t:formdata</code> comes in. While components are rendering, they are
using the FormSupport environmental object to record callbacks:</p><div
class="code panel pdl" style="border-width: 1px;"><div class="codeHeader
panelHeader pdl" style="border-bottom-width: 1px;"><b>FormSupport.java
(partial)</b></div><div class="codeContent panelContent pdl">
+<div id="ConfluenceContent">
+<div class="atb-scrollbar-macro">
+ <div class="prev">
+ <a shape="rect" href="page-and-component-classes-faq.html" rel="prev">
+ <span class="aui-icon aui-icon-small
atb-icon-arrow-left">Previous</span>
+ <span class="title">Page And Component Classes
FAQ</span>
+ </a>
+
+ </div>
+ <div class="parent">
+ <a shape="rect" href="frequently-asked-questions.html"
rel="parent">
+ <span class="aui-icon
aui-icon-small atb-icon-arrow-up">Up</span>
+ <span class="title">Frequently Asked
Questions</span>
+ </a>
+
+ </div>
+ <div class="next">
+ <a shape="rect" href="beaneditform-faq.html" rel="next">
+ <span class="title">BeanEditForm FAQ</span>
+ <span class="aui-icon aui-icon-small
atb-icon-arrow-right">Next</span>
+ </a>
+
+ </div>
+</div><h2 id="FormsandFormComponentsFAQ-FormsandFormComponents">Forms and Form
Components</h2><p>Main article: <a shape="rect"
href="forms-and-validation.html">Forms and Validation</a></p><h3
id="FormsandFormComponentsFAQ-Whatisthet:formdatahiddenfieldfor?">What is the
<code>t:formdata</code> hidden field for?</h3><p>In Tapestry, rendering a form
can be a complicated process; inside the body of the Form component are many of
field components: TextField, Select, TextArea, and so forth. Each of these must
pull data out of your data model and convert it to the string form used inside
the client web browser. In addition, JavaScript to support client-side
validation must be generated. This can be further complicated by the use of
Loop and If components, or made really complicated by the use of Block (to
render portions of other pages: this is what the BeanEditForm component
does).</p><p>Along the way, the Form is generating unique form control names
for each field component, as it render
s.</p><p>When the client-side Form is submitted, an event is triggered on the
server-side Form component. It now needs to locate each component, in turn,
inform the component of its control name, and allow the component to read the
corresponding query parameter. The component then converts the client-side
string back into a server-side value and performs validations before updating
the data model.</p><p>That's where <code>t:formdata</code> comes in. While
components are rendering, they are using the FormSupport environmental object
to record callbacks:</p><div class="code panel pdl" style="border-width:
1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width:
1px;"><b>FormSupport.java (partial)</b></div><div class="codeContent
panelContent pdl">
<pre class="brush: java; gutter: true; theme: Default"
style="font-size:12px;">public interface FormSupport extends ClientElement
{
/**
@@ -103,7 +126,30 @@
</div></div><p>The "prop:" prefix identifies that "usernameLabel" is to be
interpreted as a property expression (normally, the binding for the
<code>label</code> parameter is interpreted as a string literal). The Label
component gets the text it displays from the TextField component, and the
TextField component uses the same text when generating server-side and
client-side validation messages.</p><h3
id="FormsandFormComponentsFAQ-Tapestryfocusesonthewrongfieldinmyform,howdoIfixthat?">Tapestry
focuses on the wrong field in my form, how do I fix that?</h3><p>Tapestry
normally figures out the correct field in your form to initially receive focus;
this is based on assigning a <a shape="rect" class="external-link"
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/FieldFocusPriority.html">FieldFocusPriority</a>
to each field as it renders, which works out to the following
logic:</p><ul><li>The first field which has an error</li><li>Or, the first
field which is required
</li><li>Or, the first field</li></ul><p>Occasionally, due a wide range of
factors beyond Tapestry's control, it's selection will not be quite what you
want, and it is necessary to supply an override. The information is tracked
inside the <a shape="rect" class="external-link"
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/services/javascript/JavaScriptSupport.html">JavaScriptSupport</a>
environmental. It's just a matter of injecting the component so that you can
determine its client id, then informing JavaScriptSupport about your
override.</p><p>Here's an example</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;"> <t:textfield t:id="email"
t:mixins="OverrideFieldFocus" .../>
</pre>
-</div></div><p>The <a shape="rect" class="external-link"
href="http://tapestry.apache.org/5.4/apidocs/org/apache/tapestry5/corelib/mixins/OverrideFieldFocus.html">OverrideFieldFocus</a>
mixin forces the email field to be the focus field, regardless.</p></div>
+</div></div><p>The <a shape="rect" class="external-link"
href="http://tapestry.apache.org/5.4/apidocs/org/apache/tapestry5/corelib/mixins/OverrideFieldFocus.html">OverrideFieldFocus</a>
mixin forces the email field to be the focus field, regardless.</p>
+<div class="atb-scrollbar-macro">
+ <div class="prev">
+ <a shape="rect" href="page-and-component-classes-faq.html" rel="prev">
+ <span class="aui-icon aui-icon-small
atb-icon-arrow-left">Previous</span>
+ <span class="title">Page And Component Classes
FAQ</span>
+ </a>
+
+ </div>
+ <div class="parent">
+ <a shape="rect" href="frequently-asked-questions.html"
rel="parent">
+ <span class="aui-icon
aui-icon-small atb-icon-arrow-up">Up</span>
+ <span class="title">Frequently Asked
Questions</span>
+ </a>
+
+ </div>
+ <div class="next">
+ <a shape="rect" href="beaneditform-faq.html" rel="next">
+ <span class="title">BeanEditForm FAQ</span>
+ <span class="aui-icon aui-icon-small
atb-icon-arrow-right">Next</span>
+ </a>
+
+ </div>
+</div></div>
</div>
<div class="clearer"></div>
Modified: websites/production/tapestry/content/forms-and-validation.html
==============================================================================
--- websites/production/tapestry/content/forms-and-validation.html (original)
+++ websites/production/tapestry/content/forms-and-validation.html Sun Nov 8
17:21:51 2015
@@ -107,11 +107,11 @@
</div>
</li></ul>
</div><p> </p><p>Tapestry provides support for creating and rendering
forms, populating their fields, and validating user input. For simple cases,
input validation is declarative, meaning you simply tell Tapestry what
validations to apply to a given field, and it takes care of it on the server
and (optionally) on the client as well. In addition, you can provide event
handler methods in your page or component classes to handle more complex
validation scenarios.</p><p>Finally, Tapestry not only makes it easy to present
errors messages to the user, but it can also automatically highlight form
fields when validation fails.</p><p><strong>Contents</strong></p><p><style
type="text/css">/*<![CDATA[*/
-div.rbtoc1438467572974 {padding: 0px;}
-div.rbtoc1438467572974 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1438467572974 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1447003263696 {padding: 0px;}
+div.rbtoc1447003263696 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1447003263696 li {margin-left: 0px;padding-left: 0px;}
-/*]]>*/</style></p><div class="toc-macro rbtoc1438467572974">
+/*]]>*/</style></p><div class="toc-macro rbtoc1447003263696">
<ul class="toc-indentation"><li>Related Articles</li></ul>
<ul><li><a shape="rect" href="#FormsandValidation-TheFormComponent">The Form
Component</a></li><li><a shape="rect"
href="#FormsandValidation-FormEvents">Form Events</a></li><li><a shape="rect"
href="#FormsandValidation-HandlingEvents">Handling Events</a></li><li><a
shape="rect" href="#FormsandValidation-TrackingValidationErrors">Tracking
Validation Errors</a></li><li><a shape="rect"
href="#FormsandValidation-StoringDataBetweenRequests">Storing Data Between
Requests</a></li><li><a shape="rect"
href="#FormsandValidation-ConfiguringFieldsandLabels">Configuring Fields and
Labels</a></li><li><a shape="rect"
href="#FormsandValidation-CentralizingValidationwith@Validate">Centralizing
Validation with @Validate</a></li><li><a shape="rect"
href="#FormsandValidation-ServerSideValidation">Server Side
Validation</a></li><li><a shape="rect"
href="#FormsandValidation-CustomizingValidationMessages">Customizing Validation
Messages</a>
<ul class="toc-indentation"><li><a shape="rect"
href="#FormsandValidation-CustomizingValidationMessagesforBeanEditForm">Customizing
Validation Messages for BeanEditForm</a></li></ul>
Modified: websites/production/tapestry/content/general-questions.html
==============================================================================
--- websites/production/tapestry/content/general-questions.html (original)
+++ websites/production/tapestry/content/general-questions.html Sun Nov 8
17:21:51 2015
@@ -67,16 +67,54 @@
</div>
<div id="content">
-<div id="ConfluenceContent"><h2 id="GeneralQuestions-GeneralQuestions">General
Questions</h2><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1437340835672 {padding: 0px;}
-div.rbtoc1437340835672 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1437340835672 li {margin-left: 0px;padding-left: 0px;}
+<div id="ConfluenceContent">
+<div class="atb-scrollbar-macro">
+ <div class="prev">
+
+ </div>
+ <div class="parent">
+ <a shape="rect" href="frequently-asked-questions.html"
rel="parent">
+ <span class="aui-icon
aui-icon-small atb-icon-arrow-up">Up</span>
+ <span class="title">Frequently Asked
Questions</span>
+ </a>
-/*]]>*/</style></p><div class="toc-macro rbtoc1437340835672">
+ </div>
+ <div class="next">
+ <a shape="rect" href="templating-and-markup-faq.html" rel="next">
+ <span class="title">Templating and Markup FAQ</span>
+ <span class="aui-icon aui-icon-small
atb-icon-arrow-right">Next</span>
+ </a>
+
+ </div>
+</div><h2 id="GeneralQuestions-GeneralQuestions">General
Questions</h2><p><style type="text/css">/*<![CDATA[*/
+div.rbtoc1447003246853 {padding: 0px;}
+div.rbtoc1447003246853 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1447003246853 li {margin-left: 0px;padding-left: 0px;}
+
+/*]]>*/</style></p><div class="toc-macro rbtoc1447003246853">
<ul class="toc-indentation"><li><a shape="rect"
href="#GeneralQuestions-GeneralQuestions">General Questions</a>
<ul class="toc-indentation"><li><a shape="rect"
href="#GeneralQuestions-HowdoIgetstartedwithTapestry?">How do I get started
with Tapestry?</a></li><li><a shape="rect"
href="#GeneralQuestions-WhydoesTapestryusePrototype?WhynotinsertfavoriteJavaScriptlibraryhere?">Why
does Tapestry use Prototype? Why not insert favorite JavaScript library
here?</a></li><li><a shape="rect"
href="#GeneralQuestions-WhydoesTapestryhaveitsownInversionofControlContainer?WhynotSpringorGuice?">Why
does Tapestry have its own Inversion of Control Container? Why not Spring or
Guice?</a></li><li><a shape="rect"
href="#GeneralQuestions-HowdoIupgradefromTapestry4toTapestry5?">How do I
upgrade from Tapestry 4 to Tapestry 5?</a></li><li><a shape="rect"
href="#GeneralQuestions-HowdoIupgradefromoneversionofTapestry5toanother?">How
do I upgrade from one version of Tapestry 5 to another?</a></li></ul>
</li></ul>
-</div><h3 id="GeneralQuestions-HowdoIgetstartedwithTapestry?">How do I get
started with Tapestry?</h3><p>The easiest way to get started is to use <a
shape="rect" class="external-link" href="http://maven.apache.org">Apache
Maven</a> to create your initial project; Maven can use an <em>archetype</em>
(a kind of project template) to create a bare-bones Tapestry application for
you. See the <a shape="rect" href="getting-started.html">Getting Started</a>
page for more details.</p><p>Even without Maven, Tapestry is quite easy to set
up. You just need to <a shape="rect" href="download.html">download</a> the
binaries and setup your build to place them inside your WAR's WEB-INF/lib
folder. The rest is just some one-time <a shape="rect"
href="configuration.html">configuration of the web.xml deployment
descriptor</a>.</p><h3
id="GeneralQuestions-WhydoesTapestryusePrototype?WhynotinsertfavoriteJavaScriptlibraryhere?">Why
does Tapestry use Prototype? Why not <em>insert favorite JavaScript librar
y here</em>?</h3><p>An important goal for Tapestry is seamless DHTML and Ajax
integration. To serve that goal, it was important that the built in components
be capable of Ajax operations, such as dynamically re-rendering parts of the
page. Because of that, it made sense to bundle a well-known JavaScript library
as part of Tapestry.</p><p>At the time (this would be 2006-ish), Prototype and
Scriptaculous were well known and well documented, and jQuery was just getting
started.</p><p>The intent has always been to make this aspect of Tapestry
pluggable. Tapestry 5.4 includes the option of either Prototype or jQuery
Tapestry 5.5 will remove Prototype as an option..</p><h3
id="GeneralQuestions-WhydoesTapestryhaveitsownInversionofControlContainer?WhynotSpringorGuice?">Why
does Tapestry have its own Inversion of Control Container? Why not Spring or
Guice?</h3><p>An Inversion of Control Container is <em>the</em> key piece of
Tapestry's infrastructure. It is absolutely necessary to create sof
tware as robust, performant ,and extensible as Tapestry.</p><p>Tapestry IoC
includes a number of features that distinguish itself from other
containers:</p><ul><li>Configured in code, not XML</li><li>Built-in extension
mechanism for services: configurations and contributions</li><li>Built-in
aspect oriented programming model (service decorations and advice)</li><li>Easy
modularization</li><li>Best-of-breed exception reporting</li></ul><p>Because
Tapestry is implemented on top of its IoC container, and because the container
makes it easy to extend or replace any service inside the container, it is
possible to make the small changes to Tapestry needed to customize it to any
project's needs.</p><h3
id="GeneralQuestions-HowdoIupgradefromTapestry4toTapestry5?">How do I upgrade
from Tapestry 4 to Tapestry 5?</h3><p>There is no existing tool that supports
upgrading from Tapestry 4 to Tapestry 5; Tapestry 5 is a complete
rewrite.</p><p>Many of the basic concepts in Tapestry 4 are still pres
ent in Tapestry 5, but refactored, improved, streamlined, and simplified. The
basic concept of pages, templates and components are largely the same. Other
aspects, such as server-side event handling, is markedly different.</p><h3
id="GeneralQuestions-HowdoIupgradefromoneversionofTapestry5toanother?">How do I
upgrade from one version of Tapestry 5 to another?</h3><p>A lot of effort goes
into making an upgrade from one Tapestry 5 release to another go smoothly. In
the general case, it is just a matter of updating the version number in your
Maven <code>build.xml</code> or Gradle <code>build.gradle</code> file and
executing the appropriate commands (e.g., <code>gradle idea</code> or <code>mvn
eclipse:eclipse</code>) to bring your local workspace up to date with the
latest binaries.</p><p>After changing dependencies, you should always perform a
clean recompile of your application.</p><p>We make every effort to ensure
backwards-compatibility. Tapestry is mostly coded in terms of interface
s; those interfaces are stable to a point: interfaces your code is expected to
implement are usually completely frozen; interfaces your code is expected to
invoke, such as the interfaces to IoC services, are stable, but may have new
methods added in a release; existing methods are not changed.</p><p>In
<em>rare</em> cases a choice is necessary between fixing bugs (or adding
essential functionality) and maintaining complete backwards compatibility; in
those cases, an incompatible change may be introduced. These are always
discussed in detail in the <a shape="rect" href="release-notes.html">Release
Notes</a> for the specific release. You should always read the release notes
before attempting an upgrade, and always (really, <em>always</em>) be prepared
to retest your application afterwards.</p><p>Note that you should be careful
any time you make use of <strong>internal</strong> APIs (you can tell an API is
internal by the package name, <code>org.apache.tapestry5.internal...</code>. Int
ernal APIs may change <em>at any time</em>; there's no guarantee of backwards
compatibility. Please always check on the documentation, or consult the user
mailing list, to see if there's a stable, public alternative. If you do make
use of internal APIs, be sure to get a discussion going so that your needs can
be met in the future by a stable, public API.</p><p><span style="color:
rgb(83,145,38);font-size: 16.0px;line-height: 1.5625;">Why are there both
Request and HttpServletRequest?</span></p><p>Tapestry's Request interface is
<em>very</em> close to the standard HttpServletRequest interface. It differs in
a few ways, omitting some unneeded methods, and adding a couple of new methods
(such as <code>isXHR()</code>), as well as changing how some existing methods
operate. For example, <code>getParameterNames()</code> returns a sorted List of
Strings; HttpServletRequest returns an Enumeration, which is a very dated
approach.</p><p>However, the stronger reason for Request (and the relate
d interfaces Response and Session) is to enable the support for Portlets at
some point in the future. By writing code in terms of Tapestry's Request, and
not HttpServletRequest, you can be assured that the same code will operate in
both Servlet Tapestry and Portlet Tapestry.</p></div>
+</div><h3 id="GeneralQuestions-HowdoIgetstartedwithTapestry?">How do I get
started with Tapestry?</h3><p>The easiest way to get started is to use <a
shape="rect" class="external-link" href="http://maven.apache.org">Apache
Maven</a> to create your initial project; Maven can use an <em>archetype</em>
(a kind of project template) to create a bare-bones Tapestry application for
you. See the <a shape="rect" href="getting-started.html">Getting Started</a>
page for more details.</p><p>Even without Maven, Tapestry is quite easy to set
up. You just need to <a shape="rect" href="download.html">download</a> the
binaries and setup your build to place them inside your WAR's WEB-INF/lib
folder. The rest is just some one-time <a shape="rect"
href="configuration.html">configuration of the web.xml deployment
descriptor</a>.</p><h3
id="GeneralQuestions-WhydoesTapestryusePrototype?WhynotinsertfavoriteJavaScriptlibraryhere?">Why
does Tapestry use Prototype? Why not <em>insert favorite JavaScript librar
y here</em>?</h3><p>An important goal for Tapestry is seamless DHTML and Ajax
integration. To serve that goal, it was important that the built in components
be capable of Ajax operations, such as dynamically re-rendering parts of the
page. Because of that, it made sense to bundle a well-known JavaScript library
as part of Tapestry.</p><p>At the time (this would be 2006-ish), Prototype and
Scriptaculous were well known and well documented, and jQuery was just getting
started.</p><p>The intent has always been to make this aspect of Tapestry
pluggable. Tapestry 5.4 includes the option of either Prototype or jQuery
Tapestry 5.5 will remove Prototype as an option..</p><h3
id="GeneralQuestions-WhydoesTapestryhaveitsownInversionofControlContainer?WhynotSpringorGuice?">Why
does Tapestry have its own Inversion of Control Container? Why not Spring or
Guice?</h3><p>An Inversion of Control Container is <em>the</em> key piece of
Tapestry's infrastructure. It is absolutely necessary to create sof
tware as robust, performant ,and extensible as Tapestry.</p><p>Tapestry IoC
includes a number of features that distinguish itself from other
containers:</p><ul><li>Configured in code, not XML</li><li>Built-in extension
mechanism for services: configurations and contributions</li><li>Built-in
aspect oriented programming model (service decorations and advice)</li><li>Easy
modularization</li><li>Best-of-breed exception reporting</li></ul><p>Because
Tapestry is implemented on top of its IoC container, and because the container
makes it easy to extend or replace any service inside the container, it is
possible to make the small changes to Tapestry needed to customize it to any
project's needs.</p><h3
id="GeneralQuestions-HowdoIupgradefromTapestry4toTapestry5?">How do I upgrade
from Tapestry 4 to Tapestry 5?</h3><p>There is no existing tool that supports
upgrading from Tapestry 4 to Tapestry 5; Tapestry 5 is a complete
rewrite.</p><p>Many of the basic concepts in Tapestry 4 are still pres
ent in Tapestry 5, but refactored, improved, streamlined, and simplified. The
basic concept of pages, templates and components are largely the same. Other
aspects, such as server-side event handling, is markedly different.</p><h3
id="GeneralQuestions-HowdoIupgradefromoneversionofTapestry5toanother?">How do I
upgrade from one version of Tapestry 5 to another?</h3><p>A lot of effort goes
into making an upgrade from one Tapestry 5 release to another go smoothly. In
the general case, it is just a matter of updating the version number in your
Maven <code>build.xml</code> or Gradle <code>build.gradle</code> file and
executing the appropriate commands (e.g., <code>gradle idea</code> or <code>mvn
eclipse:eclipse</code>) to bring your local workspace up to date with the
latest binaries.</p><p>After changing dependencies, you should always perform a
clean recompile of your application.</p><p>We make every effort to ensure
backwards-compatibility. Tapestry is mostly coded in terms of interface
s; those interfaces are stable to a point: interfaces your code is expected to
implement are usually completely frozen; interfaces your code is expected to
invoke, such as the interfaces to IoC services, are stable, but may have new
methods added in a release; existing methods are not changed.</p><p>In
<em>rare</em> cases a choice is necessary between fixing bugs (or adding
essential functionality) and maintaining complete backwards compatibility; in
those cases, an incompatible change may be introduced. These are always
discussed in detail in the <a shape="rect" href="release-notes.html">Release
Notes</a> for the specific release. You should always read the release notes
before attempting an upgrade, and always (really, <em>always</em>) be prepared
to retest your application afterwards.</p><p>Note that you should be careful
any time you make use of <strong>internal</strong> APIs (you can tell an API is
internal by the package name, <code>org.apache.tapestry5.internal...</code>. Int
ernal APIs may change <em>at any time</em>; there's no guarantee of backwards
compatibility. Please always check on the documentation, or consult the user
mailing list, to see if there's a stable, public alternative. If you do make
use of internal APIs, be sure to get a discussion going so that your needs can
be met in the future by a stable, public API.</p><p><span style="color:
rgb(83,145,38);font-size: 16.0px;line-height: 1.5625;">Why are there both
Request and HttpServletRequest?</span></p><p>Tapestry's Request interface is
<em>very</em> close to the standard HttpServletRequest interface. It differs in
a few ways, omitting some unneeded methods, and adding a couple of new methods
(such as <code>isXHR()</code>), as well as changing how some existing methods
operate. For example, <code>getParameterNames()</code> returns a sorted List of
Strings; HttpServletRequest returns an Enumeration, which is a very dated
approach.</p><p>However, the stronger reason for Request (and the relate
d interfaces Response and Session) is to enable the support for Portlets at
some point in the future. By writing code in terms of Tapestry's Request, and
not HttpServletRequest, you can be assured that the same code will operate in
both Servlet Tapestry and Portlet Tapestry.</p>
+<div class="atb-scrollbar-macro">
+ <div class="prev">
+
+ </div>
+ <div class="parent">
+ <a shape="rect" href="frequently-asked-questions.html"
rel="parent">
+ <span class="aui-icon
aui-icon-small atb-icon-arrow-up">Up</span>
+ <span class="title">Frequently Asked
Questions</span>
+ </a>
+
+ </div>
+ <div class="next">
+ <a shape="rect" href="templating-and-markup-faq.html" rel="next">
+ <span class="title">Templating and Markup FAQ</span>
+ <span class="aui-icon aui-icon-small
atb-icon-arrow-right">Next</span>
+ </a>
+
+ </div>
+</div></div>
</div>
<div class="clearer"></div>
Modified: websites/production/tapestry/content/hibernate-core-conf.html
==============================================================================
--- websites/production/tapestry/content/hibernate-core-conf.html (original)
+++ websites/production/tapestry/content/hibernate-core-conf.html Sun Nov 8
17:21:51 2015
@@ -126,7 +126,7 @@
<span class="icon aui-icon aui-icon-small
aui-iconfont-page-default" title="Page">Page:</span> </div>
<div class="details">
- <a shape="rect" href="hibernate-core.html">Hibernate -
Core</a>
+ <a shape="rect"
href="hibernate-core-conf.html">Hibernate - Core - Conf</a>
</div>
@@ -135,7 +135,7 @@
<span class="icon aui-icon aui-icon-small
aui-iconfont-page-default" title="Page">Page:</span> </div>
<div class="details">
- <a shape="rect"
href="hibernate-core-conf.html">Hibernate - Core - Conf</a>
+ <a shape="rect" href="hibernate-core.html">Hibernate -
Core</a>
</div>
Modified: websites/production/tapestry/content/hibernate-core.html
==============================================================================
--- websites/production/tapestry/content/hibernate-core.html (original)
+++ websites/production/tapestry/content/hibernate-core.html Sun Nov 8
17:21:51 2015
@@ -118,7 +118,7 @@
<span class="icon aui-icon aui-icon-small
aui-iconfont-page-default" title="Page">Page:</span> </div>
<div class="details">
- <a shape="rect" href="hibernate-core.html">Hibernate -
Core</a>
+ <a shape="rect"
href="hibernate-core-conf.html">Hibernate - Core - Conf</a>
</div>
@@ -127,7 +127,7 @@
<span class="icon aui-icon aui-icon-small
aui-iconfont-page-default" title="Page">Page:</span> </div>
<div class="details">
- <a shape="rect"
href="hibernate-core-conf.html">Hibernate - Core - Conf</a>
+ <a shape="rect" href="hibernate-core.html">Hibernate -
Core</a>
</div>