0

首先感谢您的阅读!所以我这周刚刚学习了 JSP 和 Servlet,今天早上我开始处理一个程序,它接受来自表单的评论,然后将它们全部显示在同一页面上!到目前为止,它运行良好,但我无法将此程序带入下一阶段。评论删除。

因此,我将评论输出的方式是将每个评论对象放在一个数组中,然后将每个评论字符串连接在一起。通过将每个评论放入一个静态变量中。

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

然后在我的 JSP 页面中我有这样的东西

<%=AllComments.getAllComments() %>

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

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

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

到目前为止,这就是我在 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();
}
4

1 回答 1

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

希望能帮助到你。

于 2012-08-10T21:57:34.310 回答