Napyttelen auton tiedot jsp -sivulla ja poimin ne Strutsin action luokassa :
AutoForm auto = (AutoForm) form;
ja saan näpytellyt tiedot esim.
auto.getNimi();
MUTTA autolla on myös atribuutti Vector varusteet jossa on varuste -olioita, jotka käyttäjä on voinut valita checkboxilla jsp -sivulla.
Miten saan poimittua Action luokassa sen mitä varusteita on valittu (True)? Nyt näyttäisi ettei oo valinnut mitään vaikka on.
Varusteet on iteroituna jsp- sivulla tyyliin:
html:checkbox name="varusteet" property="onkoValittu" />
AutoForm auto = (AutoForm) form;
ja saan näpytellyt tiedot esim.
auto.getNimi();
MUTTA autolla on myös atribuutti Vector varusteet jossa on varuste -olioita, jotka käyttäjä on voinut valita checkboxilla jsp -sivulla.
Miten saan poimittua Action luokassa sen mitä varusteita on valittu (True)? Nyt näyttäisi ettei oo valinnut mitään vaikka on.
Varusteet on iteroituna jsp- sivulla tyyliin:
html:checkbox name="varusteet" property="onkoValittu" />
Vastaukset 6
Vanhimmat
sivu toimii, jos kerran saat auto.getNimi() palauttamaan sivulla olevaa roinaa.
Eikä tämä palauta mitään?
Vector varusteet = (Vector)auto.getVarusteet();
Enumeration enum = varusteet.elements();
while(enum.hasMoreElements())
{
System.out.println(enum.nextElement());
}
Kun tuon jsp -sivulle jo kannassa olevan auton tiedot niin checkboxitkin asettuvat ihan oikein.
Mutta jos teen formilla muutoksia auton tietoihin niin juuri tuon vectorin tiedot eivät "päivity" eli vectorin olioiden tiedot pysyy saman arvoisina kuin kannasta tuotuna.
No ei tietenkään päivity vaan sun pitää lukea se formi ja päivittää sen objektin tila, ellei strutsi tee sitä automaatisesti. Kandee lukee niitä dokumentteja ja netti on täynnä strutsi esimerkkejä.
Nyt ei siis toimi millään. Luen kyllä formin tiedot:
AutoForm auto = (AutoForm) form;
auto.getNimi();
auto.getVari();
mutta auto.getVarusteet(); näyttää nullia.
HTTP lookin mukaan sinne kyllä näyttäis menevän tiedot siitä mitkä oon valinnu checkboxilla,
"nimi=Mersu&varusteetForml2].onkoVaruste=true"
mutta miten saan ne formista ulos Action luokassa?
Eihän vectorista voi tietenkään lukea samalla tavalla kuin muista muuttujista. Vectorihan on kontaineri, joka sisältää useampia objekteja. Jokaisella vectorin objektilla on indeksi, jota tarvitset lukiessasi siitä. Eli sun on nyt määriteltävä tohon lisäksi indeksi, joka määrää minkä vectorin objektin sä luet. (Teet siis loopin joka käy kaikki vektorin objektit läpi)
Tsekkaa Java Apista Vector, siellä on selitetty tarkemmin vectorin periaate.
Sinällään tuo vektorin käyttö boolean arvoille turhan jämyä.
Voisi käyttää vakikokokoista boolean taulukkoa...
NS. Turha mielipide:)