2013-04-02 3 views
7

Próbuję utworzyć serwlet, który wyświetla prosty formularz z polami wyboru, gdy użytkownik wybierze liczbę pól wyboru, które chce i kliknie "potwierdź" żądanie POST w moim servlecie sprawdza, które pola zostały sprawdzone i zapytuje bazę danych.sprawdzanie, które pola wyboru są zaznaczone przy użyciu JAVA (a jsp)

Nie jestem pewien, jak to zrobić w Javie, ponieważ użytkownik może wybrać jedno lub więcej pól wyboru. gdyby ktoś mógł to wyjaśnić na podstawie małego przykładu, byłoby wspaniale.

Jestem bardzo nowy w programowaniu i udostępniłbym fragment kodu, gdybym wiedział, jak to zrobić.

Odpowiedz

7

To jest właściwie pytanie o zachowanie formularza HTML. Gdy zaznaczysz kilka pól wyboru z jednym atrybutem "nazwa" i różnymi atrybutami "wartości" i naciśniesz przycisk "wyślij", twoja przeglądarka wyśle ​​żądanie do serwera z zaznaczonymi polami wyboru. Możesz więc uzyskać nazwy wartości z tych parametrów adresu URL.

Na przykład:

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

Jeśli zaznaczysz oba pola wyboru serwer otrzyma to parametry tak:

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

Po tym można uzyskać wartości tak:

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

checkboxValues ​​pobiera wszystkie wartości oddzielone przecinkami.

+0

w moim przypadku otrzymuję tylko 1 wartość, mimo że wybrałem wiele pól wyboru, a mój ciąg zapytania ma obie wartości podobne do co powiedziałeś. – amyn

3

W swojej serwletu byłoby użyć getParameter() tak:

request.getParameter("id_of_checkbox") 

Funkcja ta zwraca null, jeśli pole nie jest zaznaczone. Możesz więc zrobić coś takiego:

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

Teraz myCheckBox ma wartość true, jeśli jest zaznaczone, false, jeśli nie jest zaznaczone.

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> 

Uruchom ten przykładowy plik jsp w internetowym kontenerze, aby uzyskać podstawowe informacje na temat jego działania. Musisz przesunąć logikę wyświetlania na tej stronie, która pobiera parametr żądania do kodu serwletu podczas przesyłania formularza. Ten przykład można znaleźć pod numerem here. Mam nadzieję, że to pomoże.

0

Ten może być lepszy, jeśli chcesz tylko wydrukować. Zakładając, że korzystasz z bibliotek jstl, które wolę, ponieważ czynią twoje strony czystszymi:

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