Per prima cosa spero sia la sezione giusta, nel caso non lo fosse spostate pure
Non ho il codice sottomano quindi cerco di andare a memoria facendo un riassunto di quello che si trova; infatti il problema credo sia indipendente da quello che ho scritto.
Più o meno la situazione è questa: ho una pagina .jsp che deve permettere l'inserimento di una lista di nomi e cognomi. Al caricamento deve soltanto mostrare una riga dove poter mettere nome e cognome, ma se si clicca su un pulsante con il + viene aggiunta una nuova riga. Per questo ho dovuto fare un iterate più o meno fatto così:
ripeto, vado a memoria nei dettagli del codice, quindi potrebbero esserci errori di nomi o di tag; il problema non è questo: la pagina viene visualizzata correttamente.codice:<table /*Qui si trova l'intestazione della tabella che ora non ricordo ma che comunque * contiene soltanto i nomi delle colonne e la formattazione*/ <logic:iterate id="nomiCognomi" name="NomiCognomiForm" property="listaNomiCognomi"> <tr> <td><html:text name="nomiCognomi" property="nome"</td> <td><html:text name="nomiCognomi" property="cognome"</td> <td> /*ultima colonna contenente l'immagine del + e relativo onclick= *che fa partire uno script js che poi carica la action corretta del form *per inserire una nuova riga*/ </td> <tr> </logic:iterate>
Su java e precisamente sulla action "carica" di questa pagina, viene inizializzato un bean. Questo bean contiene due string nome e cognome. E' fatto più o meno così
Questo bean va a settare il campo del form NomiCognomiForm che è fatto cosìcodice:public class BeanNomiCognomi{ private String nome; private String cognome; } /*e ovviamente relativi get e set*/
in definitiva la action carica è fatta cosìcodice:public class NomiCognomiForm extend ActionForm{ private Collection<BeanNomiCognomi> listaNomiCognomi; } /*e anche qui relativi get e set*/
questo funziona perchè nel form ho inizializzato correttamente nome e cognome del primo elemento della lista di bean ed infatti l'iterate mi crea la prima riga della tabella.codice:public bla bla action carica(bla bla, ActionForm form){ NomiCognomiForm nform=(NomiCognomiForm)form; BeanNomiCognomi n= new BeanNomiCognomi(); n.setNome(""); n.setCognome(""); Collection<BeanNomiCognomi> lista= new ArrayList<BeanNomiCognomi>(); lista.add(n); nform.setListaNomiCognomi(lista); return action.foward("caricato"); } /*al posto di "bla bla" ci sono i soliti campi tipici delle action*/
A questo punto io modifico questi due campi e utilizzo il bottone di tipo "submit" per chiamare la action che aggiunge una riga.
Con questa action vorrei caricarmi tutte le righe già presenti con eventuali modifche e aggiungere una nuova riga vuota. E' fatta cosi:
il punto è questo: questa lista che io mi carico col nform.getListaNomiCognomi() non ha i valori che ho modificato tramite il form, ma ha soltanto i valori che avevo inizializzato nella action, ovvero due stringhe vuote!codice:public bla bla action carica(bla bla, ActionForm form){ NomiCognomiForm nform=(NomiCognomiForm)form; BeanNomiCognomi n= new BeanNomiCognomi(); n.setNome(""); n.setCognome(""); Collection<BeanNomiCognomi> lista= nform.getListaNomiCognomi(); /*qui mi dovrebbe caricare la lista che è nel form*/ lista.add(n); nform.setListaNomiCognomi(lista); return action.foward("caricato"); } /*al posto di "bla bla" ci sono i soliti campi tipici delle action*/
Perchè il submit non mi cambia i valori inseriti nel form per nome e cognome??Devo fare qualcosa di diverso?
Spero di essermi spiegato, se volete altri dettagli cercherò di darveli.
grazie per l'aiuto


Rispondi quotando