2010-05-24 37 views
5

Tôi có danh sách loại A, trong đó mỗi phần tử chứa danh sách loại B. Tôi muốn tạo biểu mẫu trong đó khi người dùng chọn giá trị từ danh sách thả xuống chứa các giá trị của A, một trình đơn thả xuống khác các giá trị dựa trên danh sách của loại được chọn B. Tôi mới vào jQuery nhưng tôi biết rằng nó thuận tiện để làm điều này bằng cách sử dụng jQuery chứ không phải là jsp thuần túy. Xin vui lòng cho tôi một phác thảo sơ lược về các bước mà tôi cần phải làm theo để thực hiện điều này.Làm cách nào để tạo danh sách thả xuống động bằng cách sử dụng jQuery và jsp?

Trả lời

10

JSP chỉ là công nghệ chế độ xem phía máy chủ. Nó không cạnh tranh với jQuery. Bạn hoàn toàn có thể tiếp tục sử dụng JSP cho việc này. Nhưng tôi hiểu rằng bạn muốn kích hoạt một yêu cầu không đồng bộ bằng cách sử dụng kỹ thuật ajaxical thay vì yêu cầu đồng bộ. Đó cũng không phải là vấn đề trong JSP.

tiên, chúng ta cần phải có hai Dropdowns trong JSP:

<select id="dropdown1"> 
    <c:forEach items="#{bean.items}" var="item"> 
     <option value="#{item.value}">#{item.label}</option> 
    </c:forEach> 
</select> 
<select id="dropdown2"> 
    <option>Please select dropdown1</option> 
</select> 

Sau đó, chúng ta cần phải đính kèm một số jQuery để sự kiện change để nó lấp đầy thả xuống thứ 2 dựa trên giá trị của thả xuống 1. Thêm dòng sau vào <script> trong JSP hoặc một kịch bản bên ngoài mà được nạp thông qua <script src> trong JSP:

$(document).ready(function() { 
    $('#dropdown1').change(function() { 
     var selectedValue = $(this).val(); 
     var servletUrl = 'dropdown2options?value=' + selectedValue; 

     $.getJSON(servletUrl, function(options) { 
      var dropdown2 = $('#dropdown2'); 
      $('>option', dropdown2).remove(); // Clean old options first. 
      if (options) { 
       $.each(opts, function(key, value) { 
        dropdown2.append($('<option/>').val(key).text(value)); 
       }); 
      } else { 
       dropdown2.append($('<option/>').text("Please select dropdown1")); 
      } 
     }); 
    }); 
}); 

Trong servlet đằng sau url-pattern của /dropdown2options chỉ trả lại bản đồ các tùy chọn như JSON. Bạn có thể sử dụng Gson cho việc này.

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    String selectedValue = request.getParameter("value"); 
    Map<String, String> options = optionDAO.find(selectedValue); 
    String json = new Gson().toJson(options); 
    response.setContentType("application/json"); 
    response.setCharacterEncoding("UTF-8"); 
    response.getWriter().write(json); 
} 

Về cơ bản là tất cả.

0

Tôi đã trả lời một câu hỏi tương tự về chained selectors here ... Tôi không biết về jsp, nhưng phiên bản jQuery này sẽ cung cấp cho bạn một ý tưởng.

Các vấn đề liên quan