2013-04-02 27 views
7

Tôi đang cố gắng tạo một servlet hiển thị biểu mẫu đơn giản với hộp kiểm, khi người dùng chọn số hộp kiểm mà anh muốn và nhấp vào "xác nhận" yêu cầu POST trong servlet của tôi kiểm tra xem các hộp nào đã được kiểm tra và truy vấn cơ sở dữ liệu dựa trên.kiểm tra hộp kiểm nào được chọn bằng JAVA (a jsp)

Tôi không chắc chắn về cách thực hiện điều này trong Java khi người dùng có thể chọn một hoặc nhiều hộp kiểm. nếu ai đó có thể giải thích điều này với một ví dụ nhỏ thì điều này thật tuyệt vời.

Tôi rất mới lập trình và sẽ cung cấp đoạn mã nếu tôi biết cách thực hiện.

Trả lời

7

Đây thực sự là câu hỏi về hành vi biểu mẫu HTML. Khi bạn chọn một vài hộp kiểm có một thuộc tính "tên" và thuộc tính "giá trị" khác và nhấn nút gửi, trình duyệt của bạn sẽ gửi yêu cầu tới máy chủ có các giá trị hộp kiểm đã chọn. Vì vậy, bạn có thể lấy tên giá trị từ thông số url này.

Ví dụ:

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

Nếu bạn kiểm tra cả hai hộp kiểm tra máy chủ của bạn sẽ nhận được các thông số này như sau:

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

Sau đó bạn có thể nhận được giá trị như thế này:

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

checkboxMalues ​​nhận tất cả các giá trị được phân tách bằng dấu phẩy.

+0

trong trường hợp của mình, tôi chỉ nhận được 1 giá trị mặc dù tôi đã chọn nhiều hộp kiểm và chuỗi truy vấn của tôi có cả hai giá trị tương tự những gì bạn nói. – amyn

3

Trong servlet của bạn, bạn sẽ sử dụng getParameter() như sau:

request.getParameter("id_of_checkbox") 

Đó là chức năng trả về null nếu hộp không được chọn. Vì vậy, bạn có thể làm điều gì đó như:

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

Bây giờ myCheckBox là đúng nếu được chọn, sai nếu không được chọn.

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> 

Chạy tệp mẫu này trên vùng chứa web của bạn để biết một số ý tưởng cơ bản về cách hoạt động của nó. Bạn cần di chuyển logic hiển thị trên trang này để nhận tham số yêu cầu vào mã servlet của bạn khi gửi biểu mẫu. Ví dụ này có thể được tìm thấy từ here. Hy vọng điều này sẽ giúp.

0

Điều này có thể là neater nếu bạn chỉ muốn đầu ra. Giả sử bạn đang sử dụng thư viện jstl, mà tôi thích vì nó làm cho trang của bạn sạch hơn:

<c:forEach var='fruitValue' items='${paramValues.fruit}'> 
    ${fruitValue} <br> 
</c:forEach> 
Các vấn đề liên quan