访问JSP页面的数组引用变量

时间:2012-08-10 21:54:28

标签: java arrays jsp servlets

首先感谢您的阅读!所以我本周刚刚学习了JSP和Servlets,今天早上我开始处理一个接受表单注释的程序,然后将它们全部显示在同一页面上!到目前为止它工作得很好,但我很难将这个程序带到下一个阶段。评论删除。

因此,我得到注释的方式是将每个注释对象放在一个数组中,然后将每个注释String连接在一起。将每个注释放入一个静态变量。

AllComments.addComment(comments[count].toString());

然后在我的JSP页面中我有类似的东西

<%=AllComments.getAllComments() %>

所以效果很好。一个新的评论出现了,它被连接起来,然后所有的评论都打印成一个格式化的字符串。

这个问题甚至被认为是有效的,通过将评论全部放在一起,我再也不能对它们做任何事了。因此,这使我无法完成下一步,即在每条评论旁边都有一个链接,并附带删除选项。

所以为了做到这一点,我认为我需要在JSP页面上将注释显示为循环,并将每个注释显示为单独的String。然后,如果有人点击删除,我可以从数组中删除该注释!

到目前为止,这是我在JSP页面中尝试的内容

<%
    for (int i = 0; i < UserBean.getCommentCount(); i++)
    {
        %>
            <%=comments[i].toString() %>
        <%
    }
%>

然而,这不起作用b / c注释引用变量的范围仅在受保护的doPut方法及其包中。那么我该怎么做才能让我的评论一次在循环中输出一条评论!您可以在下面查看我的整个servlet类。感谢您抽出宝贵时间阅读本文。

if (!request.getParameter("fullName").equals("") && !request.getParameter("comment").equals(""))
{
    UserBean[] comments = new UserBean[10];
    int count = UserBean.getCommentCount();

    comments[count] = new UserBean();
    comments[count].setFullName(request.getParameter("fullName"));
    comments[count].setDate(String.valueOf(new Date()));
    comments[count].setComment(request.getParameter("comment"));
    AllComments.addComment(comments[count].toString());

    UserBean.incrementCommentCount();
}

1 个答案:

答案 0 :(得分:0)

您可以为请求或会话属性设置注释,具体取决于您是否重定向到JSP。 (如果重定向然后会话,原因请求属性将为空)。然后从会话或请求中获取对JSP页面的评论。

填写评论后的内部doPut方法

request.setAttribute("comments",comments);
request.getSession().setAttribute("comments",comments);

在JSP页面上,您需要添加到顶部

<% UserBean[] comments = (UserBean[]) request.getAttribute("comments"); %>
<% UserBean[] comments = (UserBean[]) session.getAttribute("comments"); %>

希望它有所帮助。