【问题标题】:How to convert int to char in JSP expression language?JSP表达式语言中如何将int转换为char?
【发布时间】:2011-06-05 01:02:51
【问题描述】:

我需要显示递增的单个字符来表示 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 第二个脚注

【问题讨论】:

    标签: jsp char int el


    【解决方案1】:

    这是不可能的。最好的办法是将其显示为 XML 实体。

    <c:forEach items="${list}" var="item" varStatus="loop">
        <sup>&#${loop.index + 97};</sup> ${item}<br />
    </c:forEach>
    

    最终会像这样

    <sup>&#97;</sup> item1<br />
    <sup>&#98;</sup> item2<br />
    <sup>&#99;</sup> item3<br />
    ...
    

    &amp;#x61; 代表a 等等。

    a item1
    b item2
    c item3
    ...

    只有当列表超过 26 项时,您才会遇到问题。

    【讨论】:

    • 谢谢这是一个很好的解决方案,但是 a是 'a' 的十六进制表示,所以这不太有效(当它到达 p 时跳过第 10 到第 16 个字母)。解决方案是使用 a等是十进制等价物。
    【解决方案2】:

    您可以使用 c:set 和 xml 实体标签将整数转换为字符。您必须使用反斜杠来转义 # 或者,id 变量将被设置为字面意义上的 &amp;#{(i.index+97)} 而不是评估 ${...} 代码

    以下示例将遍历“list”变量并为每个变量输出一个 div,其中 id 和内容从“a”开始。

    <c:forEach items="${list}" varStatus="i">
        <c:set var="id" value="&\#${(i.index+97)}" />
        <div id="div-${id}">Div ${id}</div>
    </c:forEach>
    

    假设“list”集合中有 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 时才有效。

    【讨论】:

      猜你喜欢
      • 2013-06-12
      • 1970-01-01
      • 1970-01-01
      • 2017-03-21
      • 1970-01-01
      • 2011-04-09
      • 2018-05-15
      • 2012-06-02
      • 2015-04-07
      相关资源
      最近更新 更多