1

次のコードは、私の addRemove.jsp からのものです。目的は、データベースの単語テーブルに新しい単語を送信するためのフォームと、削除するためのフォームを作成することです。単語を追加するには、germanName、gender、englishName を入力する必要があります。送信すると、ユーザーは更新されたテーブルを表示できます。

その下に、ユーザーが単語を削除するために germanName 値を指定する必要がある削除フォームを作成しました。ボタンは、ユーザーを更新されたテーブルに再び誘導する必要があります。問題は、最初の送信ボタンだけがリダイレクトされることです。なお、削除は一切発生していないようです。addRemove.jsp のみを提供しますが、WordDataBean.java ファイルも参照する必要がある場合は投稿することもできます。

addRemove.jsp

<?xml version = "1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<%-- beans used in this JSP --%>
<jsp:useBean id = "word" scope = "page"
             class = "org.me.jsp.beans.WordBean" />
<jsp:useBean id = "wordData" scope = "request"
             class = "org.me.jsp.beans.WordDataBean" />

<html xmlns = "http://www.w3.org/1999/xhtml">

    <head>
        <title>Student Registration Form</title>

        <style type = "text/css">
            body {
                font-family: tahoma, helvetica, arial, sans-serif;
            }

            table, tr, td {
                font-size: .9em;
                border: 1px groove;
                padding: 2px;
                background-color: white;
            }
        </style>
    </head>

    <body>
        <jsp:setProperty name = "word" property = "*" />

        <% // start scriptlet

                    if (word.getGermanName() == null
                            || word.getGender() == null
                            || word.getEnglishName() == null) {

        %> <%-- end scriptlet to insert fixed template data --%>

        <form method = "post" action = "addRemove.jsp">
            <p>To add a new word complete the form below</p>

            <table>
                <tr>
                    <td>German name</td>

                    <td>
                        <input type = "text" name = "germanName" />
                    </td>
                </tr>

                <tr>
                    <td>Gender</td>

                    <td>
                        <input type = "text" name = "gender" />
                    </td>
                </tr>

                <tr>
                    <td>English Name</td>

                    <td>
                        <input type = "text" name = "englishName" />
                    </td>
                </tr>

                <tr>
                    <td colspan = "2">
                        <input type = "submit"
                               value = "Submit" />
                    </td>
                </tr>
            </table>
        </form>

        <% // continue scriptlet
              } // end if
              else {
                  wordData.addWord(word);

        %> <%-- end scriptlet to insert jsp:forward action --%>

        <%-- forward to display word list --%>
        <jsp:forward page = "wordListView.jsp" />

        <% // continue scriptlet

                    }  // end else

        %> <%-- end scriptlet --%>

        <% // start scriptlet

                    if (word.getGermanName() == null
                            || word.getGender() == null
                            || word.getEnglishName() == null) {

        %> <%-- end scriptlet to insert fixed template data --%>

        <form method = "post" action = "addRemove.jsp">
            <p>To remove word complete the form below</p>

            <table>
                <tr>
                    <td>German name</td>

                    <td>
                        <input type = "text" name = "germanName" />
                    </td>
                </tr>


                <tr>
                    <td colspan = "2">
                        <input type = "submit"
                               value = "Remove" />
                    </td>
                </tr>
            </table>
        </form>

        <% // continue scriptlet
              } // end if
              else {
                  wordData.removeWord(word);

        %> <%-- end scriptlet to insert jsp:forward action --%>

        <%-- forward to display word list --%>
        <jsp:forward page = "wordListView.jsp" />

        <% // continue scriptlet

                    }  // end else

        %> <%-- end scriptlet --%>


    </body>

</html>
4

1 に答える 1

0

あなたの論理には深刻な問題があります。

によると

if (word.getGermanName() == null
       || word.getGender() == null
       || word.getEnglishName() == null) {

3 つの値のいずれかが NULL の場合、追加するフォームが表示されます。そうでない場合は、 を使用して単語を追加しwordData.addWord(word);、 に転送しwordListView.jspます。したがって、これは追加でうまく機能します。

ここでも、同じ 3 つのフィールドすべてをチェックしnullて、削除する同じ表示フォーム (つまり、テキスト ボックス) に基づいています。ボタンを削除する場合、最初の条件 (追加を意味する) が true になり、3 つの入力フィールドを持つ同じフォームが表示されます。

于 2012-04-26T18:29:46.263 に答える