2016-08-02 3 views
0

У меня есть проблема, когда я передаю параметр своему сервлету. В частности, я хочу передать значение выбранного элемента выпадающего списка. Но проблема в том, что когда я нажимаю выбранный элемент, это ничего не происходит (сервлет, по сути, должен вызывать jsp для визуализации таблицы). Кроме того, как я могу визуализировать этот jsp под выпадающим меню? Я не хочу открыть еще одно окна: как вы можете увидеть у меня есть меню вкладок (каждая вкладка представляет собой операцию по базе данных, и я не хочу открывать другие окон, когда я называю различные JSP)Передача параметра на сервлет

protected void doPost(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 

     response.setContentType("text/html"); 
     String i = request.getParameter("choose"); 
     PrintWriter out = response.getWriter(); 
     if(i.equals("products")){ 
     ArrayList<Products> list = new ArrayList<Products>(); 
     list = bDBean.listProduct(); 

     request.setAttribute("list", list); 

     String arg = "/" + this.getServletName() + ".jsp"; 
     RequestDispatcher dispatcher = this.getServletContext().getRequestDispatcher(arg); 
     dispatcher.forward(request, response); 
     } 
     if(i.equals("login")){ 
     // something 
     } 

     } 

МОЙ JSP

<script type="text/javascript"> 
function passingParameter(form1){ 
var choose = document.getElementById("choose"); 

var selectedValue =choose.options[choose.selectedIndex].value; 
} 
</script> 

<div class="tab-content"> 

<div id="operation 1" class="tab-pane fade in active"> 

    <h3>OPERATION 1</h3> 


    <div class="form-group"> 
    <label for="scelta">Select the table you want to see:</label> 

    <form name=form1 action="NewServlet" method="post"> 
    <select id="choose" class="form-control" name="choose"onchange="passingParameter(this.form)"> 
     <option value="products">Products</option> 
     <option value="login">Login</option> 
    </select> 
    </form> 
    </div> 
    </div> 
    <div id="add" class="tab-pane fade"> 
    <h3>OPERATION 2</h3> 

    </div> 
    <div id="OPERATION 2" class="tab-pane fade"> 
     <h3>OPERATION 2</h3> 
    <p>Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam.</p> 
    </div> 
    <div id="OPERATION 3" class="tab-pane fade"> 
     <h3>OPERATION 3</h3> 
    <p>Eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo.</p> 
    </div> 
    </div> 
+0

Попытайтесь добавить пространство перед поменой, как это имя = «выбрать» onchange –

+0

Вы никогда не отправляете форму на сервлет (без кнопки отправки). Подумайте, что вы ищете, это ajax – Jens

+0

@NicolasFilotto в моем коде есть пробел. Это ошибка, которую я ввел здесь код – blinkettaro

ответ

1

Что вы, очевидно, ищете, чтобы иметь возможность изменить фрагмент страницы без перезагрузки всей страницы, которая может быть сделана с AJAX (Asynchronous JavaScript и XML). Обычный способ заключается в использовании JQuery, вот простой код, который вам нужно будет адаптировать немного, чтобы быть интегрированы в ваш код:

<!DOCTYPE html> 
<html> 
<head> 
<script src="https://code.jquery.com/jquery-3.1.0.min.js"></script> 
</head> 
<body> 
    <form> 
    <select id="choose" class="form-control" name="choose"> 
     <option value="products">Products</option> 
     <option value="login">Login</option> 
    </select> 
    </form> 
<div id="result"></div> 
<script> 
$("#choose").change(function(event) { 
    $.post("NewServlet", "choose=" + $("#choose").val(), function(data) { 
     $("#result").empty().append(data); 
    }); 
}); 
</script> 
</body> 
</html> 

Этот код:

  1. Грузы JQuery 3.1.0 (этот код будет работать с JQuery 1.x, так как он очень простой)
  2. В разделе сценария добавлен обработчик, который отправит на ваш сервлет значение select и поместит ответ в div, чей идентификатор является результатом в любое время выбранная опция
+0

Ok Это работает! Но этот вызов открывает другое окно. Я хочу остаться на той же странице – blinkettaro

+0

, что странно Я не понимаю, почему, это не должно быть, это проблема с навигатором? –

+0

попробуйте добавить target = "_ self" на уровне формы –

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