Modified:
websites/production/tapestry/content/creating-the-skeleton-application.html
==============================================================================
--- websites/production/tapestry/content/creating-the-skeleton-application.html
(original)
+++ websites/production/tapestry/content/creating-the-skeleton-application.html
Mon Feb 19 20:20:17 2018
@@ -94,7 +94,7 @@
</div></div><p>Of course, adjust the <code>localRepository</code> element to
match the correct path for your computer.</p><h3
id="CreatingTheSkeletonApplication-CreateProject">Create Project</h3><p>Okay,
let's get started creating our new project.</p><div
class="confluence-information-macro confluence-information-macro-tip"><span
class="aui-icon aui-icon-small aui-iconfont-approve
confluence-information-macro-icon"></span><div
class="confluence-information-macro-body"><p>The instructions below use
Eclipse's New Project wizard to create the project from a Maven archetype. If
you'd rather use the <strong>mvn</strong> command line, see the <a
href="getting-started.html">Getting Started</a> instructions, then skip to <a
href="creating-the-skeleton-application.html">Creating The Skeleton
Application</a> page.</p></div></div><p> </p><p>In Eclipse, go to
<strong>File > New ></strong> <strong>Project... > Maven > Maven
Project</strong></p><p><strong><span class="confluenc
e-embedded-file-wrapper confluence-embedded-manual-size"><img
class="confluence-embedded-image" width="613"
src="creating-the-skeleton-application.data/select-a-wizard.png"></span><br
clear="none"></strong></p><p>Then click <strong>Next</strong>,
<strong>Next</strong> (again), and then on the <strong>Select an
Archetype</strong> page click the <strong>Configure</strong> button on the
Catalog line. The <strong>Archetype</strong> preferences dialog should appear.
Click the <strong>Add Remote Catalog...</strong> button, as shown
below:</p><p><span class="confluence-embedded-file-wrapper
confluence-embedded-manual-size"><img class="confluence-embedded-image"
width="900"
src="creating-the-skeleton-application.data/add-archetype-catalog.png"></span></p><p>As
shown above, enter <span class="nolink"><span class="nolink">"<span
class="nolink">http://tapestry.apache.org</span>"</span></span> in the Catalog
File field, and "Apache Tapestry" in the Description field.</p><div
class="confluence-i
nformation-macro confluence-information-macro-information"><span
class="aui-icon aui-icon-small aui-iconfont-info
confluence-information-macro-icon"></span><div
class="confluence-information-macro-body"><p>If you want to try an unreleased
(alpha or beta) version of Tapestry, use <span class="nolink">the <strong><a
class="external-link"
href="https://repository.apache.org/content/repositories/staging">https://repository.apache.org/content/repositories/staging</a></strong></span>
archetype catalog file instead.</p></div></div><p>Click <strong>OK</strong>,
then<strong> OK</strong> again.</p><p>On the Select an Archetype dialog (shown
below), select the newly-added Apache Tapestry catalog, then select the
"quickstart" artifact from the list and click
<strong>Next</strong>.</p><p><span class="confluence-embedded-file-wrapper
confluence-embedded-manual-size"><img class="confluence-embedded-image"
width="804"
src="creating-the-skeleton-application.data/select-archetype.png"></span></p><p>
 </p><p><em><strong>Note:</strong> Screenshots in this tutorial may show
different (either newer or older) versions of Tapestry than you may
see.</em></p><p>Fill in the Group Id, Artifact Id, Version and Package  as
follows:</p><p><span class="confluence-embedded-file-wrapper
confluence-embedded-manual-size"><img class="confluence-embedded-image"
width="530"
src="creating-the-skeleton-application.data/specify-archetype-parameters.png"></span></p><p>then
click Finish.</p><div class="confluence-information-macro
confluence-information-macro-information"><span class="aui-icon aui-icon-small
aui-iconfont-info confluence-information-macro-icon"></span><div
class="confluence-information-macro-body"><p>The first time you use Maven,
project creation may take a while as Maven downloads a large number of JAR
dependencies for Maven, Jetty and Tapestry. These downloaded files are cached
locally and will not need to be downloaded again, but you do have to be patient
on first use.</p></
div></div><p>After Maven finishes, you'll see a new directory,
<code>tutorial1, in your Package Explorer view in Eclipse.</code></p><h2
id="CreatingTheSkeletonApplication-RunningtheApplicationusingJetty">Running the
Application using Jetty</h2><p>One of the first things you can do is use Maven
to run Jetty directly.</p><p>Right-click on the <code>tutorial1</code> project
in your Package Explorer view and select <strong>Run As > Maven Build...
></strong>, enter a Goal of <strong>"jetty:run"</strong>. This creates a
"Run Configuration" named "tutorial1" that we'll use throughout this tutorial
to start the app:</p><p><span class="confluence-embedded-file-wrapper
confluence-embedded-manual-size"><img class="confluence-embedded-image"
width="568"
src="creating-the-skeleton-application.data/run-configuration.png"></span></p><p>Tapestry
runs best with a couple of additional options; click the "JRE" tab and enter
the following VM Arguments:</p><pre></pre><p>-XX:MaxPermSize=256M</p><p>
-Xmx600m</p><p>-Dtapestry.execution-mode=development</p>
-<p><code><em>(If you're using JDK 1.8 then you should omit the MaxPermSize
argument.)</em></code></p><p><code>Here's how it
looks:</code></p><p><code><span class="confluence-embedded-file-wrapper
confluence-embedded-manual-size"><img class="confluence-embedded-image"
width="666"
src="creating-the-skeleton-application.data/run-configuration-jre.png"></span><br
clear="none"></code></p><p>Finally, click <strong>Run</strong>.</p><p>Again,
the first time, there's a dizzying number of downloads, but before you know it,
the Jetty servlet container is up and running.</p><p>Once Jetty is initialized
(which only takes a few seconds after the first time), you'll see the following
in your console:</p><p><span class="confluence-embedded-file-wrapper
confluence-embedded-manual-size"><img class="confluence-embedded-image"
width="865"
src="creating-the-skeleton-application.data/console-startup.png"></span></p><p><em>Note
the red square icon above. Later on you'll use that icon to stop Jetty before
restarting the app.</em></p><p>You can now open a web browser to <a
class="external-link" href="http://localhost:8080/tutorial1/"
rel="nofollow">http://localhost:8080/tutorial1/</a> to see the running
application:</p><p><span class="confluence-embedded-file-wrapper
confluence-embedded-manual-size"><img class="confluence-embedded-image"
width="785"
src="creating-the-skeleton-application.data/startpage.png"></span></p><p> </p><div
style="clear: both"></div><p style="text-align: left;"><strong><em>NOTE: Your
screen may look very different depending on the version of Tapestry you are
using!</em></strong></p><p style="text-align: left;">The date and time in the
middle of the page shows that this is a live application.</p><p>This is a
complete little web app; it doesn't do much, but it demonstrate how to create a
number of pages sharing a common layout, and demonstrates some simple
navigation and link handling. You can see that it has several different pages
that share a common layo
ut. (<span><em>Layout</em> is a loose term meaning common look and feel and
navigation across many or all of the pages of an application. Often an
application will include a Layout component to provide that
commonness.)</span></p><p><span>Next: <a
href="creating-the-skeleton-application.html">Creating The Skeleton
Application</a></span></p><p><span><br clear="none"></span></p></div>
+<p><code><em>(If you're using JDK 1.8 then you should omit the MaxPermSize
argument.)</em></code></p><p><code>Here's how it
looks:</code></p><p><code><span class="confluence-embedded-file-wrapper
confluence-embedded-manual-size"><img class="confluence-embedded-image"
width="666"
src="creating-the-skeleton-application.data/run-configuration-jre.png"></span><br
clear="none"></code></p><p>Finally, click <strong>Run</strong>.</p><p>Again,
the first time, there's a dizzying number of downloads, but before you know it,
the Jetty servlet container is up and running.</p><p>Once Jetty is initialized
(which only takes a few seconds after the first time), you'll see the following
in your console:</p><p><span class="confluence-embedded-file-wrapper
confluence-embedded-manual-size"><img class="confluence-embedded-image"
width="865"
src="creating-the-skeleton-application.data/console-startup.png"></span></p><p><em>Note
the red square icon above. Later on you'll use that icon to stop Jetty before
restarting the app.</em></p><p>You can now open a web browser to <a
class="external-link" href="http://localhost:8080/tutorial1/"
rel="nofollow">http://localhost:8080/tutorial1/</a> to see the running
application:</p><p><span class="confluence-embedded-file-wrapper
confluence-embedded-manual-size"><img class="confluence-embedded-image"
width="785"
src="creating-the-skeleton-application.data/startpage.png"></span></p><p> </p><div
style="clear: both"></div><p style="text-align: left;"><strong><em>NOTE: Your
screen may look very different depending on the version of Tapestry you are
using!</em></strong></p><p style="text-align: left;">The date and time in the
middle of the page shows that this is a live application.</p><p>This is a
complete little web app; it doesn't do much, but it demonstrate how to create a
number of pages sharing a common layout, and demonstrates some simple
navigation and link handling. You can see that it has several different pages
that share a common layo
ut. (<span><em>Layout</em> is a loose term meaning common look and feel and
navigation across many or all of the pages of an application. Often an
application will include a Layout component to provide that
commonness.)</span></p><p><span>Next: <a
href="exploring-the-project.html">Exploring the
Project</a></span></p><p><span><br clear="none"></span></p></div>
</div>
<div class="clearer"></div>
Modified: websites/production/tapestry/content/documentation.html
==============================================================================
--- websites/production/tapestry/content/documentation.html (original)
+++ websites/production/tapestry/content/documentation.html Mon Feb 19 20:20:17
2018
@@ -70,7 +70,7 @@
<div id="ConfluenceContent"><div
style="float:right;margin-left:1em"><h2 id="Documentation-AllTopics">All
Topics</h2><ul class="childpages-macro"><li><a
href="introduction.html">Introduction</a></li><li><a
href="getting-started.html">Getting Started</a></li><li><a
href="principles.html">Principles</a></li><li><a
href="tapestry-tutorial.html">Tapestry Tutorial</a><ul
class="childpages-macro"><li><a
href="dependencies-tools-and-plugins.html">Dependencies, Tools and
Plugins</a></li><li><a href="creating-the-skeleton-application.html">Creating
The Skeleton Application</a></li><li><a
href="exploring-the-project.html">Exploring the Project</a></li><li><a
href="implementing-the-hi-lo-guessing-game.html">Implementing the Hi-Lo
Guessing Game</a></li><li><a
href="using-beaneditform-to-create-user-forms.html">Using BeanEditForm To
Create User Forms</a></li><li><a
href="using-tapestry-with-hibernate.html">Using Tapestry With
Hibernate</a></li></ul></li><li><a href="us
er-guide.html">User Guide</a><ul class="childpages-macro"><li><a
href="supported-environments-and-versions.html">Supported Environments and
Versions</a></li><li><a href="project-layout.html">Project
Layout</a></li><li><a href="configuration.html">Configuration</a></li><li><a
href="runtime-exceptions.html">Runtime Exceptions</a></li><li><a
href="class-reloading.html">Class Reloading</a></li><li><a
href="component-reference.html">Component Reference</a></li><li><a
href="annotations.html">Annotations</a></li><li><a
href="component-classes.html">Component Classes</a></li><li><a
href="component-templates.html">Component Templates</a></li><li><a
href="property-expressions.html">Property Expressions</a></li><li><a
href="component-parameters.html">Component Parameters</a></li><li><a
href="parameter-type-coercion.html">Parameter Type Coercion</a></li><li><a
href="layout-component.html">Layout Component</a></li><li><a
href="component-mixins.html">Component Mixins</a><ul class="c
hildpages-macro"><li><a href="built-in-mixins.html">Built-in
Mixins</a></li></ul></li><li><a href="page-navigation.html">Page
Navigation</a></li><li><a href="localization.html">Localization</a></li><li><a
href="page-life-cycle.html">Page Life Cycle</a></li><li><a
href="request-processing.html">Request Processing</a></li><li><a
href="component-rendering.html">Component Rendering</a></li><li><a
href="component-events.html">Component Events</a></li><li><a
href="url-rewriting.html">URL rewriting</a></li><li><a
href="dom.html">DOM</a></li><li><a href="response-compression.html">Response
Compression</a></li><li><a href="security.html">Security</a></li><li><a
href="https.html">HTTPS</a></li><li><a
href="content-type-and-markup.html">Content Type and Markup</a></li><li><a
href="persistent-page-data.html">Persistent Page Data</a></li><li><a
href="session-storage.html">Session Storage</a><ul
class="childpages-macro"><li><a href="clustering-issues.html">Clustering
Issues</a></l
i></ul></li><li><a href="injection.html">Injection</a></li><li><a
href="environmental-services.html">Environmental Services</a></li><li><a
href="css.html">CSS</a></li><li><a href="assets.html">Assets</a></li><li><a
href="forms-and-validation.html">Forms and Validation</a></li><li><a
href="beaneditform-guide.html">BeanEditForm Guide</a></li><li><a
href="uploading-files.html">Uploading Files</a></li><li><a
href="logging.html">Logging</a></li><li><a
href="unit-testing-pages-or-components.html">Unit testing pages or
components</a></li><li><a href="integration-testing.html">Integration
Testing</a></li><li><a href="development-dashboard.html">Development
Dashboard</a></li><li><a href="modules.html">Modules</a><ul
class="childpages-macro"><li><a href="built-in-modules.html">Built In
Modules</a></li><li><a href="third-party-modules.html">Third Party
Modules</a></li></ul></li><li><a href="ioc.html">IOC</a><ul
class="childpages-macro"><li><a href="tapestry-ioc-overview.html">T
apestry IoC Overview</a></li><li><a href="tapestry-ioc-modules.html">Tapestry
IoC Modules</a></li><li><a href="defining-tapestry-ioc-services.html">Defining
Tapestry IOC Services</a></li><li><a href="service-advisors.html">Service
Advisors</a></li><li><a href="tapestry-ioc-decorators.html">Tapestry IoC
Decorators</a></li><li><a href="tapestry-ioc-configuration.html">Tapestry IoC
Configuration</a></li><li><a href="case-insensitivity.html">Case
Insensitivity</a></li><li><a href="autoloading-modules.html">Autoloading
Modules</a></li><li><a href="service-implementation-reloading.html">Service
Implementation Reloading</a></li><li><a
href="ordering-by-constraints.html">Ordering by Constraints</a></li><li><a
href="symbols.html">Symbols</a></li><li><a
href="chainbuilder-service.html">ChainBuilder Service</a></li><li><a
href="pipelinebuilder-service.html">PipelineBuilder Service</a></li><li><a
href="shadowbuilder-service.html">ShadowBuilder Service</a></li><li><a
href="strategy
builder-service.html">StrategyBuilder Service</a></li><li><a
href="injection-in-detail.html">Injection in Detail</a></li><li><a
href="object-providers.html">Object Providers</a></li><li><a
href="service-serialization.html">Service Serialization</a></li><li><a
href="type-coercion.html">Type Coercion</a></li><li><a
href="starting-the-ioc-registry.html">Starting the IoC Registry</a></li><li><a
href="registry-startup.html">Registry Startup</a></li><li><a
href="parallel-execution.html">Parallel Execution</a></li><li><a
href="logging-in-tapestry.html">Logging in Tapestry</a></li><li><a
href="using-jsr-330-standard-annotations.html">Using JSR 330 standard
annotations</a></li><li><a href="operation-tracker.html">Operation
Tracker</a></li></ul></li><li><a href="hibernate-core.html">Hibernate -
Core</a><ul class="childpages-macro"><li><a
href="hibernate-core-conf.html">Hibernate - Core - Conf</a></li><li><a
href="hibernate.html">Hibernate</a></li></ul></li><li><a href="integrati
ng-with-spring-framework.html">Integrating with Spring
Framework</a></li><li><a href="bean-validation.html">Bean
Validation</a></li><li><a href="component-report.html">Component
Report</a></li><li><a href="aliases.html">Aliases</a></li><li><a
href="integrating-with-jpa.html">Integrating with JPA</a></li><li><a
href="client-side-javascript.html">Client-Side JavaScript</a><ul
class="childpages-macro"><li><a href="javascript-modules.html">JavaScript
Modules</a></li><li><a href="coffeescript.html">CoffeeScript</a></li><li><a
href="typescript.html">TypeScript</a></li><li><a
href="legacy-javascript.html">Legacy JavaScript</a></li><li><a
href="ajax-and-zones.html">Ajax and Zones</a></li></ul></li></ul></li><li><a
href="cheat-sheets.html">Cheat Sheets</a><ul class="childpages-macro"><li><a
href="application-module-class-cheat-sheet.html">Application Module Class Cheat
Sheet</a></li><li><a href="component-cheat-sheet.html">Component Cheat
Sheet</a></li><li><a href="tapestry-for
-jsf-users.html">Tapestry for JSF Users</a></li></ul></li><li><a
href="cookbook.html">Cookbook</a><ul class="childpages-macro"><li><a
href="default-parameter.html">Default Parameter</a></li><li><a
href="overriding-exception-reporting.html">Overriding Exception
Reporting</a></li><li><a href="error-page-recipe.html">Error Page
Recipe</a></li><li><a href="supporting-informal-parameters.html">Supporting
Informal Parameters</a></li><li><a href="component-libraries.html">Component
Libraries</a></li><li><a href="switching-cases.html">Switching
Cases</a></li><li><a href="enum-parameter-recipe.html">Enum Parameter
Recipe</a></li><li><a href="extending-the-if-component.html">Extending the If
Component</a></li><li><a
href="meta-programming-page-content.html">Meta-Programming Page
Content</a></li><li><a href="using-select-with-a-list.html">Using Select With
a List</a></li><li><a href="ioc-cookbook.html">IoC cookbook</a><ul
class="childpages-macro"><li><a href="ioc-cookbook-basic-se
rvices-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></li></ul></li><li><a
href="frequently-asked-questions.html">Frequently Asked Questions</a><ul
class="childpages-macro"><li><a href="general-questions.html">General
Questions</a></li><li><a href="templating-and-markup-faq.html">Templating and
Markup FAQ</a></li><li><a href="page-and-component-classes-faq.html">Page And
Component Classes FAQ</a></li><li><a
href="forms-and-form-components-faq.html">Forms and Form Components
FAQ</a></li><li><a href="beaneditform-faq.html">BeanEdi
tForm FAQ</a></li><li><a href="link-components-faq.html">Link Components
FAQ</a></li><li><a href="component-events-faq.html">Component Events
FAQ</a></li><li><a href="javascript-faq.html">JavaScript FAQ</a></li><li><a
href="ajax-components-faq.html">Ajax Components FAQ</a></li><li><a
href="injection-faq.html">Injection FAQ</a></li><li><a
href="tapestry-inversion-of-control-faq.html">Tapestry Inversion of Control
FAQ</a></li><li><a href="security-faq.html">Security FAQ</a></li><li><a
href="integration-with-existing-applications.html">Integration with existing
applications</a></li><li><a href="request-processing-faq.html">Request
Processing FAQ</a></li><li><a
href="limitations.html">Limitations</a></li><li><a
href="specific-errors-faq.html">Specific Errors FAQ</a></li><li><a
href="hibernate-support-faq.html">Hibernate Support FAQ</a></li><li><a
href="maven-support-faq.html">Maven Support FAQ</a></li><li><a
href="release-upgrade-faq.html">Release Upgrade FAQ</a></li></ul>
</li><li><a href="release-notes.html">Release Notes</a><ul
class="childpages-macro"><li><a href="how-to-upgrade.html">How to
Upgrade</a></li><li><a href="release-notes-50.html">Release Notes
5.0</a></li><li><a href="release-notes-51.html">Release Notes
5.1</a></li><li><a href="release-notes-52.html">Release Notes 5.2</a><ul
class="childpages-macro"><li><a href="release-notes-520.html">Release Notes
5.2.0</a></li><li><a href="release-notes-521.html">Release Notes
5.2.1</a></li><li><a href="release-notes-522.html">Release Notes
5.2.2</a></li><li><a href="release-notes-523.html">Release Notes
5.2.3</a></li><li><a href="release-notes-524.html">Release Notes
5.2.4</a></li><li><a href="release-notes-525.html">Release Notes
5.2.5</a></li><li><a href="release-notes-526.html">Release Notes
5.2.6</a></li></ul></li><li><a href="release-notes-53.html">Release Notes
5.3</a></li><li><a href="release-notes-531.html">Release Notes
5.3.1</a></li><li><a href="release-notes-532.html">Re
lease Notes 5.3.2</a></li><li><a href="release-notes-533.html">Release Notes
5.3.3</a></li><li><a href="release-notes-534.html">Release Notes
5.3.4</a></li><li><a href="release-notes-535.html">Release Notes
5.3.5</a></li><li><a href="release-notes-536.html">Release Notes
5.3.6</a></li><li><a href="release-notes-537.html">Release Notes
5.3.7</a></li><li><a href="release-notes-538.html">Release Notes
5.3.8</a></li><li><a href="release-notes-54.html">Release Notes
5.4</a></li><li><a href="release-notes-541.html">Release Notes
5.4.1</a></li><li><a href="release-notes-542.html">Release Notes
5.4.2</a></li><li><a href="release-notes-543.html">Release Notes
5.4.3</a></li></ul></li><li><a href="javascript-rewrite-in-54.html">JavaScript
Rewrite in 5.4</a></li><li><a href="support.html">Support</a></li><li><a
href="developer-information.html">Developer Information</a><ul
class="childpages-macro"><li><a
href="building-tapestry-from-source.html">Building Tapestry from Source</a></
li><li><a href="confluence-site-setup.html">Confluence Site Setup</a><ul
class="childpages-macro"><li><a
href="since-and-deprecated-user-macros.html">Since and Deprecated User
Macros</a></li></ul></li><li><a href="developer-bible.html">Developer
Bible</a></li><li><a href="release-process.html">Release
Process</a></li><li><a href="the-tapestry-jail.html">The tapestry
jail</a></li><li><a href="version-numbers.html">Version
Numbers</a></li></ul></li></ul></div>
-<p>Welcome to the Tapestry 5 Documentation, a collection of guides to teach
beginners the basics and help experienced developers deepen their understanding
of Tapestry's power.</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
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 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="confluenceTd"><p><a
href="tapestry-tutorial.html">Tapestry Tutorial</a></p></td><td colspan="1"
rowspan="1" class="conf
luenceTd"><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 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 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
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
href="frequently-asked-questions.html">FAQ</a></strong></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>A quick pl
ace to check for common problems and solutions</p></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd"><p><a
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 class="external-link"
href="http://refcardz.dzone.com/refcardz/apache-tapestry-50?oid=hom7948"
rel="nofollow">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 class="external-link"
href="http://tapestry.apache.org/5.3.7/apidocs/">5.3.8</a></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><a class="external-link"
href="http://tapestry.apache.org/current">5.4</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><em><span
class="confluence-link">(same as current)</span></em></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><a href="component-reference.html">5.4
(current)</a></td></tr><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p>Release Notes:<
/p></th><td colspan="1" rowspan="1" class="confluenceTd"><p><a
href="release-notes-50.html">5.0</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><a href="release-notes-51.html">5.1</a></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a
href="release-notes-52.html">5.2</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><a href="release-notes-538.html">5.3.8</a></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><a
href="release-notes-54.html">5.4</a></td></tr></tbody></table></div><p><sup>1</sup>
needs to be built manually from archived sources at <a 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
href="user-guide.html">User Guide</a> consists of over 75 pages of detailed
information on the concepts behind Tapestry and instructions o
n how to use this powerful tool. Highlights include:</p><ul><li
class="confluence-link"><a href="client-side-javascript.html">Client-Side
JavaScript</a> and <a href="ajax-and-zones.html">Ajax and Zones</a> describe
Tapestry's built-in support for dynamic in-page behavior.</li><li><a
href="integrating-with-spring-framework.html">Integrating with Spring
Framework</a> describes how to integrate Spring into your Tapestry
application.</li><li><a href="hibernate.html">Tapestry/Hibernate Integration
Library</a> provides out-of-the-box support for using Hibernate 3.</li><li><a
href="bean-validation.html">JSR 303: Bean Validation</a> shows how to use
standard annotations for validation</li><li><a
href="integration-testing.html">Integration Testing</a> shows how to test your
application with Selenium.</li></ul><p><a href="user-guide.html">More
topics</a>...</p><h1
id="Documentation-BlogsbyTapestryDevelopersandtheCommunity">Blogs by Tapestry
Developers and the Community</h1><ul><li><a
class="external-link" href="http://tapestryjava.blogspot.com/"
rel="nofollow">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 class="external-link"
href="http://blog.tapestry5.de/" rel="nofollow">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
class="external-link" href="http://tawus.wordpress.com/" rel="nofollow">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></ul><h1 id="Documentation-BooksonTapestry">Books on
Tapestry</h1><p>There are at least 9 published <a href="books.html">books on
Tapestry</a>, including three on Tapestry 5.</p><h1
id="Documentation-TapestryPresentations">Tapestry
Presentations</h1><ul><li>Mark Shead's <a
class="external-link"
href="http://blog.markshead.com/900/tapestry-5-10-minute-demo/"
rel="nofollow">10 Minute Demo</a></li><li>H. L. Ship's <a
class="external-link" href="https://www.youtube.com/watch?v=5BGt7eMFC20"
rel="nofollow">Tapestry 5.4 - Bootstrap-enhanced Exception
Reporting</a></li><li><a class="external-link"
href="http://jazoon.com/Portals/0/Content/slides/th_a7_1130-1220_drobiazko.pdf"
rel="nofollow">JavaServer Faces 2.0 vs. Tapestry 5</a> (PDF) A Head-to-Head
Comparison by Igor Drobiazko at Jazoon 2010</li><li><a class="external-link"
href="http://www.parleys.com/#st=5&sl=5&id=1700"
rel="nofollow">Tapestry 5: Java power, Scripting Ease</a> (VIDEO) by Howard
Lewis Ship at Devoxx 2009</li></ul><p><a href="presentations.html">More
presentations</a> ...</p><h1 id="Documentation-TapestryWikis">Tapestry
Wikis</h1><ul><li><a class="external-link"
href="http://wiki.apache.org/tapestry/FrontPage">Tapestry Community Wiki</a>
(Moin Moin) contains a lot of user-gen
erated information on different Tapestry use cases.</li><li><a
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 href="mailing-lists.html">Tapestry Mailing
Lists</a>.</p><p>In addition, there are occasionally questions and answers
about Tapestry at <a class="external-link"
href="http://stackoverflow.com/questions/tagged/tapestry" rel="nofollow">Stack
Overflow</a>.</p><h1 id="Documentation-TheDeveloperCorner">The Developer
Corner</h1><p><a href="developer-information.html">Developer Information</a>
gives information needed by the Tapestry developers</p><p> </p></div>
+<p>Welcome to the Tapestry 5 Documentation, a collection of guides to teach
beginners the basics and help experienced developers deepen their understanding
of Tapestry's power.</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
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 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="confluenceTd"><p><a
href="tapestry-tutorial.html">Tapestry Tutorial</a></p></td><td colspan="1"
rowspan="1" class="conf
luenceTd"><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 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 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
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
href="frequently-asked-questions.html">FAQ</a></strong></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>A quick pl
ace to check for common problems and solutions</p></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd"><p><a
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 class="external-link"
href="http://refcardz.dzone.com/refcardz/apache-tapestry-50?oid=hom7948"
rel="nofollow">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 class="external-link"
href="http://tapestry.apache.org/5.3.7/apidocs/">5.3.8</a></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><a class="external-link"
href="http://tapestry.apache.org/current">5.4</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><em><span
class="confluence-link">(same as current)</span></em></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><a href="component-reference.html">5.4
(current)</a></td></tr><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p>Release Notes:<
/p></th><td colspan="1" rowspan="1" class="confluenceTd"><p><a
href="release-notes-50.html">5.0</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><a href="release-notes-51.html">5.1</a></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a
href="release-notes-52.html">5.2</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><a href="release-notes-538.html">5.3.8</a></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><a
href="release-notes-54.html">5.4</a></td></tr></tbody></table></div><p><sup>1</sup>
needs to be built manually from archived sources at <a 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
href="user-guide.html">User Guide</a> consists of over 75 pages of detailed
information on the concepts behind Tapestry and instructions o
n how to use this powerful tool. Highlights include:</p><ul><li
class="confluence-link"><a href="client-side-javascript.html">Client-Side
JavaScript</a> and <a href="ajax-and-zones.html">Ajax and Zones</a> describe
Tapestry's built-in support for dynamic in-page behavior.</li><li><a
href="integrating-with-spring-framework.html">Integrating with Spring
Framework</a> describes how to integrate Spring into your Tapestry
application.</li><li><a href="hibernate.html">Tapestry/Hibernate Integration
Library</a> provides out-of-the-box support for using Hibernate 3.</li><li><a
href="bean-validation.html">JSR 303: Bean Validation</a> shows how to use
standard annotations for validation</li><li><a
href="integration-testing.html">Integration Testing</a> shows how to test your
application with Selenium.</li></ul><p><a href="user-guide.html">More
topics</a>...</p><h1
id="Documentation-BlogsbyTapestryDevelopersandtheCommunity">Blogs by Tapestry
Developers and the Community</h1><ul><li><a
class="external-link" href="http://tapestryjava.blogspot.com/"
rel="nofollow">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 class="external-link"
href="http://blog.tapestry5.de/" rel="nofollow">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
class="external-link" href="http://tawus.wordpress.com/" rel="nofollow">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></ul><h1 id="Documentation-BooksonTapestry">Books on
Tapestry</h1><p>There are at least 9 published <a href="books.html">books on
Tapestry</a>, including three on Tapestry 5.</p><h1
id="Documentation-TapestryPresentations">Tapestry
Presentations</h1><ul><li>Mark Shead's <a
class="external-link"
href="http://blog.markshead.com/900/tapestry-5-10-minute-demo/"
rel="nofollow">10 Minute Demo</a></li><li>H. L. Ship's <a
class="external-link" href="https://www.youtube.com/watch?v=5BGt7eMFC20"
rel="nofollow">Tapestry 5.4 - Bootstrap-enhanced Exception
Reporting</a></li><li><a class="external-link"
href="http://blog.tapestry5.de/wp-content/uploads/2010/06/JSF-2.0-vs-Tapestry-5.pdf"
rel="nofollow">JavaServer Faces 2.0 vs. Tapestry 5</a> (PDF) A Head-to-Head
Comparison by Igor Drobiazko at Jazoon 2010</li><li><a class="external-link"
href="http://www.parleys.com/#st=5&sl=5&id=1700"
rel="nofollow">Tapestry 5: Java power, Scripting Ease</a> (VIDEO) by Howard
Lewis Ship at Devoxx 2009</li></ul><p><a href="presentations.html">More
presentations</a> ...</p><h1 id="Documentation-TapestryWikis">Tapestry
Wikis</h1><ul><li><a class="external-link"
href="http://wiki.apache.org/tapestry/FrontPage">Tapestry Community Wiki</a>
(Moin Moin) contains a lot of use
r-generated information on different Tapestry use cases.</li><li><a
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 href="mailing-lists.html">Tapestry Mailing
Lists</a>.</p><p>In addition, there are occasionally questions and answers
about Tapestry at <a class="external-link"
href="http://stackoverflow.com/questions/tagged/tapestry" rel="nofollow">Stack
Overflow</a>.</p><h1 id="Documentation-TheDeveloperCorner">The Developer
Corner</h1><p><a 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/exploring-the-project.html
==============================================================================
--- websites/production/tapestry/content/exploring-the-project.html (original)
+++ websites/production/tapestry/content/exploring-the-project.html Mon Feb 19
20:20:17 2018
@@ -32,7 +32,6 @@
<script src='/resources/highlighter/scripts/shCore.js'
type='text/javascript'></script>
<script src='/resources/highlighter/scripts/shBrushJava.js'
type='text/javascript'></script>
<script src='/resources/highlighter/scripts/shBrushXml.js'
type='text/javascript'></script>
- <script src='/resources/highlighter/scripts/shBrushPlain.js'
type='text/javascript'></script>
<script>
SyntaxHighlighter.defaults['toolbar'] = false;
SyntaxHighlighter.all();
@@ -262,13 +261,13 @@ public class Index
-<span class="gliffy-container" id="gliffy-container-24346949-7149"
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-6902"
data-fullwidth="913" data-ceoid="24188263"
data-edit="${diagramEditLink.getLinkUrl()}"
data-full="${diagramZoomLink.getLinkUrl()}" data-filename="Templates and
Parameters">
- <map id="gliffy-map-24346949-7596" name="gliffy-map-24346949-7596"></map>
+ <map id="gliffy-map-24346949-1020" name="gliffy-map-24346949-1020"></map>
- <img class="gliffy-image gliffy-image-border"
id="gliffy-image-24346949-7149" 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-7596">
+ <img class="gliffy-image gliffy-image-border"
id="gliffy-image-24346949-6902" 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-1020">
- <map class="gliffy-dynamic" id="gliffy-dynamic-map-24346949-7149"
name="gliffy-dynamic-map-24346949-7149"></map>
+ <map class="gliffy-dynamic" id="gliffy-dynamic-map-24346949-6902"
name="gliffy-dynamic-map-24346949-6902"></map>
</span>
@@ -281,9 +280,7 @@ public class Index
return "A great day to learn Tapestry";
}
</pre>
-</div></div><p>Make sure you save changes; then click the refresh link in the
web browser:</p><p><span class="confluence-embedded-file-wrapper
confluence-embedded-manual-size"><img class="confluence-embedded-image"
width="700"
src="exploring-the-project.data/app-live-reload.png"></span></p><p> </p><div
class="navmenu" style="float:right; width:30%; background:white; margin:3px;
padding:3px">
-<div class="confluence-information-macro
confluence-information-macro-note"><span class="aui-icon aui-icon-small
aui-iconfont-warning confluence-information-macro-icon"></span><div
class="confluence-information-macro-body">
-<p>If Live Class Reloading isn't working for you, check the Troubleshooting
section at <a href="class-reloading.html" title="Class Reloading">Class
Reloading</a>.</p></div></div></div>This is one of Tapestry's early <em>wow
factor</em> features: changes to your component classes are picked up
immediately (a feature we call Live Class Reloading). No restart. No re-deploy.
Make the changes and see them <em>now</em>. Nothing should slow you down or get
in the way of you getting your job done.<p>But ... what if you make a mistake?
What if you got the name in the template wrong. Give it a try; in the template,
change ${currentTime} to, say, ${currenTime}, and see what you get:</p><p><span
class="confluence-embedded-file-wrapper confluence-embedded-manual-size"><img
class="confluence-embedded-image" width="700"
src="exploring-the-project.data/app-error-1.png"></span></p><p>This is
Tapestry's exception report page. It's quite detailed. It clearly identifies
what Tapestry was doing, and re
lates the problem to a specific line in the template, which is shown in
context. Tapestry always expands out the entire stack of exceptions, because it
is so common for exceptions to be thrown, caught, and re-thrown inside other
exceptions. In fact, if we scroll down just a little bit, we see more detail
about this exception, plus a little bit of help:</p><p><span
class="confluence-embedded-file-wrapper confluence-embedded-manual-size"><img
class="confluence-embedded-image" width="700"
src="exploring-the-project.data/app-error-2.png"></span></p><p> </p><p>This
is part of Tapestry's way: it not only spells out exactly what it was doing
and what went wrong, but it even helps you find a solution; here it tells you
the names of properties you could have used.</p><div
class="confluence-information-macro
confluence-information-macro-information"><span class="aui-icon aui-icon-small
aui-iconfont-info confluence-information-macro-icon"></span><div
class="confluence-information-macro-bo
dy"><p>This level of detail reflects that the application has been configured
to run in <em>development mode</em> instead of <em>production mode</em>. In
production mode, the exception report would simply be the top level exception
message. However, most production applications go further and customize how
Tapestry handles and reports exceptions.</p></div></div><p>Tapestry displays
the stack trace of the deepest exception, along with lots of details about the
run-time environment: details about the current request, the HttpSession (if
one exists), and even a detailed list of all JVM system properties. Scroll down
to see all this information.</p><p>Next: <a
href="implementing-the-hi-lo-guessing-game.html">Implementing the Hi-Lo
Guessing Game</a></p><p> </p><p></p></div>
+</div></div><p>Make sure you save changes; then click the refresh link in the
web browser:</p><p><span class="confluence-embedded-file-wrapper
confluence-embedded-manual-size"><img class="confluence-embedded-image"
width="700"
src="exploring-the-project.data/app-live-reload.png"></span></p><p>This is one
of Tapestry's early <em>wow factor</em> features: changes to your component
classes are picked up immediately (a feature we call Live Class Reloading). No
restart. No re-deploy. Make the changes and see them <em>now</em>. Nothing
should slow you down or get in the way of you getting your job done.</p><div
class="confluence-information-macro
confluence-information-macro-information"><span class="aui-icon aui-icon-small
aui-iconfont-info confluence-information-macro-icon"></span><div
class="confluence-information-macro-body"><p>If Live Class Reloading isn't
working for you, check the Troubleshooting section at <a
href="class-reloading.html">Class Reloading</a>.</p></div></div><p>But
... what if you make a mistake? What if you got the name in the template
wrong. Give it a try; in the template, change ${currentTime} to, say,
${currenTime}, and see what you get:</p><p><span
class="confluence-embedded-file-wrapper confluence-embedded-manual-size"><img
class="confluence-embedded-image" width="700"
src="exploring-the-project.data/app-error-1.png"></span></p><p>This is
Tapestry's exception report page. It's quite detailed. It clearly identifies
what Tapestry was doing, and relates the problem to a specific line in the
template, which is shown in context. Tapestry always expands out the entire
stack of exceptions, because it is so common for exceptions to be thrown,
caught, and re-thrown inside other exceptions. In fact, if we scroll down just
a little bit, we see more detail about this exception, plus a little bit of
help:</p><p><span class="confluence-embedded-file-wrapper
confluence-embedded-manual-size"><img class="confluence-embedded-image"
width="700" src="explor
ing-the-project.data/app-error-2.png"></span></p><p> </p><p>This is part
of Tapestry's way: it not only spells out exactly what it was doing and what
went wrong, but it even helps you find a solution; here it tells you the names
of properties you could have used.</p><div class="confluence-information-macro
confluence-information-macro-information"><span class="aui-icon aui-icon-small
aui-iconfont-info confluence-information-macro-icon"></span><div
class="confluence-information-macro-body"><p>This level of detail reflects that
the application has been configured to run in <em>development mode</em> instead
of <em>production mode</em>. In production mode, the exception report would
simply be the top level exception message. However, most production
applications go further and customize how Tapestry handles and reports
exceptions.</p></div></div><p>Tapestry displays the stack trace of the deepest
exception, along with lots of details about the run-time environment: details
about th
e current request, the HttpSession (if one exists), and even a detailed list
of all JVM system properties. Scroll down to see all this
information.</p><p>Next: <a
href="implementing-the-hi-lo-guessing-game.html">Implementing the Hi-Lo
Guessing Game</a></p><p> </p><p></p></div>
</div>
<div class="clearer"></div>
Modified: websites/production/tapestry/content/getting-started.html
==============================================================================
--- websites/production/tapestry/content/getting-started.html (original)
+++ websites/production/tapestry/content/getting-started.html Mon Feb 19
20:20:17 2018
@@ -289,7 +289,7 @@ Application 'app' (version 1.0-SNAPSHOT-
└── resources
└── PLACEHOLDER
30 directories, 39 files</pre>
-</div></div><p>A Tapestry application is composed of pages, each page
consisting of one template file and one Java class.</p><p>Tapestry page
templates have the .tml extension and are found within
src/main/<strong>resources</strong>/ under the app's <strong>pages</strong>
package (src/main/resources/com/example/newapp/pages, in this example).
Templates are essentially HTML with some special markup to reference properties
in the corresponding Java class and to reference ready-made or custom
components.</p><p>Similarly, Tapestry page classes are found in within the
src/main/<strong>java</strong> under the app's <em><strong>pages</strong></em>
package (src/main/java/com/example/newapp/pages, in this example) and their
name matches their template name (Index.tml -> Index.java).</p><p>In the
skeleton project, most of the HTML is not found on the pages themselves but in
a Layout component which acts as a global template for the whole site. Java
classes for components live in src/main/<
strong>java</strong>/com/example/newapp/<strong>components</strong> and
component templates go in
src/main/<strong>resources</strong>/com/example/newapp/<strong>components</strong>.</p><p>The
archetype includes a few optional extras:</p><ul><li>The bundled version of
the <a class="external-link" href="http://getbootstrap.com/"
rel="nofollow">Bootstrap CSS library</a> has a per-project override. You can
see the files in src/webapp/context/mybootstrap, and the overrides to enable
that in AppModule.java.</li><li>By default, Tapestry users <a
class="external-link" href="http://prototypejs.org/"
rel="nofollow">Prototype</a> as its client-side library, the archetype
overrides this to <a class="external-link" href="https://jquery.org/"
rel="nofollow">jQuery</a>, which is preferred for new projects.</li><li>The
archetype adds a simple filter that shows the timing of each
request.</li><li>The archetype sets up not just for builds with Maven, but also
via <a class="external-link" href="ht
tp://gradle.org/" rel="nofollow">Gradle</a>.</li></ul><h2
id="GettingStarted-What'snext?">What's next?</h2><p>To deepen your
understanding, step through the <a href="getting-started.html">Getting
Started</a>, which goes into much more detail about setting up your project as
well as loading it into Eclipse... then continues on to teach you more about
Tapestry.</p><p>Be sure to read about the core <a
href="getting-started.html">Tapestry Principles</a>, and browse the extensive
<a href="documentation.html">Documentation.</a></p><h2
id="GettingStarted-ObtainHelp">Obtain Help</h2><p>Tapestry has an active user
mailing list on which you can find a lot of valuable support, commonly within
just a few minutes. You can subscribe by sending e-mail to <a
class="external-link" href="mailto:[email protected]"
rel="nofollow">[email protected]</a> or look for an answer in
the <a class="external-link"
href="http://markmail.org/search/list:org.apache.tapestry.
users" rel="nofollow">archives</a>. <a href="mailing-lists.html">More
Options</a>...</p><p>Having trouble? Try our <a
href="tapestry-tutorial.html">Tutorial</a>.</p><hr><p> </p><p> </p></div>
+</div></div><p>A Tapestry application is composed of pages, each page
consisting of one template file and one Java class.</p><p>Tapestry page
templates have the .tml extension and are found within
src/main/<strong>resources</strong>/ under the app's <strong>pages</strong>
package (src/main/resources/com/example/newapp/pages, in this example).
Templates are essentially HTML with some special markup to reference properties
in the corresponding Java class and to reference ready-made or custom
components.</p><p>Similarly, Tapestry page classes are found in within the
src/main/<strong>java</strong> under the app's <em><strong>pages</strong></em>
package (src/main/java/com/example/newapp/pages, in this example) and their
name matches their template name (Index.tml -> Index.java).</p><p>In the
skeleton project, most of the HTML is not found on the pages themselves but in
a Layout component which acts as a global template for the whole site. Java
classes for components live in src/main/<
strong>java</strong>/com/example/newapp/<strong>components</strong> and
component templates go in
src/main/<strong>resources</strong>/com/example/newapp/<strong>components</strong>.</p><p>The
archetype includes a few optional extras:</p><ul><li>The bundled version of
the <a class="external-link" href="http://getbootstrap.com/"
rel="nofollow">Bootstrap CSS library</a> has a per-project override. You can
see the files in src/webapp/context/mybootstrap, and the overrides to enable
that in AppModule.java.</li><li>By default, Tapestry users <a
class="external-link" href="http://prototypejs.org/"
rel="nofollow">Prototype</a> as its client-side library, but the archetype
overrides this to <a class="external-link" href="https://jquery.org/"
rel="nofollow">jQuery</a>, which is preferred for new projects.</li><li>The
archetype adds a simple filter that shows the timing of each
request.</li><li>The archetype sets up not just for builds with Maven, but also
via <a class="external-link" href
="http://gradle.org/" rel="nofollow">Gradle</a>.</li></ul><h2
id="GettingStarted-What'snext?">What's next?</h2><p>To deepen your
understanding, step through the <a href="tapestry-tutorial.html">Tapestry
Tutorial</a>, which goes into much more detail about setting up your project as
well as loading it into Eclipse... then continues on to teach you more about
Tapestry.</p><p>Be sure to read about the core <a
href="principles.html">Tapestry Principles</a>, and browse the extensive <a
href="documentation.html">Documentation.</a></p><h2
id="GettingStarted-ObtainHelp">Obtain Help</h2><p>Tapestry has an active user
mailing list on which you can find a lot of valuable support, commonly within
just a few minutes. You can subscribe by sending e-mail to <a
class="external-link" href="mailto:[email protected]"
rel="nofollow">[email protected]</a> or look for an answer in
the <a class="external-link"
href="http://markmail.org/search/list:org.apache.tapest
ry.users" rel="nofollow">archives</a>. <a href="mailing-lists.html">More
Options</a>...</p><p>Having trouble? Try our <a
href="tapestry-tutorial.html">Tutorial</a>.</p><hr><p> </p><p> </p></div>
</div>
<div class="clearer"></div>
Modified:
websites/production/tapestry/content/implementing-the-hi-lo-guessing-game.html
==============================================================================
---
websites/production/tapestry/content/implementing-the-hi-lo-guessing-game.html
(original)
+++
websites/production/tapestry/content/implementing-the-hi-lo-guessing-game.html
Mon Feb 19 20:20:17 2018
@@ -101,7 +101,7 @@ public class Index
<t:actionlink t:id="start">start guessing</t:actionlink>
</p>
</pre>
-</div></div><p>If you refresh the browser and hover your mouse over the "start
guessing" link, you'll see that its URL is now /tutorial1/index.start, which
identifies the name of the page ("index") and the id of the component
("start").</p><p>If you click the link now, you'll get an error:</p><p><span
class="confluence-embedded-file-wrapper confluence-embedded-manual-size"><img
class="confluence-embedded-image" width="500"
src="implementing-the-hi-lo-guessing-game.data/hilo-index-missing-action-error.png"></span></p><p>Tapestry
is telling us that we need to provide some kind of event handler for that
event. What does that look like?</p><p>An event handler is a method of the Java
class with a special name. The name is
<code>on</code><strong><em>Eventname</em></strong><code>From</code><strong><em>Component-id</em></strong>
... here we want a method named <code>onActionFromStart()</code>. How do we
know that "action" is the right event name? Because that's what ActionLink
does, that's
why its named <strong><em>Action</em></strong>Link.</p><p>Once again, Tapestry
gives us options; if you don't like naming conventions, there's an @<a
class="external-link"
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/annotations/OnEvent.html">OnEvent</a>
annotation you can place on the method instead, which restores the freedom to
name the method as you like. Details about this approach are in the <a
href="implementing-the-hi-lo-guessing-game.html">Tapestry Users' Guide</a>.
We'll be sticking with the naming convention approach for the
tutorial.</p><p>When handling a component event request (the kind of request
triggered by the ActionLink component's URL), Tapestry will find the component
and trigger a component event on it. This is the callback our server-side code
needs to figure out what the user is doing on the client side. Let's start with
an empty event handler:</p><div class="code panel pdl" style="border-width:
1px;"><div class="codeHeader panelHea
der pdl" style="border-bottom-width: 1px;"><b>Index.java</b></div><div
class="codeContent panelContent pdl">
+</div></div><p>If you refresh the browser and hover your mouse over the "start
guessing" link, you'll see that its URL is now /tutorial1/index.start, which
identifies the name of the page ("index") and the id of the component
("start").</p><p>If you click the link now, you'll get an error:</p><p><span
class="confluence-embedded-file-wrapper confluence-embedded-manual-size"><img
class="confluence-embedded-image" width="500"
src="implementing-the-hi-lo-guessing-game.data/hilo-index-missing-action-error.png"></span></p><p>Tapestry
is telling us that we need to provide some kind of event handler for that
event. What does that look like?</p><p>An event handler is a method of the Java
class with a special name. The name is
<code>on</code><strong><em>Eventname</em></strong><code>From</code><strong><em>Component-id</em></strong>
... here we want a method named <code>onActionFromStart()</code>. How do we
know that "action" is the right event name? Because that's what ActionLink
does, that's
why its named <strong><em>Action</em></strong>Link.</p><p>Once again, Tapestry
gives us options; if you don't like naming conventions, there's an @<a
class="external-link"
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/annotations/OnEvent.html">OnEvent</a>
annotation you can place on the method instead, which restores the freedom to
name the method as you like. Details about this approach are in the <a
href="user-guide.html">Tapestry Users' Guide</a>. We'll be sticking with the
naming convention approach for the tutorial.</p><p>When handling a component
event request (the kind of request triggered by the ActionLink component's
URL), Tapestry will find the component and trigger a component event on it.
This is the callback our server-side code needs to figure out what the user is
doing on the client side. Let's start with an empty event handler:</p><div
class="code panel pdl" style="border-width: 1px;"><div class="codeHeader
panelHeader pdl" style="border-bot
tom-width: 1px;"><b>Index.java</b></div><div class="codeContent panelContent
pdl">
<pre class="brush: java; gutter: false; theme: Default"
style="font-size:12px;">package com.example.tutorial1.pages;
public class Index
Modified: websites/production/tapestry/content/introduction.html
==============================================================================
--- websites/production/tapestry/content/introduction.html (original)
+++ websites/production/tapestry/content/introduction.html Mon Feb 19 20:20:17
2018
@@ -127,7 +127,7 @@
</div>
-<h2 id="Introduction-WhatisApacheTapestry?">What is Apache
Tapestry?</h2><p>Apache Tapestry is an open-source framework for creating
dynamic, robust, highly scalable web applications in Java. Tapestry complements
and builds upon the standard Java Servlet API, and so it works in any servlet
container or application server.</p><p>Tapestry divides a web application into
a set of pages, each constructed from components. This provides a consistent
structure, allowing the Tapestry framework to assume responsibility for key
concerns such as URL construction and dispatch, persistent state storage on the
client or on the server, user input validation,
localization/internationalization, and exception reporting. Developing Tapestry
applications involves creating HTML templates using plain HTML, and adding a
small java class for each. In Tapestry, you create your application in terms of
objects, and the methods and properties of those objects – and
specifically not in terms of URLs and qu
ery parameters. Tapestry brings true object oriented development to Java web
applications.</p><p>Tapestry is specifically designed to make creating new
components very easy, as this is a routine approach when building
applications.</p><p>Tapestry is architected to scale from tiny, single-page
applications all the way up to massive applications consisting of hundreds of
individual pages, developed by large, diverse teams. Tapestry easily integrates
with any kind of backend, including JEE, Spring and Hibernate.</p><p>It's more
than what you can do with Tapestry ... it's also how you do it! Tapestry is a
vastly productive environment. Java developers love it because they can make
Java code changes and see them immediately ... no redeploy, no restart! And
it's blazingly fast to boot (even when files have changed). Designers love it
because Tapestry templates are so close to ordinary HTML, without all the cruft
and confusion seen in <a href="introduction.html">JavaServer Pages</a>. Mana
gers love it because it makes it easy for large teams to work together
productively, and because they know important features (including localization)
are baked right in. Once you work in Tapestry there's no going
back!</p><p>Tapestry is released under the Apache Software License 2.0.</p><h2
id="Introduction-ThirdPartyLibraries,TutorialsandResources">Third Party
Libraries, Tutorials and Resources</h2><p>A number of third party libraries,
tutorials and resources are listed on the <a
href="introduction.html">Introduction</a> page.</p><h2
id="Introduction-AboutReleasesandSnapshots">About Releases and
Snapshots</h2><p>Most users will want to use the latest stable release of
Tapestry, and for that your best bet for new projects is to use the Quickstart
Maven archetype to create your initial Tapestry project, as described on the <a
href="introduction.html">Introduction</a> page. The Quickstart archetype
generates a full, working project directory. For upgrading existing projects,
just u
se the Maven dependency listed on the <a
href="introduction.html">Introduction</a> page.</p><p>You can also pull down
Tapestry modules in the form of binary and source JARs from the <a
class="external-link" href="http://search.maven.org/#browse" rel="nofollow"
title="1738327132">Maven Central repository</a>.</p><p>Tapestry itself is built
using Gradle, which makes it really easy to download the source and build it
yourself, either the whole project, or just one single module.</p><p>The use of
Maven and Gradle has let us move with great speed, providing preview releases
and snapshots.</p><p>Snapshots are intermediate versions of releases, with
"-SNAPSHOT" at the end of the version number. Maven notices that -SNAPSHOT
suffix and handles the dependency specially. It knows that snapshot releases
can change frequently, so it will keep checking (at least once a day, maybe
more often) to see if there's an updated version of the snapshot.</p><p>A
nightly build process on Tapestry's contin
uous integration server creates new snapshots every night.</p><p>Snapshots
don't go in the Maven central repository (that's reserved for full releases).
Instead, they go into the Tapestry snapshots repository at <a
class="external-link"
href="https://repository.apache.org/content/groups/snapshots/org/apache/tapestry/">https://repository.apache.org/content/groups/snapshots/org/apache/tapestry/</a>.</p><p>To
access the snapshot repository, just add <code>-DremoteRepositories=<span
class="nolink"><a class="external-link"
href="http://repository.apache.org/snapshots/">http://repository.apache.org/snapshots/</a></span></code>
to the command line when running Maven.</p><p>Documentation on this site
sometimes refers to the latest snapshot ... that is, it is often ahead of the
last official release, with version-specific differences clearly marked. In
some cases, it is written as if the snapshot release is stable. For example, if
documentation refers to version 5.4.x and that hasn't been
released yet, you can try 5.4.x-SNAPSHOT.</p></div>
+<h2 id="Introduction-WhatisApacheTapestry?">What is Apache
Tapestry?</h2><p>Apache Tapestry is an open-source framework for creating
dynamic, robust, highly scalable web applications in Java. Tapestry complements
and builds upon the standard Java Servlet API, and so it works in any servlet
container or application server.</p><p>Tapestry divides a web application into
a set of pages, each constructed from components. This provides a consistent
structure, allowing the Tapestry framework to assume responsibility for key
concerns such as URL construction and dispatch, persistent state storage on the
client or on the server, user input validation,
localization/internationalization, and exception reporting. Developing Tapestry
applications involves creating HTML templates using plain HTML, and adding a
small java class for each. In Tapestry, you create your application in terms of
objects, and the methods and properties of those objects – and
specifically not in terms of URLs and qu
ery parameters. Tapestry brings true object oriented development to Java web
applications.</p><p>Tapestry is specifically designed to make creating new
components very easy, as this is a routine approach when building
applications.</p><p>Tapestry is architected to scale from tiny, single-page
applications all the way up to massive applications consisting of hundreds of
individual pages, developed by large, diverse teams. Tapestry easily integrates
with any kind of backend, including JEE, Spring and Hibernate.</p><p>It's more
than what you can do with Tapestry ... it's also how you do it! Tapestry is a
vastly productive environment. Java developers love it because they can make
Java code changes and see them immediately ... no redeploy, no restart! And
it's blazingly fast to boot (even when files have changed). Designers love it
because Tapestry templates are so close to ordinary HTML, without all the cruft
and confusion seen in <a href="tapestry-for-jsf-users.html">JavaServer Pages
</a>. Managers love it because it makes it easy for large teams to work
together productively, and because they know important features (including
localization) are baked right in. Once you work in Tapestry there's no going
back!</p><p>Tapestry is released under the Apache Software License 2.0.</p><h2
id="Introduction-ThirdPartyLibraries,TutorialsandResources">Third Party
Libraries, Tutorials and Resources</h2><p>A number of third party libraries,
tutorials and resources are listed on the <a
href="modules.html">Modules</a> page.</p><h2
id="Introduction-AboutReleasesandSnapshots">About Releases and Snapshots</h2><p
class="confluence-link">Most users will want to use the latest stable release
of Tapestry, and for that your best bet for new projects is to use the
Quickstart Maven archetype to create your initial Tapestry project, as
described on the <a href="getting-started.html">Getting Started</a> page. The
Quickstart archetype generates a full, working project directory. For
upgrading existing projects, just use the Maven dependency listed on the <a
href="download.html">Download</a> page.</p><p>You can also pull down Tapestry
modules in the form of binary and source JARs from the <a
class="external-link" href="http://search.maven.org/#browse" rel="nofollow"
title="1738327132">Maven Central repository</a>.</p><p>Tapestry itself is built
using Gradle, which makes it really easy to download the source and build it
yourself, either the whole project, or just one single module.</p><p>The use of
Maven and Gradle has let us move with great speed, providing preview releases
and snapshots.</p><p>Snapshots are intermediate versions of releases, with
"-SNAPSHOT" at the end of the version number. Maven notices that -SNAPSHOT
suffix and handles the dependency specially. It knows that snapshot releases
can change frequently, so it will keep checking (at least once a day, maybe
more often) to see if there's an updated version of the snapshot.</p><p>A
nightly build p
rocess on Tapestry's continuous integration server creates new snapshots every
night.</p><p>Snapshots don't go in the Maven central repository (that's
reserved for full releases). Instead, they go into the Tapestry snapshots
repository at <a class="external-link"
href="https://repository.apache.org/content/groups/snapshots/org/apache/tapestry/">https://repository.apache.org/content/groups/snapshots/org/apache/tapestry/</a>.</p><p>To
access the snapshot repository, just add <code>-DremoteRepositories=<span
class="nolink"><a class="external-link"
href="http://repository.apache.org/snapshots/">http://repository.apache.org/snapshots/</a></span></code>
to the command line when running Maven.</p><p>Documentation on this site
sometimes refers to the latest snapshot ... that is, it is often ahead of the
last official release, with version-specific differences clearly marked. In
some cases, it is written as if the snapshot release is stable. For example, if
documentation refers to version
5.4.x and that hasn't been released yet, you can try 5.4.x-SNAPSHOT.</p></div>
</div>
<div class="clearer"></div>