我需要显示递增的单个字符,以表示JSP中数据表中的脚注。在Java中,我通常会有一个char变量并且只是递增它,或者通过强制转换它将int转换为char(例如(char)(i + 97)以将基于0的索引转换为a-z)。我无法弄清楚如何在表达式语言中做到这一点,而不是编写我自己的JSTL函数。
有没有人知道如何在EL中将int转换为char?或者如何增加EL中的char变量?或者甚至可能是一种更好的技术来做我想在JSP / EL中做的事情?
我需要能够制作的例子:
a mydata
b myotherdata
...
a 第一个脚注
b 第二个脚注
答案 0 :(得分:6)
那是不可能的。最好的办法是将其显示为XML实体。
<c:forEach items="${list}" var="item" varStatus="loop">
<sup>&#${loop.index + 97};</sup> ${item}<br />
</c:forEach>
它最终会像
一样<sup>a</sup> item1<br />
<sup>b</sup> item2<br />
<sup>c</sup> item3<br />
...
a
代表a
,依此类推。
a item1
b item2
c item3
...
当列表超过26个项目时,您只会遇到问题。
答案 1 :(得分:1)
您可以使用 c:set 和xml实体标记将整数转换为字符。您必须使用反斜杠才能转义#或者,id变量将设置为字面&#{(i.index+97)}
而不是评估${...}
代码
以下示例将遍历&#34;列表&#34;变量并为每个变量输出一个div,其id和内容从&#34; a&#34;开始。
<c:forEach items="${list}" varStatus="i">
<c:set var="id" value="&\#${(i.index+97)}" />
<div id="div-${id}">Div ${id}</div>
</c:forEach>
假设&#34; list&#34;中有5个元素,则会输出以下内容:集合。
<div id="div-a">Div a</div>
<div id="div-b">Div b</div>
<div id="div-c">Div c</div>
<div id="div-d">Div d</div>
<div id="div-e">Div e</div>
如其他答案所述,只有当您的清单大小低于27时才会有效。