Tapestryは自動的にパラメータの型変換を行います。
(テンプレート内またはアノテーションでバインドされている)パラメータに値が渡されるとき、 その値の型とパラメータの型が一致しない場合に型変換が行われます。
次のCountコンポーネントを例にして考察します:
public class Count { @Parameter private int start = 1; @Parameter(required = true) private int end; @Parameter private int value; . . .
この例では、3つのパラメータ全てが int です。
しかし、このコンポーネントは次のように使われることがあるでしょう:
Merry Christmas: <t:count end="3"> Ho! </t:count>
ただの整数はpropバインディングプリフィックスによってlong型として解釈されます。つまり、上の例は long 値の3です。
Tapestryはバインドされたlong値をパラメータの型であるintに自動的に変換します。 この変換では値を失うことがあります(long型で表されている値がint型の保持できる範囲を超えている場合に)。
型変換を行うのはTypeCoercerサービスです。このサービスはtapestry-iocモジュールの一部で、 ここで述べられています。 このサービスにはとても拡張性があり、新しい型と変換を追加するのは簡単です。 TapestryModuleはTypeCoercerサービスにいくつかの型変換を追加しています。