java编码在jsp中获取多个注释

时间:2012-04-19 08:11:05

标签: java jsp servlets arraylist

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

评论servlet

  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);

result.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); 
   }
   %>

2 个答案:

答案 0 :(得分: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"], ...]

答案 1 :(得分: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>

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