# Problem mit jsp:setproperty



## htl (3. Jan 2012)

Hallo,

folgendes Problem:

ich versuche aus der meiner JSP eine Javascript-Variable mittels setProperty in meine Bean zu speichern:


```
var testvar = 123;
<jsp:setProperty name="MainApplicationBean" property="selected" value="=testvar" />
```
 
Hierbei kommt immer der Fehler "testvar cannot be resolved".
(mit value="123" funktioniert die Übergabe aber, ich scheitere nur am Variable übergeben)

mit value="<%= testvar%>" habe ichs auch schon probiert, aber da wird sofort alles unterwellt in Eclipse und funktioniert genauso wenig.

Bitte um Hilfe!

LG HTL


----------



## Andgalf (3. Jan 2012)

Den Tippfehler hast Du gesehen?

Ich vermute es sollte 
	
	
	
	





```
value="testvar"
```
 heißen statt 
	
	
	
	





```
value="=testvar"
```


----------



## htl (3. Jan 2012)

Danke für deine schnelle Antwort, aber wenn man die Variable ohne = schreibt denkt das Programm man will den String "testvar" übergeben.
Zumindest hab ich das so verstanden. Funktionieren tuts jedenfalls nicht.

Lg


----------



## faetzminator (3. Jan 2012)

Vielleicht bin ich mit meinen Struts 1.1 Kenntnissen etwas "alt", aber dort müsste man das noch mit einem Scriplettag lösen:

```
<% String testVar = "123"; %>
<jsp:setProperty name="MainApplicationBean" property="selected" value="<%= testVar %>" />
```


----------



## htl (3. Jan 2012)

Danke für die Antwort, habs grad ausprobiert, es wird das letzte /> unterwellt (direkt nach value) und es kommt folgender Fehler:


```
12:52:18,243 ERROR [[jsp]] Servlet.service() for servlet jsp threw exception
java.lang.IllegalArgumentException: argument type mismatch
```

Der Übergabeparameter den die Methode in der Bean braucht ist ein int.


Muss ich für die Verwendung des Scriptlettags vl etwas einbinden?

Lg


----------



## nillehammer (3. Jan 2012)

Es liegt an der Vermengung von JavaScript und JSP. JSPs laufen Serverseitig. Du kannst hier also nur Variablen setzen, deren Wert vor dem Rendern bekannt ist. JavaScript wird auf dem Client ausgeführt. Der Wert der Variablen testvar ist also überhaupt nicht bekannt.


----------



## faetzminator (3. Jan 2012)

Ah jetzt hab ichs auch begriffen  Das soll JS sein... Willst du, dass wenn der User etwas modifiziert (per JS), dass dies ins Bean populiert wird? 3 Möglichkeiten: 1. setz den Wert gleich per AJAX 2. setz den Wert, indem du die ganze Page neu lädst 3. Mach einen Button hin, welcher 1. oder 2. erledigt.


----------



## htl (3. Jan 2012)

Danke, klingt logisch.

Wie kann ich mein Problem dann anders lösen?

vl etwas allgemeiner:
in einer Drop Down wird vom Benutzer etwas ausgewählt, das soll an die Bean übergeben werden um dazu passende Daten aus der Datenbank zu holen und mit getProperty in der JSP anzuzeigen.

kann ich den Wert ohne Javascript an die Bean übergeben? oder muss ich das ganze Konzept umwerfen?

*verzweiflung*

Lg


----------



## htl (3. Jan 2012)

@ faetzminator:

Wie kann ich das mittels AJAX machen?

hab den Funktiionsaufruf derzeit über onChange, kann man das so machen?


----------



## faetzminator (3. Jan 2012)

Du willst, dass immer gleich bei einer Wahl etwas angezeigt wird? Wenn du wenige Daten hast, kannst du gleich alles im Hintergrund dem JS zur Verfügung stellen und bei Bedarf einfach das passende anzeigen.
Wenn nicht, dann eben wie ich schilderte.
Mit AJAX kannst du einen Request im Hintergrund an den Server stellen. Du kannst dir eine JSP basteln, welche mit Hilfe eines Parameters gewisse Daten - am Besten in XML-Form - zurückliefert. Diese Daten kannst du dann per JS verwenden.
Als Beispiel könnte man ein Suchfeld für Nicknamen dieses Forums nehmen. Geb ich "fa" in ein Textfeld ein, wird ein AJAX Request auf [c]faetzminator.ch/getUsernames?searchKey=fa[/c] gesendet. Dieses gibt dann irgendwas wie folgt zurück:

```
<users>
    <user>
        <name>faetzminator</name>
        <posts>3</posts>
    </user>
    <user>
        <name>fabian</name>
        <posts>5</posts>
    </user>
</users>
```
Wie du genau AJAX Requests absenden und in Javascript DOM Manipulationen vornehmen kannst, lernst du am Besten mit geeigneten Suchbegriffen bei Google o.ä.


----------



## htl (8. Jan 2012)

Habe leider SEHR große Datenmengen..

Aber danke für die Info mit den AJAX Requests!
Werde mir das wohl genauer ansehen müssen.

Lg


----------

