Struts 2 - Passando dados entre JSPs

Olá para todos,

Eu tenho uma tela de login, que eu gostaria que fosse redirecionada para uma outra tela onde o usuário irá completar alguns dados. Meu problema é que após o login, eu gostaria que o próximo JSP que o usuário vai preencher já aparecesse com o login preenchido, já que foi inserido no JSP anterior.

Tenho basicamente um LoginAction e um CadastrarUsuarioAction, ambos com os seus respectivos JSPs.

Pensei em colocar o login do usuario na sessão, e no método Preparable.prepare do cadastro seguinte setar a variavel da action correspondente, mas aparentemente prepare não é executado quando o JSP é chamado a partir de um result.

Alguma idéia que possa me ajudar? Muito obrigado a todos.

Aqui vai o código. As exceções e os logs ainda não estão sendo tratados adequadamente.

Meu struts.xml:

<struts>
    <include file="struts-default.xml"/>

    <package name="default" extends="struts-default">

        <action name="login" class="br.ufrj.dcc.mercurio.action.LoginAction" method="login">
            <result name="success">/usuarioLogado.jsp</result>
			<result name="input">/formCadastroUsuario.jsp</result>
			<result name="error">/loginNegado.jsp</result>
        </action>

        <action name="cadastrarUsuario" class="br.ufrj.dcc.mercurio.action.CadastrarUsuarioAction" method="cadastrar">
            <result name="success">/usuarioLogado.jsp</result>
			<result name="error">/loginNegado.jsp</result>
			<interceptor-ref name="paramsPrepareParamsStack"/>
        </action>
		
    </package>
</struts>

Meu Login Action:

	public String login() throws Exception{

		Autenticador autenticador = new Autenticador();
		if (!autenticador.autentica(this.login, this.senha)) {
			return ERROR;
		}
		
		Context context = new InitialContext();
		GenericDAO genericDAO = (GenericDAO)context.lookup("GenericDAOImpl/local");

		Map<String, Object> session = ActionContext.getContext().getSession();
		
		//Verifica se o usuário autenticado já tem cadastro no sistema
		Usuario usuario = genericDAO.getUsuario(this.login);
		if (usuario == null) {
			System.out.println("::: Usuario não existente. Iniciando Cadastro.");
			session.put("logado", Boolean.FALSE);
			session.put("login", this.login);
			
			return INPUT;
		}
		
		session.put("logado",Boolean.TRUE);
		return SUCCESS;
		
	}

Meu Login JSP:

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>

<s:if test="hasErrors()">
	<b>Erros:</b>
	<s:fielderror />
</s:if>

<s:form action="login" method="post" id="formLogin" validate="false" theme="ajax">
	<span class="titulo">Login</span>

	<s:textfield name="login" label="login" size="20" />
	<s:password name="senha" label="senha" />
				
	<s:submit value="Login" targets="divPrincipal" />
		
</s:form>

Meu CadastrarUsuarioAction:

public class CadastrarUsuarioAction extends ActionSupport implements Preparable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 794145342393001230L;

	
	private Usuario usuario = new Usuario();
	
	
	
	public String cadastrar() throws Exception {
		
		Context context = new InitialContext();
		GenericDAO genericDAO = (GenericDAO)context.lookup("GenericDAOImpl/local");
	
		genericDAO.salvarUsuario(this.usuario);
		
		return SUCCESS;
	}
	
	@Override
	@SuppressWarnings("unchecked")
	public void prepare() throws Exception {
		Map<String, String> session = ActionContext.getContext().getSession();
		System.out.println("::: Session login [" + session.get("login") + "]");
		this.usuario.setLogin(session.get("login"));
	}
}

Meu CadastrarUsuario JSP:

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>

<s:if test="hasErrors()">
	<b>Erros:</b>
	<s:fielderror />
</s:if>

<span class="titulo">Cadastro de Usuario - Primeiro Login</span>


<s:form action="cadastrarUsuario" method="post" id="formCadastroUsuario" validate="true" theme="ajax">


	<s:textfield name="usuario.login" label="Login" disabled="true" size="20" />
	<s:textfield name="usuario.nome" label="Nome" size="20" />
	<s:textfield name="usuario.telefone1" label="Telefone" size="20" />
	<s:textfield name="usuario.celular" label="Celular" size="20" />
	<s:textfield name="usuario.endereco" label="Endereço" size="20" />
	<s:textfield name="usuario.email1" label="Email" size="20" />
				
	<s:submit value="Cadastrar" targets="divPrincipal" />
		
</s:form>

coloque a login na sessao e a capture na propria jsp para exibir. no site do struts2 tem alguns exemplos de como pegar dados da Session

Herrera

[quote=Herrera]coloque a login na sessao e a capture na propria jsp para exibir. no site do struts2 tem alguns exemplos de como pegar dados da Session

Herrera[/quote]

Muito obrigado. Eu achava que deveria ser feito de uma outra maneira ao invés de colocar parâmetros direto no JSP, mas funciona.

Obrigado novamente pela resposta.

Felipe