/ * java code * /
String abc=request.getParameter("name");
dbLayer cmmntdb=new dbLayer();
ArrayList<String> cmmnts=cmmntdb.getcmmnts(abc);
int size=cmmnts.size();
for(int i=0;i<size;i++)
{
String pk_cmmnt_id=cmmnts.get(0);
String name=cmmnts.get(1);
String comment=cmmnts.get(2);
String updated_at=cmmnts.get(3);
/ * java script * /
document.getElementById("cmnt_id").innerHTML="<%=pk_cmmnt_id.toString()%>";
document.getElementById("name").innerHTML="<%=name.toString()%>";
document.getElementById("upd_at").innerHTML="<%=updated_at.toString()%>";
document.getElementById("cmnt").innerHTML="<%=comment.toString()%>";
后跟html内容,包括上述id的标签。
}
for循环在这里关闭。
ID:1
姓名:rahul
Update_at:2014-07-05 22:54:11.0
评论:好
ID:
姓名:
Update_at:
评论:
ID:
姓名:
Update_at:
评论:
这里生成的html内容最大为array-list的大小,第一个html表中的标签用array-list元素填充,但是循环生成的所有其他表都是空的(不是由array-list值填充) )。如何在JSP中获取所有数组列表值?我的数组列表的大小是29.我必须从输出窗口的array-list中获取所有值。 任何一段代码都会受到赞赏和提前感谢。
答案 0 :(得分:0)
你正在做的是在所有迭代中更新示例HTML元素,所以请参考这个关于如何使用JSP创建动态表的好例子
http://www.developer.com/lang/other/article.php/724181/JSP-Creating-Dynamic-Tables.htm
由于
答案 1 :(得分:0)
你的for循环有3个问题。首先,每次迭代都会覆盖相同的字段。其次,循环内的列表由常量值索引。因此无论循环执行多少次,它总是访问相同的值。第三个循环是将i
递增1,而你在里面一次访问4个元素,这可能会导致无效数据。所以假设这是一个jsp脚本,你需要像
<% for(int i = 0; i < comments.size(); i+=4) {
%>
<label>ID: <%= comments.get(i) %></label><br/>
<label>Name: <%= comments.get(i+1) %></label><br/>
<label>Update_at: <%= comments.get(i+2) %></label><br/>
<label>Comment: <%= comments.get(i+3) %></label><br/>
<% } %>
你可以修改里面的html。同样使用这种方法,你应该确保数组大小是4的倍数,否则你将在ArrayOutOfBoundException中结束。
说过我会说这不是一个好方法。对于这些要求,您应该考虑创建一个值对象,然后使用JSTL进行迭代。我在这种情况下创建了一个名为Comment的VO
public class Comment {
private String commentId;
private String commentedBy;
private Date updateDate;
private String commentText;
public String getCommentId() {
return commentId;
}
public void setCommentId(String commentId) {
this.commentId = commentId;
}
public String getCommentedBy() {
return commentedBy;
}
public void setCommentedBy(String commentedBy) {
this.commentedBy = commentedBy;
}
public Date getUpdateDate() {
return updateDate;
}
public void setUpdateDate(Date updateDate) {
this.updateDate = updateDate;
}
public String getCommentText() {
return commentText;
}
public void setCommentText(String commentText) {
this.commentText = commentText;
}
}
然后修改数据库cla以返回注释对象列表。
List<Comment> cmmnts = cmmntdb.getcmmnts(abc);
将此列表设置为在服务器端代码(servlet)中请求request.setAttribute("comments", cmmnts)
,然后在jsp中生成html,如
<c:forEach items="${comments}" var="comment">
<label>ID: ${comment.commentId}</label><br/>
<label>Name: ${comment.commentedBy}</label><br/>
<label>Update_at: <fmt:formatDate pattern="yyyy-MM-dd" value="${comment.updateDate}" /></label><br/>
<label>Comment: ${comment.commentText}</label><br/>
</c:forEach>
希望这有帮助。