0

我只收到一条评论,并且在发布新评论时它会更新,但我想查看发布的所有评论,我错在哪里?

评论小服务程序

  String comment=request.getParameter("myTextarea");  //i stored myTextarea in string  comment            
   ArrayList<String> al1 = new ArrayList<String>();
    ArrayList emp_list =new ArrayList();                                     
     al1.add(comment);                     
      emp_list.add(al1);                                         
      request.setAttribute("empList",emp_list);        
      String nextJSP = "/result.jsp";//goes to result.jsp
     RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(nextJSP);
    dispatcher.forward(request,response);

结果.jsp

    <%
     try{
      int i=0;
      if(request.getAttribute("empList")!=null)
       {
       ArrayList al3 = (ArrayList)request.getAttribute("empList");
        Iterator itr = al3.iterator();
        while(itr.hasNext()){
        ArrayList empList = (ArrayList)itr.next();
         String newcomment="";
          try{
          newcomment=(String)empList.get(i++);
          }
         catch(Exception e){
          }   
        try{
      out.println(newcomment);// i am getting only one comment here
         }
     catch(Exception e){
     }   
     }
    }
  }//end of try block
    catch(Exception e){
   out.println(e); 
   }
   %>
4

2 回答 2

2

首先,在您的 java 中,您似乎只在 中添加了一条评论empList,这就是为什么您只看到一条评论的原因。

假设网址看起来像www.some.url/resource?myTextarea=somestring......

String comment=request.getParameter("myTextarea"); 
//so now comment equals to "somestring"

ArrayList<String> al1 = new ArrayList<String>();
ArrayList emp_list =new ArrayList();                                     
al1.add(comment);
//now al1 equals ["somestring"]                     

emp_list.add(al1);
//now emp_list equals [["somestring"]]

看,您在 emp_list 中只有一条评论,因此您将在您的 jsp 中获得一条评论。

再者,你用jsp写的代码很奇怪,你为什么有 newcomment=(String)empList.get(i++);?我很确定你很快就会用这段代码得到一个 OutOfIndexException ,除非你有一些特殊的数据结构来存储评论。现在看起来你的数据结构有一个列表列表,列表中的每个列表都包含一个这样的评论? [["comment1"], ["comment2"], ["comment3"], ...]

于 2012-04-19T08:41:21.737 回答
0

你不使用jstl是错误的:)

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

<c:forEach items = "${empList}" var = "comment">
  <c:out value = "${comment}"/>
</c:forEach>

尽管我可以看到我的代码在您的示例中不起作用,但我的问题是,为什么您在列表中有一个列表只是为了列出评论?

于 2012-04-19T08:19:41.833 回答