miten voin tehdä seuraavan: jsp1.jsp sivulta siirryn jsp2.jsp sivulle. Kummallakin on jspInit() metodi koska käyttävät enterprise beaneja. Tältä ekalta sivulta siirryn linkin kautta toiselle sivulle parametrin kanssa, vaikkapa "nimi=eka". Toiselella otan tuon -> String apu = request.getParameter("nimi");
Nyt tarvitsisin saada tuon apu muuttujaan siiretyn nimi muuttujan arvon eli "eka" tämän toisen sivun jspInit() metodion sisälle. Kuitekaan se ei sinne mene vaan tulee arvoksi null. Tiedän että ei ole oikea idea mutta en tiedä muuta keinoa.Miten voin ratkasta ongelman?
Nyt tarvitsisin saada tuon apu muuttujaan siiretyn nimi muuttujan arvon eli "eka" tämän toisen sivun jspInit() metodion sisälle. Kuitekaan se ei sinne mene vaan tulee arvoksi null. Tiedän että ei ole oikea idea mutta en tiedä muuta keinoa.Miten voin ratkasta ongelman?
Vastaukset 8
Vanhimmat
..sen pitäisi toimia juuri noin ja oikein. todennäköisesti sulla on jokin virhe linkkiä luotaessa tai myös kirjoitusvirhe voi tulla kyseeseen.
Jonttu
tuo parametri tuolle toiselle sivulle ja pystyn sen ottamaan tuolla request.getParameter(..)- toiminnolla. Tämä tapahtuu ja jspInit taas . Ongelma on, että en saa tuota parametria tuohon jspInit metodiin eli näyttää tyhjää tai antaa virhee 'cannot resolve symbol...' Onko niin että kun tuo jspInit() on skripletin sisällä, sinne ei voida viedä määrittelyssä tehtyjä arvoja! Ja tuota request.getParameter(..) hommaa ei voida tehdä skriptletissä eli . Keksin nyt jo toisen ratkaisun eli hoidan homman java luokassa mutta mielnkiinnon vuoksi, mitenköhän tuon hoitaisi jsp- sivulla?
..riisuttu esimerkki jsp-filusta niin siitä varmaan näkyy ongelman aiheuttaja, joka on todennäköissti seurausta käytetyn muuttujan näkyvyydestä tai suoritusjärjestyksestä.
Jonttu
sitä filua mukana jjoten yritän hahmotella sen tähän suurin piirtein eli ratkasevimmat osat ;)
eli tulee tuon tunnuksen arvo tässä vaiheessa tuohon id muuttujaan.
Sit sen jälkeen normaalisti tulostetaan listaa tälle sivulle. Toimii oikein. eli vain tuo parametrin saaminen java- luokkaan ei toimi.
Toivottavasti ymmärtsit ;)
...johtuu varmaan siitä, että init-metodi suoritetaan (nimensä mukaisesti) ensimmäisenä, jolloin tuosta id:stä ei ole vielä harmainta hajua.
Oletko kokeillut siirtää "String id = request.getParameter("tunnus");"-kohdan initmetodiin:
t. Jonttu
mutta olen kokeillut eli skriptletissä eikä se tajua tuota requestia muuta kuin . Siksi oletan,että koska tuo jspInit() on myös skriptletissä, se ei toimi. Mutta voihan sitä kokeilla. Mutta eikös silloin tuo requestkin pitäisi määritellä???
edelliseen. Eli tuo request on ServletRequest interfacen ilmentymä ja sitä voi vain käyttää skriptleteissä ja lauseissa. Pystysiköhän tuota käyttämään siellä jspInit() metodissa java- tavalla???
..niin siitähän se selviää. Ainakin getParameterin siirtäminen init-metodin kanssa samaan -tagin sisään voi auttaa. JSP:tä en tunne pätkääkään, mutta sanalla "public" voi olla piristävä vaikutus näkyvyyden kannalta.
Jonttu