请大家帮我看看下面的代码:<%
List<String> lst=new ArrayList<String>();
if(application.getAttribute("MSG")!=null)
{
lst=(List<String>)application.getAttribute("MSG");
for(String str:lst)
{
//out.println(str+"<br/>"); //已知集合中的元素为:[FACE1]、[FACE2]、[FACE3]
out.println(str.substring(str.indexOf("E")+1,str.indexOf("]"))+"<br/>"); //为什么这里仅拿到集合中第一个元素的值即:1
}
}
%>
上面是一个JSP代码片段,lst的知通过打印得知是:[FACE1]、[FACE2]、[FACE3],但每次截取后再打印就出问题了,即每次仅能拿到集合中第一个元素的值即[FACE1]的截取值:1,好郁闷啊,在这个小问题上纠结了个把小时了,请大家帮我看看哪儿错了!

解决方案 »

  1.   

    for(String str:lst)这里是不是改用foreach???
      

  2.   

    我重发一遍,顺便加个注释:<%
    List<String> lst=new ArrayList<String>(); //初始化List集合
    if(application.getAttribute("MSG")!=null) //判断传过来的application对象是否为空
    {
    lst=(List<String>)application.getAttribute("MSG"); //填充List集合
    for(String str:lst) //循环遍历List集合
    {
    //out.println(str+"<br/>"); //此处可以拿到集合中的所有元素
    out.println(str.substring(str.indexOf("E")+1,str.indexOf("]"))+"<br/>"); //关键:这里仅拿到集合中第一个元素的值,为什么?
    }
    }
    %>
    请大家帮帮我,纠结死了!
      

  3.   

    但每次截取后再打印就出问题了,即每次仅能拿到集合中第一个元素的值即[FACE1]的截取值:1,说得不太清楚,这个for循环就打印一个 1 还是 三个1?
      

  4.   

    答:longmei998 你是说application吗,里面是有值的我试过。
    答:jiangsq12345 只打印一个1,即:我截取出来的第一个值。不管输入多少还是只打印第一个。
      

  5.   

    我很想知道你打印出来的集合是什么样子的··换行符打印出来了没··如果没有·那么说明lst里面其实就一个元素,即:"[FACE1][FACE2][FACE3]"
      

  6.   

    楼主建议你先将lst的长度打印出来看看·我在线等你··
      

  7.   

    LZ:我自己做了下测试。可以全部打印出来。不只是1。你能发下你将MSG放入application的代码吗?
      

  8.   

    不好意思白天有事才到家,大家请看处理此页面的代码如下:
    <%@ page pageEncoding="GBK" contentType="text/html;charset=GBK" import="java.util.*,java.text.*"%>
    <%
    request.setCharacterEncoding("GBK");
    List<String> lst=new ArrayList<String>();
    if(application.getAttribute("MSG")!=null) //如果发现本来就有数据便还原给集合
    {
    lst=(List<String>)application.getAttribute("MSG"); //拿到原来的值存储起来
    }
    lst.add(request.getParameter("txtContent")); //加上新的值
    application.setAttribute("MSG",lst); //将集合作为全局变量保存到服务器上
    response.sendRedirect("../send.jsp"); //跳转页面显示
    %>
      

  9.   

    问题在转到jsp之前的application.setAttribute("MSG",XXX);上,不在这里,把前面的代码发来来看一下