2

BaseA を拡張し、InterfaceA を実装する具体的なクラス A があります。基本クラスまたはインターフェイスのいずれかをループ変数として使用して、 A のリストをループしたいと考えています。このようなことを試してみてください:

<t:loop source="listOfA" value="propertyOfTypeBaseA">
    ${propertyOfTypeBaseA.someField}
</t:loop>

「タイプAからBaseAへの強制が見つかりませんでした」というエラーが表示されます。タイプ InterfaceA のプロパティに値を設定すると、同じことが起こります。Object をループ変数の型として使用すると、ループを機能させることができますが、具体的なクラスまたはインターフェイスのどのフィールドにもアクセスできません。

Tapestry は、オブジェクトからそれが実装するインターフェイスに強制する方法を知っている必要があるようですが、A から BaseA/InterfaceA に強制を提供しようとしましたが、実際には強制がリストに示されていても、それでもエラーが発生しました。

何か案は?

4

1 に答える 1

3

タペストリーが管理するパッケージに含まれていない場合、インターフェイスは機能します。そして、「ベース」パッケージは、ページとコンポーネントに加えてタペストリーが管理するものであることがわかりました。Tapestry のクラスローダ ブードゥーから安全だと考えて、基本クラスとインターフェイスをそのパッケージに入れました。それらを移動した後も、インターフェイスではなく、基本クラスの強制を提供する必要がありました。

于 2009-02-24T09:24:25.830 に答える