Ваше первоначальное требование ..., X, Y, Z, AA, BB, CC, ...
было простым:
<c:forEach items="${vo.dataFormat.columns}" var="column" varStatus="loop">
<div class="columnLabel">
<c:forEach begin="1" end="${loop.index / 26 + 1}">
&#${loop.index % 26 + 65};
</c:forEach>
</div>
</c:forEach>
Однако ваше отредактированное требование ..., X, Y, Z, AA, AB, AC, ...
сложнее.Это работает, пока только ZZ:
<c:forEach items="${vo.dataFormat.columns}" var="column" varStatus="loop">
<div class="columnLabel">
<c:set var="i" value="${fn:substringBefore(loop.index / 26, '.')}" />
<c:if test="${i > 0}">
&#${i + 64};
</c:if>
&#${loop.index % 26 + 65};
</div>
</c:forEach>
Поскольку в JSTL нет цикла while
, переход с ZZ на AAA и т. Д. С чистым кодом невозможен.