Jstlで<c:forEach>
を使用していました。さて、見た目で使いたいです。
私のユースケースは、1から10までの数値を出力することですが、Javaでfor loop
としてどのように見栄えよく反復できますか
Sightlyでは、設計によりロジックを組み込むことはできません。あなたがすべきことは、表示する必要のあるデータを含む(Sightlyの観点から)無関係な長さの準備済みリストを取得できるように、基礎となるモデルをカスタマイズすることです。その後、data-sly-list
。詳細についてはグーグルする必要がありますが、一般的にこれはSightlyでのリストの使用方法です。
<ul data-sly-list.myitem="${mymodel.myitems}" data-sly-unwrap>
<li>${myitem.foo}</li>
</ul>
編集:@nateyollesで指摘されているように、テスト条件(<li data-sly-test="${itemList.count >= 2 && itemList.count <= 6}">${item}</li>
)、これが「見苦しい方法」であるかどうかはわかりませんが。個人的には、それがあなたの人生を著しく容易にするのでない限り、しないことをお勧めします。
このAEMフォーラムの概要に目を通してください:-http://help-forums.Adobe.com/content/adobeforums/en/experience-manager-forum/Adobe- experience-manager.topic.html/forum__wtot-hi_i_need_toite.html
固定数のアイテムでループ
<ul data-sly-list="${ [1,2,3,4] }">
<li>${item}</li>
</ul>
また、ドキュメントをご覧ください:-
リンク:-https://docs.Adobe.com/docs/en/aem/6-1/develop/sightly/block-statements.html
//
リスト
data-sly-list:指定されたオブジェクトの列挙可能なプロパティごとに、Host要素のコンテンツを繰り返します。
ここに単純なループがあります:
<dl data-sly-list="${currentPage.listChildren}">
<dt>index: ${itemList.index}</dt>
<dd>value: ${item.title}</dd>
</dl>
コードサンプルは、説明のみを目的としています。
次のデフォルト変数は、リストのスコープ内で使用できます。
item:イテレーションの現在のアイテム。
itemList:次のプロパティを保持するオブジェクト:
インデックス:ゼロベースのカウンター(0..length-1)。
count:1ベースのカウンター(1..length)。
first:現在のアイテムが最初のアイテムである場合はtrue。
middle:現在のアイテムが最初のアイテムでも最後のアイテムでもない場合はtrue。
last:現在のアイテムが最後のアイテムである場合はtrue。
odd:インデックスが奇数の場合はtrue。
偶数:インデックスが偶数の場合はtrue。
//
<ul data-sly-list.child="${currentPage.listChildren}">
<li class="${ childList.odd ? 'odd' : 'even'}">${child.title}</li>
</ul>
//
<div data-sly-list.children="${resource.listChildren}">
<div data-sly-list.fields="${children.listChildren}">
<div data-sly-test=${fieldsList.last}> DO SOMETHING BEFORE LAST NODE</div>
<div data-sly-resource="${fields.path}"></div>
</div>
</div>
だからあなたのユースケースに応じてあなたは使うことができます:
<ul data-sly-list.child="${currentPage.listChildren}">
<li data-sly-test="${childList.index <= 5}">${child.title}</li>
</ul>
これがうまくいくことを願っています。
感謝とよろしく
カウトゥク・サーニ