我在页面显示所有的班级id,用EL表达式for循环表示出来,但是结果没有显示。代码如下:
<%
  String n = request.getSession().getAttribute("number").toString();
  int no = Integer.parseInt(n); //string转换为int
  int i = 0;
  for(i=0;i<no;i++)
  {
  %>
  &nbsp;&nbsp; ${banjiid[i]}<br>
<%
  }
  %>
如果把${banjiid[i]}中的i改成0或1都能显示出单个的数据并循环次数正确,可是用变量i却什么也没有显示。请高手指点一下!我的这个banjiid[]数组的长度是不知道的,先用变量no获取了数组的长度,然后在用for循环显示出来,其实我想用每个数组元素做个超连接来显示不同的页面的。如我问题中所说,如果${banjiid[i]}改为${banjiid[1]}或者${banjiid[0]}的话是能够显示出来的,并且循环的次数也是数组长度,可是换成${banjiid[i]}就不能显示了,${banjiid[i]}中的i是识别不出来的,这个i该怎么表示呢??

解决方案 »

  1.   

    单纯的没用过,不过可以JSTL+EL的方式
    <%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%><c:forEach var="i" items="${banjiid}">
    <tr>
    <td>${i}</td>
    </tr>
    </c:forEach>
      

  2.   

    楼上正解。楼主你把EL和java语言混淆写在一起了
      

  3.   

    代码应该这样写
    <%
      String n = request.getSession().getAttribute("number").toString();
      int no = Integer.parseInt(n); //string转换为int
      int i = 0;
      for(i=0;i<no;i++)
      {
      %>
      &nbsp;&nbsp; ${banjiid[<%=i%>]}<br>
    <%
      }
      %>因为你的i变量是在java 小脚本中定义的,所在使用的时候应该加上<%= %>
    个人建议在页面中还是不要写java代码,看起来比较乱。可以使用jstl 或者 struts标签。
      

  4.   

    楼上的方法我试过,el表达式中显示[<%=i%>]是非法字符啊
      

  5.   

    这样也可以:<c:forEach begin="0" end="${number - 1}" varStatus="status">
    ${banjiid[status.index]}
    </c:forEach>