jstl使用foreach索引访问第二个数组值

时间:2013-05-17 19:23:46

标签: jstl

我有两个数组(用逗号分隔的字符串),我在其中一个变量上做了一个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>

我需要访问name2值,在foreach名称中,是否可以不进行其他操作?

2 个答案:

答案 0 :(得分:3)

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

${name2list[i.index]}

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

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

<c:set var="name2list" value="${fn:split(name2, ',')}"/>

答案 1 :(得分: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数组中获取第二个值。我相信这可以完成任务。