Struts, passando parâmetros do actionForm para uma Action

5 respostas
cubas

Olá pessoal
Estou com uma dúvida em struts, acho que algo básico mas não sei como fazer

Crie um actionForm no struts.

Na minha página JSP chamo este formulário que insere no banco os registros. Segue abaixo

<html:form action="/novoPlanoPais.do" focus="planoPais.valor" method="post">
<html:hidden name="idPlano" value="${param.idPlano}" property="planoPais.idPlano" />
	<table>
		<tr>
			<td>Países:</td>
			<td><html:select property="planoPais.idPais" >
				<html:options collection="paises" property="idPais" labelProperty="nome" />
			</html:select></td>

			<td>Valor:</td>
			<td><html:text size="4" value="${planoPais.valor}"
				property="planoPais.valor" /> <html:errors property="valor" /></td>

		<td><html:submit>Grava</html:submit></td>
		</tr>
	</table>
</html:form>

Quando os dados são inseridos, chamo uma action do struts que lista todos os registros cadastrados. O problema é que, depois de cadastrar no banco, preciso enviar parâmetros para a action listar os valores certos. Segue abaixo.

O problema é que não consigo passar este atributo desta maneira. Como devo fazer para enviar um atributo entre actions do struts.

public class AdicionaPlanoPaisAction extends Action {

    public ActionForward execute(ActionMapping map, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
       
        Session session = HibernateFactory.getSessionFactory();

        // FORMULARIO
        PlanoPaisForm formulario = ((PlanoPaisForm) form);
        PlanoPais planoPaisForm = formulario.getPlanoPais();
       
       
        request.setAttribute("idPlano", planoPaisForm.getIdPlano());

        PlanoPaisDAO dao = new PlanoPaisDAO(session);
        Transaction tx = session.beginTransaction();
        dao.salva(planoPaisForm);
        tx.commit();
       
        return map.findForward("ok");
    }
}

Obrigado pela ajuda

Carlos Cubas

5 Respostas

V

Coloque apenas ${idPlano}

Focao

Ué vc já setou no request…

request.setAttribute("idPlano", planoPaisForm.getIdPlano());

apesar que eu setaria assim:

request.getSession().setAttribute("idPlano", form.getSenha());

Depois só pegar de novo

request.getParameter("idPlano");

good lock

V

Voce setando

request.getSession().setAttribute(“idPlano”, form.getSenha());

estara setando atributo da sessao nao de request.

Focao

vdb:
Voce setando

request.getSession().setAttribute(“idPlano”, form.getSenha());

estara setando atributo da sessao nao de request.

Perfeito vdb

por isso minha preferencia…

senão vai ter que alterar o struts-config

scope=“session”

se tiver

scope=“request”

dependendo de como foi definifo o form tbm pode ter um

super.reset(arg0, arg1);

aí baubau request

só se passar o HttpServletRequest como parâmetro pra outra action tosquice total… eu acho né…

V

Tem toda razao, tudo vai depender de como a aplicacao dele esta configurada.

Criado 12 de novembro de 2008
Ultima resposta 13 de nov. de 2008
Respostas 5
Participantes 3