How to get started
In order to quickly get up to speed on Tapestry 5, there are numerous information sources besides this Wiki available:
Preparing your development environment
Components
- Components Reference
- Jumpstart - Components configuration examples
- Check Out the Source Code - Examples and Demos of many components in the source code, like the Palette, Grid, BeanEditForm, etc.
- Creating Your Own Components - Creating your own components is really simple, and fun to do as well. (This example implements a www.dhtmlgoodies.com drag-and-drop-folder tree component)
- Creating Your Own Component Library - Steps to create a reusable library (JAR) of T5 components.
- Outputting Locale-formatted Numbers - Creating a new component for formatting (numbers) according to locale, using literals (integer, decimal or currency). It's based on Output component.
- Creating a Tab Panel - Explains how to create a tab panel.
- Submit with Context - A Submit component that passes a context
- Submit with Context and Navigation - A Submit component that passes a context and allows event handler to return navigational object.
- "Any" Component - A deprecated but still useful component that does ... nothing (by default)
- Image Component - Another deprecated component that's useful for making "previewable" templates
- Tapestry 5 Components - By Shing Hing Man
- Tapestry 5 components at Google Code - Several projects with Tapestry 5 components – share your components here.
- Tree Component - A tree component based on DHTMLgoodies.com's drag 'n drop folder tree
- Enhanced Palette Component - Based heavily on the existing core palette and uses Matt Kruse's Option Transfer JavaScript (Works in IE!)
- Palette Events - How to invoke a JavaScript function when the selected items are added/removed/reordered in a Palette
- Grid Component Tricks - Some tricks using the Grid component
- Tapestry 5 and JavaScript Explained - A detailed look at how Tapestry 5 integrates JavaScript into your application. In this article we create a mixin for adding a JavaScript confirmation box to link components, explaining each step.
- Advanced Layout Component - A sophisticated Layout component
- Simple And Powerful Layouts - Creates flexible layouts, using a simple reusable component.
- Layout with Menu - Layout with added menu bar
- Enum as Component Parameter - Defining a new enum as a component parameter, and adding the string -> enum type coercion for it
- Captcha
Code snippets
General
- How to Format Date/Time, etc - How to format Date, Time, timestamps, Decimals, Numbers, Currencies
- Localized Date Field - How to create a localized DateField for BeanModel.
- Outputting Raw Html - How to output raw, unfiltered HTML
- Linking To Non Tapestry URIs - How to link to non-Tapestry URIs (useful for Acegi integration)
- Obtaining the HttpServletRequest - How to obtain the HttpServletRequest, HttpServletResponse and HttpSession if you really need them
- Creating A Property Edit Block - Explains how to create a property editor and contribute it to the BeanEditForm.
- How to Use Forms - Examples of how forms are connected to methods in your code.
- Exception Page - Displaying your own exception page.
- Redirect Exception - Redirect to another URL from anywhere inside a page or component.
- Using Tapestry For Custom Error Pages - How to serve a custom 404 page, or other error, using Tapestry
- Changing Locale - Change the locale of the user.
- Including JavaScript - Explains how to add your own custom JavaScript functions.
- Integrating jQuery - Include jQuery and it's plugins to spice up your pages!
- Making a Basic Crud App show you how easy is the conception of a CRUD cycle with Tapestry 5
- Running Tasks in a Separate Thread - run a task (Runnable) in a separate thread
- Running Tasks in a WorkQueue - run multiple task through a WorkQueue with one or more threads
- Using a Persistent Field Strategy - How to create a PersistentFieldStrategy for the Persist annotation.
- Adding Validators - How to add your own validators to tapestry
- Outputting XHTML - How to override the default markup model to always use XHTML compliant tags
- Reading Symbols From a Property File - How to have symbols coming from a property file and how to use them in your pages/components
- Getting the Webapp Path - How to get the real path of the webapp directory.
- Reading a File from Webapp Context - How a service reads a file from web app context folder
- Using Tapestry Test - How to actually use Tapestry test
- Visualizing the Component Hierarchy - How to visualize the component hierarchy just on your pages in the browser
- Conditionally Rendering Attributes - How to conditionally render HTML tag attributes in Tapestry templates
- Send Error Page as Email - How to send a dev-mode error page in an production-mode environment (tap version 5.2.6)
- Get an HTML String from a render command parameter - How to use tapestry's rendering engine to convert a parameter specified in TML to a serverside HTML string
Select Components
Inversion of Control (IOC)
Binding Prefixes
Bindings are used in templates ${message:myMessageKey} or as attribute to components <t:mycomponent value="literal:Hello world"/> to access message in resource bundles, properties, pass String literals and many more. The following pages explain how to write your own bindings.
Localization
Streaming Data
Integration with other frameworks
Hibernate
JPA
Spring
Google Web Toolkit (GWT)
EJB / JEE
Security
Security is the condition of being protected against danger, loss, and criminals.
Authentication and Authorization related
Integrity
Bug workarounds / patches
Meta info
Coding traps
How to contribute
IRC
Chris Lewis mentioned Tapestry's IRC: #tapestry AT irc.freenode.net: "There's usually 5 ~ 8 of us in there, and we work/talk about Tapestry."
Please add more 'how tos'. Remember to prefix the page name with Tapestry5.