6

ユーザーに 2 つの質問が表示され、真または偽で答える単純なサーブレットを作成しました。私の問題は、ユーザーが選択した回答を取得することにあります。

コード:

            out.println("<FORM ACTION=\"Game\" METHOD = \"POST\">" +

        "<b>Question 1: Are you over the age of 25? </b><br> <br>" +

        "<input type = \"radio\" name = \"Q1rad1\" onclick = \"getAnswer('a')\"> True " +
        "<input type = \"radio\" name = \"Q1rad2\" onclick = \"getAnswer('b')\"> False<br>" +

        "<br><br><b>Question 2: Are you from earth?</b><br> <br>" +

        "<input type = \"radio\" name = \"Q2rad1\" onclick = \"getAnswer('a')\"> True " +
        "<input type = \"radio\" name = \"Q2rad2\" onclick = \"getAnswer('b')\"> False<br>" +

        out.println("<Center><INPUT  TYPE=\"SUBMIT\"></Center>");


        );

各質問には、True または False で回答するための 2 つのラジオ ボタン、Q1rad1 および Q2rad2 があります。送信ボタンが押されたときに各ユーザーが選択した値を知るにはどうすればよいですか。

Javascript を使用した方が効率的であることは理解していますが、この問題を解決するには、サーブレットを使用する必要があります。

4

4 に答える 4

15

ラジオボタンが選択されたときに取得する値を定義する必要があります

の設定は、チェックされた場合に送信されるものを定義します。

name設定は、フィールドが属するラジオ ボタンのグループを示します。1 つのボタンを選択すると、同じグループ内の他のすべてのボタンが選択解除されます。

<input type = "radio" name = "Q2" onclick = \"getAnswer('b') value="b">
<input type = "radio" name = "Q2" onclick = \"getAnswer('a') value="a">

リクエストを受け取るサーブレットには、次のようなものがあります

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // get the value of the button group 
    String q2 = request.getParameter("Q2");
    // compare selected value 
    if ("a".equals(q2)) {
       ...
    }
    ...

}
于 2012-04-06T18:47:40.440 に答える
6

ラジオ ボタンの名前が正しくありません。同じ質問の各ラジオ オプションには、同じ name 属性が必要です。valueまた、それぞれに属性が必要です<input type="radio">onclickハンドラーがまったく必要かどうかはわかりません。</form>また、より近いタグが必要です。フォームは次のようになります。

 out.println("<form action=\"Game\" method=\"POST\">" +

    "<b>Question 1: Are you over the age of 25? </b><br> <br>" +

    "<input type = \"radio\" name = \"Q1\" value=\"True\"> True " +
    "<input type = \"radio\" name = \"Q1\" value=\"False\"> False<br>" +

    "<br><br><b>Question 2: Are you from earth?</b><br> <br>" +

    "<input type = \"radio\" name = \"Q2\" value=\"True\"> True " +
    "<input type = \"radio\" name = \"Q2\" value=\"False\"> False<br>" +

    "<Center><INPUT  TYPE=\"SUBMIT\"></Center>" +

    "</form>"
    );

次にdoPost()、フォームの送信を処理するサーブレットのメソッドで、 を使用して値にアクセスできますrequest.getParameter()。このようなもの:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String q1 = request.getParameter("Q1");
    String q2 = request.getParameter("Q2");
    // more processing code...
}
于 2012-04-06T18:40:30.793 に答える
3

同じ質問のラジオに同じ名前を付け、異なる値を設定します。このページを見てください。

次に、リクエストで、ラジオ グループの名前と選択された値を含むパラメータを取得します。サーブレットを送信した後、投稿を受信すると、次を使用できます。

String value = request.getParameter("radioName");
于 2012-04-06T18:38:53.080 に答える
1

HTMLコードの場合、以下の行で十分です

protected void doPost(HttpServletRequest req,HttpServletResponse res){
String q1 = request.getParameter("Q1");
String q2 = request.getParameter("Q2");`
}

たとえば、HTML コードを検討します。

Q1を押すと

"真実"

サーブレットの「入力」になります。

于 2014-08-19T11:23:20.120 に答える