Как использовать целочисленное значение в визуально для итерации цикла столько раз, сколько значение?
Я хочу перебрать цикл, основанный на значении Integer, как если бы целочисленное значение было 5, то цикл будет повторяться пять раз.
Я знаю способ сделать это с помощью JSTL на странице JSP:
<c:forEach var="item" begin="1" end="${properties.value}" varStatus="loop">
//statement
</c:forEach>
выше в "конце" я получаю значение из диалога, если я передаю значение как 5, то цикл будет выполняться 5 раз.
Я упомянул ниже ссылку:
Я также провел несколько поисков в Google, и я не нахожу никаких примеров этого сценария, каждый пример основан на визуальном списке.
Я хочу сделать это, используя визуально на основе переданного целочисленного значения из диалога.
Спасибо,
Арпит Бора
2 ответа
Поделиться своим решением, которое будет полезно для других:)...
После нескольких поисков в Google и из документации Sightly/HTL я узнал, что Sightly/HTL перебирает только коллекцию.
Поэтому я использовал " HTL JavaScript Use-API" для решения моего вопроса.
Сначала в моем файле.js после получения целочисленного значения диалога я возвращаю массив, основанный на значении. Ниже приведен код моего файла "itemCount.js":
"use strict";
use(function () {
var count = properties["loopCountValue"];
return new Array(Number(count));
});
Во-вторых, в моем файле.html, используя Sightly List (data-sly-list), я перебираю массив. Ниже приведен код моего файла "testCount.html":
<sly data-sly-use.clientLib="${'/libs/granite/sightly/templates/clientlib.html'}" />
<sly data-sly-use.itemCount="itemCount.js" data-sly-unwrap />
<sly data-sly-test="${!itemCount}">
<div>
<h2>Iterate a sightly loop based on Integer value passed from dialog.</h2>
</div>
</sly>
<sly data-sly-test="${itemCount}">
<p>Test Count ${itemCount}</p>
<ul data-sly-list.contentCount="${colCount}">
<li>ITEMS : ${contentCountList.count}</li>
</ul>
</sly>
-
Спасибо,
Арпит Бора
В HTL/Sightly вы можете перебирать только коллекцию: https://github.com/Adobe-Marketing-Cloud/htl-spec/blob/master/SPECIFICATION.md#227-repeat
Обходным решением будет иметь помощника Use-API и просто создать список с желаемым размером, чтобы вы могли выполнять итерации.