Tomáš Turek wrote:
> Dobrý den,
>
> mám následující problém. Potřebuji na JSP stránce procházet kolekci objektů
> získaných z parametru a pro každý objekt zavolat JavaSciptovskou funkci.
> Nevím si s tímto problémem rady, tak doufám, že mi někdo poradí. Napadlo mě
> akorát, jestli by se tato kolekce nedala procházet přímo pomcí JavaScriptu,
> ale nevím jestli je to možné a jak na to.
>
> Děkuji za radu
Zkuste si to nejdriv ujasnit, pak bude reseni zrejme.
Z parametru urcite neziskavate kolekci objektu,
protoze z parametru se da ziskat leda retezec nebo
pole retezcu, ne kolekce objektu. Takze bud tu kolekci
ziskavate odjinud, napriklad z atributu, nebo
mate pole retezcu. V obou pripadech muzete pouzit
JSTL znacku <c:forEach> pro vypis nejakych retezcu
v cyklu, jen musite vedet jakych. Pokud mate pole retezcu,
proste je vypisete. Pokud mate opravdu pole objektu,
tak do stranky muzete vypsat jenom retezce, a musite se rozhodnout,
jak objekty reprezentovat.
Co se tyka JavaScriptu, ten se provadi na v prohlizeci, kdezto
JSP se provadi na serveru. Cili musite do stranky vygenerovat
JavaScriptovy zdrojak, ktery se pak na klientovi provede.
Predpokladejme tedy, ze v parametru "aaa" mate pole retezcu,
a chcete pro kazdy zavolat JavaScriptovou funkci "funkce()".
Pak to muzete udelat takto:
<script language="javascript">
//JavaScriptova funkce
function funkce(retezec) {
alert(retezec);
}
//JSTL znacka pro cyklus
<c:forEach var="i" items="${paramValues['aaa']}">
//generovani volani funkce
funkce('<c:out value="${i}" />');
</c:forEach>
</script>
Takze pokud bude URL zavolano treba s moje.jsp?aaa=Franta&aaa=Pepa&aaa=Lojza
tak to do stranky vygeneruje:
<script language="javascript">
//JavaScriptova funkce
function funkce(retezec) {
alert(retezec);
}
//JSTL znacka pro cyklus
funkce('Franta');
funkce('Pepa');
funkce('Lojza');
</script>
a funkce se zavola trikrat behem nacitani stranky. Pokud ji potrebujete zavolat
az pozdeji, dejte volani do tela funkce, kterou zavolate z <body onLoad="">.
Makub
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Science email: [EMAIL PROTECTED]
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--------------------------------------------------------------