0

タペストリーループのドキュメントは、次の例を示しています

<t:loop source="pageNames" value="pageName">
    <td class="${tabClass}">
        <t:pagelink page="pageName">${pageName}</t:pagelink>
    </td>
</t:loop>

ここで、pageName変数はコンポーネントから取得されます。

@Property
private String _pageName;

私はそのような財産を使いません。コンポーネントから宣言を削除すると、Tapestryが悲しくなり、次のような例外がスローされます。

'pageName'をコンポーネントパラメータバインディングに変換できませんでした。クラス...には、「pageName」という名前のプロパティが含まれていません(プロパティ式「pageName」内)。利用可能なプロパティ:..。

ループ値のプロパティを宣言せずにループタグを使用するにはどうすればよいですか?

4

2 に答える 2

2

指定する必要はないと思いますt:value。省略してください。場合によっては、使用したいだけですがt:index、それはまったく問題ありません。

コメントに基づいて編集:

はい、コンポーネントクラスでプロパティを宣言する方法はありません。コンポーネントクラス内の現在の反復値で何もしないと、少しエレガントに見えないことがあります。それは本当です。@Propertyこのような場合、「未使用」のコンパイラ警告を回避するために、アノテーションの代わりにゲッターとセッターを使用する傾向があります。

于 2010-09-16T15:55:55.440 に答える
2

テンプレートの一時変数の前にvarプレフィックスを付けることができます。したがって、あなたの場合、あなたはただ言うでしょうvalue="var:pagename"。これは、pagenameが文字列や整数などのプリミティブであり、次の構文を使用してループ内のどこからでもその値にアクセスできる場合に正常に機能します${var:pagename}。ただし、などのプロパティにアクセスしようとすると失敗しますpagename.name

使用可能なバインディング式のリストをここで確認して、値を取得できる他の場所(メッセージカタログなど)を確認してください。

または、プロパティのページクラスでいつでも使用@SuppressWarnings("unused")して、コンパイラの警告を抑制することができます。

乾杯。

于 2010-11-12T10:34:22.220 に答える