我只收到一条评论,并且在发布新评论时会更新,但我想看到发布的所有评论,我错了?
评论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);
}
%>
答案 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>
尽管我可以看到我的代码在您的示例中不起作用,但我的问题是,为什么列表中的列表只是为了列出注释?