java - 在JSP EL中生成序数字符

标签 java jsp

采取以下JSP片段:

<c:forEach items="${items}" varStatus="status">
   ${'A' + status.index}
</c:forEach>


意图应该明确,我正在尝试为循环中的每次迭代生成基于“ A”的字符索引。在Java中,这很好(例如'A' + 1 == 'B'),但是Tomcat 6 barfs上带有java.lang.NumberFormatException: For input string: "A"的JSP EL。似乎它不能将字符作为序数值处理。

当前的解决方案将其分解为一个自定义taglib,但这对于如此琐碎的事情来说是荒谬的。

谁能说服EL进行此计算?

最佳答案

首先创建字母:

<c:set var="alphabet" value="ABCDEFGHIJKLMNOPQRSTUVWXYZ"/>


然后,您可以使用fn:substring访问字母。

${fn:substring(alphabet, status.index, status.index + 1)}


您的示例将变为:

<c:forEach items="${items}" varStatus="status">
    <c:set var="indexOfLetter" value="${fn:indexOf('A', alphabet) + status.index}"/>
    ${fn:substring(alphabet, indexOfLetter, indexOfLetter + status.index + 1}
</c:forEach>


您可能需要进行一些边缘情况检查,但这应该可以工作。

关于java - 在JSP EL中生成序数字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2312656/

相关文章:

java - java/scala中基于输入参数的序列号生成器

java - 是Java -XX :+UseParNewGC garbage collection option still buggy?

java jackson json 处理器 - 在 RestTemplate 中使用 - EnumSet 的处理

html - JSP中的特殊字符表示问题

java - 如何从 servlet 中的项目文件夹提供输入文件

eclipse - 我应该把 index.jsp 放在哪里使用 tomcat?

java - 垂直排列的按钮和 Swing 中的选项卡

java - 显示其他表中一对一映射字段的错误

java - 如何将下拉列表中的值设置为 NULL?

java - 试图在 ArrayList<Float> 中找到最大元素,在 Java 中