2016-10-20 14 views
0

Ich habe ein Formular, das eine Dropdown-Box hat und ich verwende eine foreach-Schleife, um es mit Werten aus einer SQL-Abfrage zu füllen. Es sollte den Index der Schleife über die Eigenschaft varStatus zurückgeben. Hier ist der Code:JSP-Optionstag in foreach gibt nur den ersten Wert zurück

<form action="response.jsp"> 
    <strong>Select a Department:</strong> 
    <select name="depts"> 
     <c:forEach var="dept" items="${departments.departments}" varStatus="loop"> 
      <option value="${loop.index}">${dept}</option> 
     </c:forEach> 
    <input type="submit" value="submit" name="submit" /> 
</form> 

Die Dropdown-Liste korrekt eingesetzt wird, aber wenn einreichen gedrückt wird, nur der erste Index zurückgegeben wird, das heißt unabhängig davon, welche Option ausgewählt ist, wird nur der erste Wert zurückgegeben wird.

Der Code, der den zurückgegebenen Wert empfängt, ist

<jsp:setProperty name="department" property="index" value="${param.loop.index}"/> 

Die Set-Methode für den Index auch die Werte von drei anderen Variablen in den Klassensätzen, die aus dem Index abgeleitet werden, wenn das einen Unterschied macht.

Nicht sicher, ob ich etwas Offensichtliches verpasst habe, aber jede Hilfe wäre willkommen.

Antwort

0

Im Tag <select> ist der Name Parameter, der zugewiesen wird, der Name der Variablen, die übergeben wird, wenn das Formular übergeben wird. Dies bedeutet, dass in dem Wertfeld des <jsp:setProperty> tag sollte dieser Name Wert als Parameterwert verwendet werden, dh

<jsp:setProperty name="department" property="index" value="${param:depts}"/> 
0

wenn Sie .index verwenden wird es auf 0

Zählen beginnen, wenn Sie .count verwenden wird es anfangen zu zählen 1.

Ich sehe kein Problem in Ihrem Code in Bezug auf die Ausgabe angezeigt wird. Was ist die Ausgabe, die sowieso angezeigt wird?

+0

‚.index‘ die richtige ist als Wert zu verwenden, wird zum Indizieren in eine Anordnung verwendet, enthält die Namen der verschiedenen Abteilungen. Die Eigenschaft, die gesetzt wird, wird verwendet, um Parameter zu erhalten, die dann in SQL-Abfragen verwendet werden, um alle Angestellten in dieser Abteilung zu finden. – Musicgun47

Verwandte Themen