# JavaScript mit Struts auslesen?



## pusteblume (3. Mrz 2009)

Hallo,

ich versuche in einer JSP einen Color-Picker zu implementieren. Das Ergebnis, also der Farbwert vom Color-Picker, soll dann *irgendwie* von Struts in meine Bean kommen.


```
<logic:iterate id="params" name="ParamsCollection" property="params">

   <input class="color" id="myColor" name="color" onchange="
	document.getElementById('params[0].label_color').value = this.color.rgb[0]*100 + '%';">
	<html:text property="label_color" name="params" indexed="true"></html:text>
</logic:iterate>
```

Gibt es denn die Möglichkeit, dass ich an der Stelle document.getElementById('params[0].label_color') das 'params[0].label_color' auch dynamisch generieren kann? Ich hab das jetzt zum testen, statisch eingefügt. Aber das ist nur für den Fall, wenn der logic:iterate nur ein Objekt hat, möglich. So wie ich es jetzt gemacht habe, ist es erstmal, um den Farbwert überhaupt in die Bean zu bekommen. Zwar kann ich mir auch mit request.getParameterMap() den Wert ausgeben lassen, aber dann habe ich als ParameterName immer den gleichen und kann den Wert dann natürlich nicht dem entsprechenden Objekt zuordnen. (ich hoffe, das war irgendwie verständlich erklärt, was ich meine?) 



Oder gibt es sonst eine Möglichkeit, so einen Color-Picker zu integrieren? Ich habe dazu leider nichts gefunden. 

Über jeden Tipp bin ich sehr dankbar!

Viele Grüße
pusteblume


----------



## HLX (4. Mrz 2009)

probier mal Folgendes:

```
<logic:iterate id="params" name="ParamsCollection" property="params" indexId="index">
   <input class="color" id="myColor" name="color" onchange="
	<%= "document.getElementById('params["+index+"].label_color').value = this.color.rgb[0]*100 + '%'" >;">
    <html:text property="label_color" name="params" indexed="true"></html:text>
</logic:iterate>
```


----------



## pusteblume (5. Mrz 2009)

hallo hlx,

mh... der output des ganzen schaut dann so aus:


```
<input class="color" id="myColor" name="color" onchange="
	document.getElementById('params['+index+'].label_color').value = this.color.rgb[0]*100 + '%';" />
```

irgendwie verändert sich das index nicht... kann man das denn über javascript aufrufen?

danke + lg
pusteblume


----------



## pusteblume (5. Mrz 2009)

ich werd bekloppt 

irgendwie ist es eigentlich ganz einfach, wenn man weiß, wie's geht... 

wie von dir, hxl, schon vorgeschlagen, im <logic:iterate> noch das indexId einfügen:


```
<logic:iterate id="params" name="ParamsCollection" property="params"  indexId="index">
```

und den html-tag muss man halt so aufbauen, wie die, die von struts generiert werden, das sieht in meinem fall so aus. und an die stelle, wo der index hinkommt, schreibt man einfach <bean:write name="index"


```
<input class="color" name="params[<bean:write name="index" />].label_color"/>
```

allerdings werden mir jetzt nur hexadezimal-werte vom color-picker übergeben und keine rgb-werte egal ob ich da bei onchange noch ein javascript anstoße. aber immerhin kommt schon mal was in der bean zum richtigen objekt an. ich werd bekloppt...

EDIT: die rgb-sachen funktionieren auch! 

JUHU!!!   

lg pusteblume


----------

