Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: scrollbar

Type Coercion is the conversion of one type of object to a new object of a different type with similar content. Tapestry frequently must coerce objects from one type to another. A common example is the coercion of a string into an integer or a double.

See Type Coercer Service for the list of build-in coercions.

Parameter Type Coercions

{float} {
Div
Wiki Markup
style
float:right
titleRelated Articles
classaui-label
Content by Label
showLabelsfalse
showSpacefalse
titleRelated Articles
cqllabel in ("coercion","parameters") and space = currentSpace()
|background=#eee} {contentbylabel:title=Related Articles|showLabels=false|showSpace=false|space=@self|labels=coercion,parameters} {float}

Tapestry automatically handles type coercions for component parameters.

Type coercions occur when a value passed into a parameter (as bound in a template or in an annotation) does not match the type of the parameter.

For example, consider the Count component:

Code Block
java
languagejava

public class Count
{
    @Parameter
    private int start = 1;

    @Parameter(required = true)
    private int end;

    @Parameter
    private int value;
    
    . . .

 

Here, the type of all three parameters is int.

However, it is likely that the component will be used as so:

Code Block
java
languagejava

  Merry Christmas: <t:count end="3"> Ho! </t:count>

...

Tapestry will automatically coerce the bound value, a long, to the parameter's type, int. This may be a lossy coercion (if the long represents a number larger than can be stored in an int).

TypeCoercer Service

Main Article: TypeCoercer Service Type Coercion

The TypeCoercer service is responsible for this type coercion. This service is part of the tapestry-ioc module. The service is quite extensible, allowing for new types and coercions to be added easily. The TapestryModule contributes a few additional coercions into the TypeCoercer service.

Scrollbar