2016-08-02 32 views
0

Ich habe ein Problem, wenn ich einen Parameter an mein Servlet übergebe. Insbesondere möchte ich den Wert des ausgewählten Elements einer Dropdown-Auswahl übergeben. Aber das Problem ist, dass wenn ich auf das ausgewählte Objekt klicke, nichts passiert (das Servlet sollte tatsächlich ein JSP aufrufen, um eine Tabelle zu visualisieren). Außerdem, wie kann ich diese jsp unter der Dropdown-Liste visualisieren? Ich will nicht ein weiteres Fenster öffnen: Wie Sie sehen, kann ich ein Tab-Menü haben (jeder Reiter repräsentiert eine Operation auf einer Datenbank, und ich möchte nicht geöffnet anderen Fenster, wenn ich die verschiedenen jsp nennen)Parameter an Servlet übergeben

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 
     } 

     } 

MY 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

Versuchen Sie, ein Leerzeichen vor onchange hinzuzufügen, wie dieser Name = "wählen" onchange –

+0

Sie senden das Formular nie an das Servlet (keine Absenden). Denken Sie, was Sie suchen, ist Ajax – Jens

+0

@NicolasFilotto in meinem Code gibt es einen Platz. Es ist ein Fehler, dass ich den Code hier eingefügt habe – blinkettaro

Antwort

1

Was Sie natürlich für Ihre Suche ist in der Lage sein, ein Seitenfragment zu modifizieren, ohne die gesamte Seite neu zu laden, die mit AJAX (Asynchronous JavaScript and XML) durchgeführt werden können. Der gemeinsame Weg ist JQuery zu verwenden, hier ist ein einfacher Code, den Sie benötigen ein wenig anpassen im Code integriert werden:

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

Dieser Code:

  1. Lasten JQuery 3.1.0 (Dieser Code wird mit JQuery 1.x funktionieren, da er sehr einfach ist)
  2. Im Skriptabschnitt fügt er einen Handler hinzu, der den Wert des select an Ihren Servlet sendet und die Antwort in das div setzt, dessen id jederzeit Ergebnis ist Die ausgewählte Option ändert sich
+0

Ok Es funktioniert! Aber dieser Aufruf öffnet ein anderes Fenster. Ich möchte auf der gleichen Seite bleiben – blinkettaro

+0

das ist komisch, ich verstehe nicht warum, sollte es nicht vielleicht ist es ein Navigator Problem? –

+0

versuchen, target = "_ self" auf der Formularebene –

Verwandte Themen