Component MixinsPage edited by Christophe Cordenier
Comment:
Fix broken links
Changes (5)
Full ContentComponent MixinsTapestry 5 includes a radical feature, component mixins. Component mixins are a tricky concept; it basically allows a true component to be mixed together with special limited components called mixins. The component plus its mixins are represented as just a single tag in the component template, but all the behavior of all the elements. The planned uses for this are to add validation to user input fields, or to add Ajax effects and behaviors to all sorts of components. You can think of a mixin as a kind of mashup for a component; it combines the behavior of the component with the behavior of the mixin, and bundles it all in one place. Mixins are used in two different scenarios: Instance mixins and Implementation mixins. Mixin ClassesMixin classes are stored in a mixins sub-package, below the application (or library) root package. This parallels where component and page classes are stored. Other than that, mixin classes are exactly the same as any other component class. Mixin LimitationsCurrently, mixins are allowed to do anything a component can do, including parameters, render phase methods. Mixins may not have a template. They integrate with the component strictly in terms of invoking render phase methods. Mixins may have persistent fields, but currently, this is not implemented perfectly (there is a potential for a name clash between a mixin and the component or another mixin). Use persistent fields with mixins with care ... or better yet, delegate persistence to the container using parameters. Mixins may not, themselves, have mixins. Instance MixinsAn instance mixin is a mixin applied to a specific instance of a component. This can be done in the component template with the mixins attribute of the <comp> element. This is a comma-separated list of mixin names. Alternately, when the Component annotation is used to define the component type, you may specify the mixins in two ways:
Example: @Component(parameters=. . .) @Mixins({"Autocomplete", "DefaultFromCookie"}) private TextField userId;
Change Notification Preferences
View Online
|
View Changes
|
- [CONF] Apache Tapestry > Component Mixins confluence
- [CONF] Apache Tapestry > Component Mixins confluence
- [CONF] Apache Tapestry > Component Mixins confluence