Component Bindings

Components are configured by binding their parameters. Binding of parameters may occur inside a page or component template, or a page or component specification.

When binding a component parameter, the value to be bound may be just a literal string, or it could be an OGNL expression, or subject to any of a number of other interpretations. Tapestry uses a prefix value, such as ognl:, or message:, to identify how the rest of the value is to be interpreted. The prefix identifies the binding type :

Binding Type Description Example OGNL Equivalent
asset References an asset of the component. asset:stylesheet ognl:assets.stylesheet
bean References a named bean (defined by a <bean> element). bean:validationDelegate ognl:beans.validationDelegate
clientId The clientId of the given component. clientId:myForm ognl:components.myForm.clientId
component References a nested component with the provided component id. component:form ognl:components.form
hivemind References a HiveMind object, much like <inject> . hivemind:service:app.MyService
listener The name of a listener method . listener:formSubmit ognl:listeners.formSubmit
literal Used to "escape" a binding prefix, marking the suffix as a literal value. literal:ognl:not-an-expression
message References a localized message from the component's message catalog. message:page-title ognl:messages.getMessage("page-title")
meta References a meta configured value for a specific component/page or global configuration file. (such as APPNAME.application or FooComponent.jwc) meta:renderIfTags n/a
ognl An OGNL expression to be evaluated. ognl:engine.visit.admin
state True of false dependening on whether the named application state object exists. state:visit
translator Initializer used to obtain and configure a Translator instance. translator:number,pattern=#
validators List of configured Validator instances (used with TextField and others). validators:email,required,minLength=10

Most of these are quite straight forward; the validator, validators and translator prefixes require some additional description.


You can define your own prefixes by contributing into the tapestry.bindings.BindingFactories configuration point.

What happens when you omit a binding prefix? In a page or component template , the value it is assumed to be a literal string, as with the "literal:" prefix. In a page or component specification, or inside a Java annotation, the value is assumed to be an OGNL expression, as with the "ognl:" prefix (but even this can be configured). You will occasionally have to use an explicit "literal:" prefix inside such files.

Many of the bindings are driven by a HiveMind configuration; the configuration will define the available values, and contributing the configuration allows new values to be defined.

Binding Prefix Configuration
translator tapestry.form.translator.Translators
state tapestry.state.ApplicationObjects
validator tapestry.valid.Validators