0

初めまして、読んでいただきありがとうございます!ということで、今週は JSP とサーブレットについて学び、今朝はフォームからコメントを受け取り、それらをすべて同じページに表示するプログラムに取り組み始めました。これまでのところうまく機能していますが、このプログラムを次の段階に進めるのに苦労しています. コメント削除。

したがって、コメントを出力する方法は、各コメント オブジェクトを配列に入れ、各コメント文字列を連結することです。各コメントを静的変数に入れる。

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

そして、私のJSPページには次のようなものがあります

<%=AllComments.getAllComments() %>

だからそれはうまくいきます。新しいコメントが入って連結され、すべてのコメントが 1 つの書式設定された文字列として出力されます。

これに関する問題は、コメントをすべてまとめることで、それが機能すると考えられていても、コメントに対して二度と何もできないことです。したがって、これにより、各コメントの横に削除オプション付きのリンクを作成するという次のステップを実行できなくなります。

そのためには、コメントを JSP ページにループとして表示し、各コメントを個別の文字列として表示する必要があると考えています。そして、誰かが削除をクリックすると、配列からそのコメントを削除できます!

これまでのところ、これは私がJSPページで試していたことです

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

ただし、これは機能しません。コメント参照変数のスコープは、保護された doPut メソッドとそのパッケージ内のみです。では、一度に 1 つのコメントをループ内に出力するにはどうすればよいでしょうか。以下のサーブレット クラス全体を表示できます。これを読んでいただきありがとうございます。

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 に答える