# Java-Methode mit Parameter aufrufen



## BaseBallBatBoy (28. Oktober 2010)

Hi!

Ich moechte eine Java-Methode mit einem Parameter von JavaScript her aufrufen. Wie krieg ich das hin?

Hier meine Idee:

```
function getXMLofProduct(productSelect)
{
	var product = productSelect.options[productSelect.options.selectedIndex].value;
	var XMLdata = "<%=bean.getProductXML(product)%>";
        //...usw....
}
```

Im Grunde geht es darum, dass man ein Produkt auswaehlt. Dieses wird an die Methode weitergereicht. Dann wird eine entsprechende DB-abfrage gestartet und dann liefert sie ein XML zurueck das alle Details zum Produkt enthaelt.

Mein Problem: innerhalb der <%= %> kennt er "product" nicht. Also wie kann ich dem meinen Parameter uebergeben****?

Gruss


----------



## Quaese (28. Oktober 2010)

Hi,

JavaScript läuft auf der Clientseite, Java auf der Serverseite. Willst du Daten austauschen, so musst du diese an den Server senden.

Möglichkeiten gibt es hierfür einige. Ich würde jedoch Ajax empfehlen. Hilfen und Tutorials hierzu solltest du im Forum zahlreiche finden.

Ciao
Quaese


----------



## BaseBallBatBoy (29. Oktober 2010)

> JavaScript läuft auf der Clientseite, Java auf der Serverseite. Willst du Daten austauschen, so musst du diese an den Server senden.



Ok, das klingt logisch. Also habe ich mir Ajax angeschaut. Hier mal was ich bislang habe.


```
function getXMLofProduct(productSelect)
{
    var product = productSelect.options[productSelect.options.selectedIndex].value;
    if (window.XMLHttpRequest) {
		// code for IE7+, Firefox, Chrome, Opera, Safari
		xmlhttp=new XMLHttpRequest();
	} else {
		// code for IE6, IE5
		xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	}
	
	xmlhttp.onreadystatechange=function() {
		if (xmlhttp.readyState==4 && xmlhttp.status==200) {
                         var XMLdata = xmlhttp.responseText;
                         //...usw....
		}
	}
        //bean.getProductXML(product)
	//xmlhttp.open("GET","was_kommt_hier_rein?",true);
	xmlhttp.send();
}
```

Nun, das ist was ich bislang verstanden habe. Wo ich nun aber probleme habe ist, wie kann ich beim xmlhttp.open meine Methode mit dem Parameter aufrufen? Oder muss ich da eine andere Methode rufen die dann weiterleitet an die eigentliche Methode?

Gruss


----------



## Quaese (29. Oktober 2010)

Hi,

der Methode *open* übergibst du die URL, in der sich deine Java-Funktion befindet.

```
xmlhttp.open("GET", "die_url.java?arg="+product, true);
```
Das erforderliche Argument übergibst du als URL-Parameter. Auf der Serverseite kannst du nun diesen Parameter auswerten und damit die gewünschte Funktion aufrufen.

Die Funktion auf der Serverseite liefert z.B. einen String, der an das aufrufende Dokument zurückgeliefert und in der callback-Funktion (onreadystatechange) verarbeitet wird.

Ciao
Quaese


----------

