First, the event that it triggers is explicitly controlled, rather than always "action".

Second, the event is triggered in its container.

This allows slightly shorter URLs but also allows multiple components within the same container to generate identical
URLs for common actions.

Component Parameters

Name

Description

Type

Flags

Default

Default Prefix

Since

anchor

An anchor value to append to the generated URL (the hash separator will be added automatically).

String

literal

context

The context for the link (optional parameter). This list of values will be converted into strings and included in
the URI. The strings will be coerced back to whatever their values are and made available to event handler
methods.

Object

prop

disabled

If true, then then no link element is rendered (and no informal parameters as well). The body is, however, still
rendered.

boolean

false

prop

event

The name of the event to be triggered in the parent component. Defaults to the id of the component. An org.apache.tapestry5.corelib.components.ActionLink triggers an "action" event on itself, and EventLink component
triggers any arbitrary event on its container.

String

literal

parameters

If specified, the parameters are added to the link as query parameters in key=value fashion.
Values will be coerced to string using value encoder; keys should be Strings.

java.util.Map

Not Null

prop

5.3

zone

Binding the zone parameter turns the link into a an Ajax control that causes the related zone to be updated.

String

literal

Examples:

This example is from Tapestry itself, from the GridColumns component that displays the columns
titles across to the top of a Grid. We've simplified the example somewhat to focus in on
the use of the EventLink component.

The advantage of the EventLink component is that instead of having two identical event handler
methods,
onActionFromSort() and onActionFromSort2(), we have a single event handler method,
onSort(), that covers events triggered by either component. In addition, the URLs for the two
components
will be identical, whereas if using ActionLink components, the URLs would be slightly different, to
reflect to two different component ids.

This example also shows the advantages of defining the component in the Java class,
using the
@Component annotation, rather than in the template (as we do in most examples). We can
simply define two fields with the same configuration.

Notes:

The event parameter is often omitted; it defaults to the component's id ... you will often specify
the component id, or a specific event name, but not both.