org.apache.tapestry5.corelib.components.Grid.xdoc Maven / Gradle / Ivy
Show all versions of tapestry-core Show documentation
The Grid component is closely related to the BeanEditor component; they are both based on the same
underlying concept and share quite a bit of code.
In this example, we'll display a list of users. We'll also show some basic customization, to convert a
column
from just text, to a clickable link.
This example shows much of the default behavior, using a collection of randomly generated users.
The column order is determined by the order of the getter methods in the User class. The columns are
sortable, and
because there are more results than will fit on a single page, page navigation is included (the
navigation
disappears for small result sets).
The @NonVisual annotation prevents the id property from being displayed.
We want to make the user's last name a clickable link to a detail page for the user.
The block parameter name
propertycell
is used to override the rendering of cells for one property. As usual, case is ignored. Here we
use a PageLink component to link to a ViewUser page, passing the id of the user as
activation context for the target page.
The Grid component takes care of the <td> element, and the provided block parameter
provides the content
inside
the <td>.
For the block to know what is being rendered, we bind the row parameter of the Grid
to the user property of the page. The Grid will keep updating this property
just before it renders each row (using its own internal renderers, or the ones
provided as parameters).
The header for a column may be overridden in the same way, using a parameter name
of
propertyheader
. The parameter block will provide the content
inside the <th> element. The provided block is responsible for
providing any links or icons related to sorting.
Binding the Grid's empty parameter overrides the default message displayed when there
is no data to display. As demonstrated above, it doesn't have to be simple text, the
block can be a snippet of markup and components.
The UserList class exists to provide access to the UserDAO service, and to act as a holder
for the user property, needed when the Grid is rendering. We need it here because we've
overridden the rendering of the lastName property.
Commonly, you may want to add a column to the Grid to support a computed property, or as a placeholder
for an action. We'll do the latter, adding a column for deleting a user.