当前位置: 首页 > 知识库问答 >
问题:

在foreach项中使用var的JSTL

吴刚毅
2023-03-14

我有一个c:forEach,它从20迭代到24

<c:forEach var="i" begin="20" end="24">

在里面,另一个c:为每个

<c:forEach items="${'${i}'}" var="entry">

因为我从控制器传递了多个列表,如下所示:

for(Team t : teams) {
String name = team.getTeamId() + "";
model.addObject(name, tableData);
}

其中团队是一个对象,模型是一个ModelAndView。控制器似乎工作得很好,在我的JSP中,我已经使用了其中的一些数据。但我无法正确获取项目。。当I var为20时,我需要获得项目=“20”,我真的不知道再尝试什么。有一些团队的id从20到24,我已经检查过了,错误显示要么是NumberFormatExceptions,要么是不知道如何迭代提供的项目。。

提前感谢!

共有2个答案

曾山
2023-03-14

由于您要将数字传递给JSTL foreach,因此必须使用JSTL格式来格式化数字。因为JSTL不知道它是数字还是变量。

在JSP上的taglib下方添加

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

现在用格式将数字传递给forach:

<c:forEach items="<fmt:formatNumber value="${i}"/>" var="entry">

希望这对你有帮助。

黄逸清
2023-03-14

如果您只想在第二个forEach中获得items=“20”,可以尝试以下操作:

<c:forEach var="i" begin="20" end="24">
<c:set var="tmp" value="${i}">
<c:forEach items="${tmp}" var="entry">
    ...
</c:forEach>
</c:forEach>

但似乎“项”必须是一个可迭代的数据

 类似资料:
  • 主要内容:Java11 Lambda中使用var的示例,Java11 Lambda中使用var的限制Java 11 允许在 lambda 表达式中使用 var,它可用于将修饰符应用于局部变量。 Java11 Lambda中使用var的示例 ApiTester.java 输出结果为 Java11 Lambda中使用var的限制 在 lambda 表达式中使用 var 有一定的限制。 var 参数不能与其他参数混合使用。以下将抛出编译错误。 var 参数不能与其他类型参数混合使用。以下将抛出编译错误

  • 问题内容: 在循环中使用/ 是否有任何问题?我试图遍历文件数组和每个文件的内容。 这段代码确实有效,但是这可能会出问题吗?我让某人告诉我,您不应该在这样的高阶函数中使用/ ,所以我只是想问一下这是否有问题。 问题答案: 确保代码确实有效,但是我很确定它不会执行您期望的功能。它只会触发多个异步调用,但此后函数会立即返回。 顺序阅读 如果要顺序读取文件, 则不能使用。只需使用现代循环即可,该循环将按预

  • 问题内容: 在研究另一个问题时,我很惊讶地发现以下Java代码可以正确编译: 在我的JDK6中,var被初始化为1。 上面的代码是否具有定义明确的语义,或者其行为未定义?如果您说它定义明确,请引用JLS的相关部分。 问题答案: 在8.3.2.3 节的示例8.3.2.3-1中提到了它。在示例文本中 标题说: … i的变量初始值设定项使用peek类方法访问变量j的值,然后j被其变量初始值设定项初始化,

  • 我正在使用Ansile 2.0.1.0和Docker。 我想连接到容器以在Ansbile中创建一个Docker容器。 也是变量中要管理的容器的名称。 但是当执行时,我得到错误消息。 我猜是因为它使用了var来宿主。 我如何修复错误?

  • 问题内容: 我在Java 8 foreach流中尝试循环移动下一个项目时遇到问题。我无法将命令设置为,但只能工作,但是在这种情况下,您将退出循环。我需要继续循环下一个项目。我怎样才能做到这一点? 示例(不起作用): 示例(工作): 问题答案: 使用就可以了。这不会阻止完整循环的完成。它将仅停止执行循环的当前迭代。 试试下面的小程序: 输出: 一个 ç 请注意,如何为迭代执行,但是可以在后续迭代中打

  • 我使用的php foreach语句如下所示: