【问题标题】:Iterate over param JSTL using foreach使用 foreach 迭代参数 JSTL
【发布时间】:2014-11-17 13:39:07
【问题描述】:

我有键是整数的请求参数列表,例如

0=hello&1=by&2=sss .......

我想使用foreach 遍历这个参数列表:

<c:forEach var="i" begin="0" end="${fn:length(param)-1}" >
  <c:out value="${param['i']}"/>
</c:forEach>

【问题讨论】:

    标签: loops jstl http-request-parameters


    【解决方案1】:

    好的,看看这个技巧是否有效:

    <c:forEach var="i" begin="0" end="${fn:length(param)-1}" >
        <c:set var="iString" value="t${i}"/>
        <c:out value="${param[fn:substringAfter(1, iString, fn:length(iString))]}"/>
    </c:forEach>
    

    1) c:set 语句将 i 从数字转换为“t0, t1, t2 ..”形式的字符串

    2) 现在去掉第一个字符,substringAfter 返回一个只包含数字的字符串。


    非常接近。我相信您需要做的就是删除撇号:

    发件人:

    ${param['i']}
    

    收件人:

    ${param[i]}
    

    使用撇号,您正在寻找一个名为“i”的参数,而不是一个名为“0”的参数。

    【讨论】:

    • 是的,我试过了,但我有一个例外:当我搜索时无法将 Integer 转换为 String 我发现必须像 param["parametre_name"]
    • 感谢这个想法,但 fn:substringAfter(1, iString) 不起作用我用 fn:substring(iString,1,fn:length(iString)) 再次代替它