Otan lomakkeelta muutamia parametrejä java-pavulle. Jostain syystä tapa1 toimii mut tapa2 ilmoittaa näiden arvojen arvoksi NULL.
Tapa1:
public void setToName(String prm) { toName = prm; } public void setMessage(String message) { this.message = message + " ystäväni " + toName + "!"; }
ja sit tulostetaan tuo this.message ja kaikki arvot tulee oikein.
Tapa 2:
public void setToName(String prm) { toName = prm; } public String message = "Arvoisa " + toName;
ja tulostuksessa tulee Arvoisa NULL.
Missä mahtaa olla vika?
Mod. edit: kooditagit
Pavuissa on tapana tehdä setterit ja getterit, jälkimmäisessä koodissa puuttuu se getteri. Eli teeppä getName() metodi ja käytä sen paluuarvoa messagessa.
Ei onnistu. Yhä edelleen tulee null-arvoja.
Tarkoituksena on siis tehdä mailinlähetysskripti jsp:llä, jossa osoitteet ja nimet otetaan talteen html-lomakkeelta MUTTA varsinainen viesti on valmiina skriptissä. Tapa 1:ssä tuo viestikin otettiin lomakkeelta, ja kaikki toimi hyvin, mutta Tapa 2:ssa kun yritän luoda viestin vasta pavun sisällä, lähtee viesti hyvin, mutta muut kentät saavat null-arvoja.
Johtuisiko siitä, että siinä vaiheessa, kun message-muuttujaan laitetaan tuo, toNamea ei ole vielä asetettu eli se on null? Laitapa koodi sopivaan järjestykseen, tee viesti paloista vasta, kun ne palat ovat paikoillaan.
Koodinpätkässä on seuraavanlainen järjestys:
1. muuttujien alustus
2. setterit
3. message-muuttujan kokoaminen eri paloista
Silti tulee null-arvoja..
Tässä tuo koodinpätkä nyt vielä ois:
private String toName = null; public void setToName(String prm) { this.toName = prm; } public getToName() { return toName; } public String message = "Arvoisa " + toName;
Tällä tavalla tulostuu siis Arvoisa null.
Mod. edit: kooditagit
Yleensä funktioiden ulkopuoliset muuttujat alustetaan heti aluksi. Tuossa pitäisi varmaankin ensin kutsua setToName-funktiota ja vasta sitten tehdä message. Sinuna laittaisin viestin tekemisenkin omaan funktioonsa, niin ei sattuisi tuollaisia.
En sitten näistä Javapavuista tiedä, aivan uusi lajike minulle.
Tuntuu et kaikkea ois jo kokeiltu, mut silti joko tulostuu null tai ei mitään. Jos puolestaan otan myös viestin message-muuttujaan setMessage()-funktiolla suoraan html-formilta niin kaikki sujuu loistavasti, myös viestin rakentaminen ja siinä noiden muiden html-formilta tulevien muuttujien käyttö...
Dunno.
Aihe on jo aika vanha, joten et voi enää vastata siihen.