Salve,
sto sviluppando un applicazione web, ora stavo provando a fare in modo che l'admin deve confermare i dati prima di inserirli.
Ho fatto così:
struts-conf.xml
codice:
<action path="/admin/initCreaQuestionario" roles="Admin" name="creaQuestionario" scope="session" type=" it.enginsoft.qo.struts.admin.QuestionarioInizializza" >
            <forward name="ok" path="mostraCreaQuestionario"/>
            <forward name="ko" path="erroreInterno"/>
</action>

<action path="/admin/creaQuestionario" roles="Admin" name="creaQuestionario" scope="session" type=" it.enginsoft.qo.struts.admin.QuestionarioCrea" input="mostraCreaQuestionario" parameter="controllo_lingue">
            <forward name="ok" path="mostraInserimentoQuestionario" />
            <forward name="ko" path="erroreInterno"/>
</action>

<action path="/admin/inserisciQuestionario" roles="Admin" name="creaQuestionario" scope="session" type="it.enginsoft.qo.struts.admin.QuestionarioInserisci ">
            <forward name="ok" path="mostraInserimentoOk"/>
            <forward name="ko" path="erroreInterno"/>
</action>
La prima action inizializza il bean, la seconda mette i dati che ha inserito l'admin nel bean e attravarso i tiles rimanda il tutto ad una jsp che stampa i dati appena inseriti e chiede la conferma, la terza inserisci i dati nel db. Alla seconda action c'è il primo problema, come richiamo la inserisciQuestionario?
ho provato tramite un link <a href="...inserisciQuestionario.do> inserisci </a> ma non funziona (perde il bean per strada, cioè i campi inseriti da creaQuestionario sono vuoti). Ho provato a fare un form vuoto e fare in modo che alla pressione del pulsante venga chiamata inserisciQuestionario come action ma ho lo stesso la perdita dei dati del bean.
come posso fare? è come se richiamando mostraInserisciQuestionario (definita nei tiles) perdesse il bean o tutto quello che ho salvato l'ultima volta.
idee?

per informazione, queste sono le action:
Inizializza
codice:
        Logger logger = Logger.getLogger(this.getClass().getName());
        SqlMapSingleton sqlMap = new SqlMapSingleton();
        CreaQuestionario que = (CreaQuestionario)form;
        que.reset(mapping,request);
        List lingue = sqlMap.getSqlMap().queryForList("get_Lingue");
        que.setLingue_possibili(lingue);
        return mapping.findForward(OK);
crea:
codice:
        Logger  logger = Logger.getLogger(this.getClass().getName());
        SqlMapSingleton sqlMap = new SqlMapSingleton();
        CreaQuestionario que = (CreaQuestionario)form;
        List titoli = new ArrayList();
        List lingue = new ArrayList();
        Testo t = null;
        if (que!=null){
            String d[]=que.getDati();
            //per tutte le lingue possibili
            //inserisco titolo e lingua scelti
            for (int i=0;i<que.getLingue_possibili().size();i++){
                //se è stato checcato il flag
                if (d[i]!=null && d[i].trim()!=""){
                    lingue.add(que.getLingue_possibili().get(i));
                    t = new Testo(d[i],(Questionario_lingua)que.getLingue_possibili().get(i));
                    titoli.add(t);
                }
            }
            que.setLingue(lingue);
            que.setTitoli(titoli);
            return mapping.findForward(OK);
        } else  return mapping.findForward(KO);
    }
Inserisci:
codice:
            //inserisco il questionario
            try{
                sqlMap.getSqlMap().startTransaction();
                String indice = (String)sqlMap.getSqlMap().queryForObject("get_Max_Questionario");
                que.setIndice(Integer.parseInt(indice)+1);
                logger.debug("indice: " + que.getIndice());
                sqlMap.getSqlMap().insert("insert_Questionario",que);
                //inserisco tutti i titoli
                logger.debug(""+que.getTitoli().size());
                for (int i=0;i<que.getTitoli().size();i++){
                    Testo titolo = (Testo)que.getTitoli().get(i);
                    ArgQueryInt aqi = new ArgQueryInt();
                    aqi.setArg0(que.getIndice());
                    aqi.setArg1(Integer.parseInt(titolo.getLingua().getId_lingua()));
                    aqi.setArgS(titolo.getTesto());
                    sqlMap.getSqlMap().insert("insert_Questionario_testo",aqi);
                    logger.debug("testo " + titolo.getTesto());
                }
                sqlMap.getSqlMap().commitTransaction();
                return mapping.findForward(OK);
            } finally {
                SqlMapSingleton.getSqlMap().endTransaction();
            }
il size di titoli preso da que nel seconda action è 2, nella 3° è 0. è come se richiamando l'action dalla jsp venisse azzerato il vettore.
idee?

ciao