web-dev-qa-db-ja.com

Java(jsp)を使用して、どのチェックボックスが選択されているかを確認する

ユーザーが必要なチェックボックスの数を選択して「確認」をクリックすると、チェックボックス付きのシンプルなフォームを表示するサーブレットを作成しようとしています。私のサーブレットのPOSTリクエストはボックスがチェックされ、データベースに基づいてクエリが実行されます。

Javaでユーザーが1つ以上のチェックボックスを選択する可能性があるため、これを行う方法については不明です。誰かがこれを簡単な例で説明できると素晴らしいでしょう。

私はプログラミングが初めてで、やり方を知っていればコードスニペットを提供します。

8
Rahul Kumar

これは、実際にはHTMLフォームの動作に関する質問です。 1つの「名前」属性と異なる「値」属性を持ついくつかのチェックボックスをチェックし、送信ボタンを押すと、ブラウザはチェックされたチェックボックス値でリクエストをサーバーに送信します。したがって、このURLパラメーターから値の名前を取得できます。

例えば:

<form name="input" action="html_form_action.asp" method="get">
<input type="checkbox" name="vehicle" value="Bike">I have a bike<br>
<input type="checkbox" name="vehicle" value="Car">I have a car 
<br><br>
<input type="submit" value="Submit">
</form>

両方のチェックボックスをオンにすると、サーバーは次のようなパラメーターを受け取ります。

http://example.com/your_page.jsp?vehicle=Bike&vehicle=Car 

その後、次のような値を取得できます。

String checkboxValues = request.getParameter("vehicle");

checkboxValuesは、コンマで区切られたすべての値を取得します。

7
<%@ page language="Java"%>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
        <title>JSP Multiple Checkbox</title>
    </head>
    <body>
        <form name="form1" onsubmit="checkBoxValidation()">
            <h3>Select your favorite Fruits</h3>
            <p><input type="checkbox" name="fruit" value="Mango"/>Mango</p>
            <p><input type="checkbox" name="fruit" value="Apple"/>Apple</p>
            <p><input type="checkbox" name="fruit" value="Grapes"/>Grapes</p>
            <p><input type="checkbox" name="fruit" value="Papaya"/>Papaya</p>
            <p><input type="checkbox" name="fruit" value="Lychee"/>Lychee</p>
            <p><input type="checkbox" name="fruit" value="Pineapple"/>Pineapple</p>
            <p><input type="submit" value="submit"/>
        </form>
        <%String fruits[]= request.getParameterValues("fruit");
        if(fruits != null){%>
        <h4>I likes fruit/s mostly</h4>
        <ul><%for(int i=0; i<fruits.length; i++){%>
            <li><%=fruits[i]%></li><%}%>
        </ul><%}%>
    </body>
</html>

Webコンテナでこのサンプルjspを実行して、それがどのように機能するかについての基本的なアイデアを得ます。フォーム送信時にサーブレットコードに要求パラメーターを取得するこのページの表示ロジックを移動する必要があります。この例は here から見つけることができます。これが役立つことを願っています。

8
Dinakar

サーブレットでは、次のようにgetParameter()を使用します。

request.getParameter( "id_of_checkbox" )

ボックスがチェックされていない場合、その関数はnullを返します。そのため、次のようなことができます。

boolean myCheckBox = request.getParameter( "id_of_checkbox" ) != null;

現在、myCheckBoxはチェックされている場合はtrue、チェックされていない場合はfalseです。

5
noisewaterphd

出力だけが必要な場合、これは見栄えが良いかもしれません。あなたがjstlライブラリを使用していると仮定すると、それはあなたのページをきれいにするので私が好む:

<c:forEach var='fruitValue' items='${paramValues.fruit}'> 
   ${fruitValue} <br>
</c:forEach>
0
Nomad