web-dev-qa-db-de.com

überprüfen, welche Kontrollkästchen mit Java (a jsp) ausgewählt wurden

Ich versuche, ein Servlet zu erstellen, das ein einfaches Formular mit Kontrollkästchen anzeigt. Wenn der Benutzer die Anzahl der gewünschten Kontrollkästchen auswählt und auf "Bestätigen" klickt, überprüft die Anforderung POST in meinem Servlet, welche Kontrollkästchen aktiviert wurden fragt die Datenbank ab. 

Ich bin nicht sicher, wie dies in Java geschehen soll, da der Benutzer ein oder mehrere Kontrollkästchen auswählen kann. Wenn jemand dies mit einem kleinen Beispiel erklären könnte, wäre das großartig.

Ich bin sehr neu in der Programmierung und würde einen Code-Ausschnitt bereitstellen, wenn ich wüsste, wie man das macht.

8
Rahul Kumar

Dies ist eigentlich die Frage des Verhaltens von HTML-Formularen. Wenn Sie einige Kontrollkästchen mit einem Attribut "Name" und verschiedenen Attributen "Wert" markieren und die Schaltfläche "Senden" drücken, sendet Ihr Browser eine Anfrage mit aktivierten Kontrollkästchenwerten an den Server. Sie können also Wertnamen aus diesen URL-Parametern erhalten.

Zum Beispiel:

<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>

Wenn Sie beide Kontrollkästchen aktivieren, erhält Ihr Server diese Parameter wie folgt:

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

Danach können Sie Werte wie folgt erhalten:

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

checkboxValues ​​ruft alle Werte durch Komma getrennt auf.

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>

Führen Sie dieses Beispiel-JSP in Ihrem Webcontainer aus, um einige grundlegende Informationen zur Funktionsweise zu erhalten. Sie müssen die Anzeigelogik auf dieser Seite verschieben, die bei der Formularübermittlung den Anforderungsparameter in Ihren Servlet-Code überträgt. Dieses Beispiel finden Sie unter hier . Hoffe das würde helfen.

8
Dinakar

In Ihrem Servlet würden Sie getParameter () wie folgt verwenden:

request.getParameter( "id_of_checkbox" )

Diese Funktion gibt Null zurück, wenn das Kontrollkästchen nicht markiert ist. Du könntest also so etwas tun:

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

Jetzt ist myCheckBox wahr, wenn es markiert ist.

5
noisewaterphd

Dieser könnte sauberer sein, wenn Sie nur die Ausgabe wünschen. Angenommen, Sie verwenden jstl-Bibliotheken, die ich vorziehen sollte, weil Ihre Seiten dadurch sauberer werden:

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