2010-05-24 3 views
5

У меня есть список типов A, в котором каждый элемент содержит другой список типа B. Я хочу создать форму, в которой, когда пользователь выбирает значение из выпадающего списка, содержащего значения A, другое падение вниз для заполнения значения, основанные на списке выбранного элемента типа B. Я новичок в jQuery, но я знаю, что это удобно, используя jQuery, а не чистый jsp. Пожалуйста, дайте мне приблизительный план шагов, которые мне нужно выполнить, чтобы сделать это.Как создать динамические выпадающие списки с помощью jQuery и jsp?

ответ

10

JSP - это только технология просмотра на стороне сервера. Он не конкурирует с jQuery. Вы можете отлично использовать JSP для этого. Но я понимаю, что вы хотите запустить асинхронный запрос, используя аяксиальные методы, а не синхронный запрос. Это не проблема в JSP.

Во-первых, мы должны иметь два выпадающие в 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> 

Затем нам нужно приложить некоторые JQuery к change событию так, что он заполняет 2-ю выпадающее меню на основе значения 1-го выпадающего списка. Добавьте следующий к <script> в JSP или внешний скрипт, который загружается через <script src> в 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")); 
      } 
     }); 
    }); 
}); 

В сервлет за url-pattern из /dropdown2options просто возвращает карту вариантов, как JSON. Вы можете использовать для этого Gson.

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); 
} 

Это в основном все.

0

Я ответил на аналогичный вопрос о chained selectors here ... Я не знаю о jsp, но эта версия jQuery должна дать вам представление.

Смежные вопросы