# dynamisches & voneinander abhängiges füllen von Dropdown



## Lemy (9. Dez 2003)

Tach allerseits ...

Ich bin noch recht unerfahren in Webprogrammierung und nun hab folgendes Problem:

Ich will eine über eine suchMaske.jsp eine suchmaske aufbauen.
Diese soll über 2 dropdown menus die suche einschränken.

das erste dropdopwn menu soll mit diversen "options" gefüllt sein, ion diesem Fall mit Tabellennamen von Tabellen die in einer Datenbank existieren (Datenbeschaffung über ein Servlet).

Soweit hab ich das hinbekommen, aber nun das Problem: 

Die "options" im zweiten Dropdownmenu sollen erst gefüllt werden (und auch erst dann vom Server geladen werden), wenn im ersten Dropdownmenu die gewünschte Tabelle ausgesucht wurde. Diese Auswahl bestimmt dann erst, welche Feldernamen im zweiten Dropdown rein sollen.

Da ich noch nicht den vollen Durchblick über die ganzen Möglichkeiten in Zusammenhang von jsp, Servlet und Javascript habe, habe ich prinzipiell folgende Lösung probiert:

Das ändern des ersten Dropdownmenüs ("onchanged") ruft eine JavaScript Funktion auf, die dann das zweite Dropdown füllen soll und auch die nötigen Feldernamen über ein Servlet beschaffen soll.

Und da liegt der Hase im Pfeffer begraben ...

scheinbar kann ich aus Javascript nicht ohne weiteres oder sogar übberhaupt nicht auf Servlet zurückgreifen ... das Script kannt das Servlet nicht ...

Hat jemand eine helfende Idee ?? oder sogar neh besseren Lösungsweg als über JS nen Servlet aufzurufen ...

Allerdings ein Lösung über ein Applet steht leider nicht zur Option.

Herzlichen Dank ...

Lemy


----------



## AlArenal (9. Dez 2003)

Du setzt in das erste Dropdown einen onChange, der nen Reload der Seite durchführt, aber mit Übermittlung der ausgewählten Option über die URL. Am Anfang des JSP machst du ne Abfrage ob der paramter übergeben (aso Option ausgewählt) wurde oder nicht und lässt entsprechend dem Ergebnis die Optionen fürs zweite Dropdown mit nichts oder eben dynamischen Werten vorbelegen.


----------



## Lemy (10. Dez 2003)

Also im moment sieht der Code etwas wüst aus ....


```
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<%@ page 
language="java"
contentType="text/html; charset=ISO-8859-1"
import="java.util.*"
%>
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<META name="GENERATOR" content="IBM WebSphere Studio">
<TITLE>Suchen</TITLE>
</HEAD>

<BODY>

<%-- -------------------------------------------------------------- --%>
	<%
		String[] tabellen = Tabellenliste.getListe(); // provisorischer Servlet aufruf ...
	    
		String tab1wert = request.getParameter("such1tab");
		String feld1wert = request.getParameter("such1feld");
		String begriff1wert = request.getParameter("such1begriff");
	
	%>
<%-- -------------------------------------------------------------- --%>
	<form name="suchform" action="suchen.jsp" method="get">
<%-- -------------------------------------------------------------- --%>
		Suchtabelle 1:

			<select name="such1tab" size="1"
				onchange="submit()"><%
				for(int i=0; i<tabellen.length; i++)
				{ 
					if (tabellen[i] == tab1wert) { %>
						<option value="<%= tabellen[i] %>" selected><%= tabellen[i] %></option> <%
					}
					else{ %>
						<option value="<%= tabellen[i] %>"><%= tabellen[i] %></option> <%
					}
			  	} %>
			</select>
<%-- -------------------------------------------------------------- --%>
		

		Suchfeld 1:

			<select name="such1feld" size="1">
			<option>.</option>
			</select>
<%-- -------------------------------------------------------------- --%>
			

			Suchbegriff 1:

			<input name="such1begriff" type="text" size="20" maxlength="50">
<%-- -------------------------------------------------------------- --%>
	</form>
<%-- -------------------------------------------------------------- --%>

</BODY>
</HTML>
```

ich kümmere mich zur zeit noch um das erste Drop-Down feld, dass beim reload der seite nicht richtig vorbelegt wird ....

Also er reloaded die seite wenn ich im ersten drop-down was auswähle/ändere. Alle drei variableninhalte werden auch per parameter übergeben ....

Aber irgendwie bekomme ich es nicht hin, dass er beim neu aufbauen der drop-down menus wieder im ersten drop-down den übergebenen wert vorauswählt ...


```
if (tabellen[i] == tab1wert) { %>
   <option value="<%= tabellen[i] %>" selected><%= tabellen[i] %></option> <%
}
else{ %>
   <option value="<%= tabellen[i] %>"><%= tabellen[i] %></option> <%
}
```

er macht unverständlicherweise IMMER den ELSE Zweig, obwohl der inhalt der variable "tab1wert" und ein Wert des Tabbellen[]-Arrays definitiv gleich sind ...



Ich kann mir sehr gut vorstellen, das ich das Problem hier absolut laienhaft löse .... 

Aber bietet einem DHTML/DOM-W3C nicht andere möglichkeiten um den Inhalt der drop-down-menus dynamisch zu verändern ???  :?: 



Vielen dank für jedwede Hilfe.  


Ciao  Lemy


----------



## Lemy (10. Dez 2003)

ok, danke obiges Problem hab ich erstmal irgendwie hingebogen 


ein kleines problem hab ich nu aber noch ...


Da ich als action des <select .... onchange="submit"> habe, und das wie ja auch gewünscht dafür sorgt dass die jsp sich selber immer aufruft und sich die parameter übergibt ...

nunja  nun soll aber noch ein button dazu, der ebenfalls ein submit macht, aber mit anderer action    der button soll ja eben NICHT ein reload auslösen ...




Danke



Ciao

Lemy


----------



## mala (11. Dez 2003)

eine form, eine aktion, sorry.

aber du kannst dem button ja nen namen geben und im servlet abfragen, ob der name nen wert hat, denn dann wurde der button gedrückt und du kannst im servlet entsprechend reagieren.

```
<form action="..."...>
...
<input type="submit" name="button" value="Go">
</form>
```

im servlet dann 


```
if (reguest.getParameter("button") != null && "Go".equals(reguest.getParameter("button")))
{
//Button wurde gedrückt
}
else
{
// relaod
}
```

gruss
mala


----------

