2

我有两个数组(用逗号分隔的字符串),我在其中一个变量上创建了一个 foreach 循环,我需要能够使用 foreach 索引访问另一个字符串,例如

<c:set var="name" value="Zara,nuha,roshy" />
<c:set var="name2" value="Zara2,nuha2,roshy2" />
<c:forEach items="${name}" delims="," var="name" varstatus="i">
       <c:out value="${name}"/><br>
    </c:forEach>

我需要以名称 foreach 访问 name2 值,是否可以不做另一个 foeach?

4

2 回答 2

3

您正在使用的 varstatus 变量包含一个您可以使用的值“索引”。但是,你不能对这样的字符串进行操作(至少我不知道)。首先,您需要将 name2 转换为适当的数组或列表。然后你可以在 for 循环中访问它:

${name2list[i.index]}

现在,如何将其转换为数组?拆分功能怎么样?

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

<c:set var="name2list" value="${fn:split(name2, ',')}"/>
于 2013-05-28T15:08:26.400 回答
1

与之前的一些评论相反,这是可以做到的。

请参阅以下基于问题的示例:

<c:set var="names" value="Zara,nuha,roshy" />
<c:set var="names2" value="Zara2,nuha2,roshy2" />
<c:forEach items="${names.split(',')}" varStatus="i" var="name" >
    ${name} : ${names2.split(',')[i.index]}<br/>
</c:forEach>

本质上,我们使用带有表达式语言的字符串拆分函数从列表逗号分隔值中获取字符串数组。在循环中,我们使用 varStatus 索引从 names2 数组中获取第二个值。我相信这可以完成任务。

于 2013-05-28T15:57:10.617 回答