Enviar parâmetros de uma página para outra usando o Struts 2

6 respostas
yoga

boa noite galera! Eu tou criando uma agenda eletrônica usando Struts 2, onde tenho uma página de login. Ao entrar com username e password a action LoginAction verifica se exixte aquele usuário no banco de dados. Se o usuário for existente, então deve ser redirecionado para uma página onde estará a lista de contatos daquele usuário logado, além da opção de cadastrar outros contatos. Bom, minha dúvida é como passar o (username) da página de login, para a tal página de usuário, já que o método para listar os contatos deve receber como argumento o username do usuário.

6 Respostas

leofernandesmo

Se vc quer passar de Action para outra basta colocar no struts.xml

<action name="consultarResumoFinanceiro"
			class="webfinanceiro.controller.actions.ConsultarResumoFinanceiro">
...
			<result name="abrePainel" type="chain">
				consultarPainel
			</result>
</action>
...

<action name="consultarPainel"
			class="webfinanceiro.controller.actions.ConsultarGraficos">
...
</action>

E criar um método com mesmo nome na Action para a qual vc passou. (Nesse caso abrePainel)

Seria isso ???

yoga

hum, acho que é isso mesmo! Tou no trabalho agora, mas quando chegar em casa vou testar. Depois posto o resultado. Vlw!!!

yoga

rapa, naum deu certo!! Só quero poder de alguma forma ler o campo “username” da página de login, na página de contatos, pois para fazer a consulta no bd eu preciso do username. Desculpa se falo bobagens, é que tou aprendendo struts e jsp agora. Aliás, se a solução usando jsp no struts for mais simples, tbm é válido. E aí, oq mim diz?

yoga

login

<s:form action="login!checkLogin">
		<s:textfield name="username" label="User"></s:textfield>
		<s:password name="password" label="Password"></s:password>
		<s:submit value="Entrar"></s:submit>		
	</s:form>
yoga

se o login for válido ele deveria passar para a página contatos chamada " home.jsp", mas nessa página eu posso cadastrar um novo contato e listar, o problema é - tanto pra listar como cadastrar contato, vou precisar do valor do textfield username lah do login para fzer as operações sql, select e insert.

essa é minha home.jsp

<body>
	<h1>Agenda!</h1>
	<%String username = request.getParameter("name"); %>
	<center>
		<div class="divs">
			<table border="2" cellpadding="10" cellspacing="0" class="table">
				<tr>
					<td> <b>Cadastro de Contato</b>
				</tr>
				<tr>
					<td>
						<s:form action="contato!insertContato" theme="ajax">
							<s:textfield name="contato.name" label="Nome" size="40"></s:textfield>
							<s:textfield name="contato.email" label="E-mail" size="40"></s:textfield>
							<s:password name="contato.password" label="Password" size="40"></s:password>
							<s:datetimepicker name="contato.birthday" label="Birthday" theme="ajax" displayFormat="dd/MM/yyyy"></s:datetimepicker>
							<s:submit value="novo" notifyTopics="listContatosTopic"></s:submit>
						</s:form>
					</td>
				</tr>
			</table>
		</div>
		<s:div id="contatorList" href="contato!listAll.action" listenTopics="listContatosTopic" theme="ajax" cssClass="divs"></s:div>
		<div class="divs">
			<s:submit  value="clear"  theme="ajax" align="center"></s:submit>
		</div>	
	</center>
</body>

e aqui o meu arquivo struts.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
	"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
	<include file="struts.default.xml" />
	
	<package name="default" extends="struts-default">
		<action name="login!*" method="{1}" class="br.com.jm.actions.LoginAction">
			<result name="invalido">/error_login.jsp</result>
			<result name="valido">/home.jsp</result>
		</action>
		<action name="contato!*" method="{1}" class="br.com.jm.actions.ContatoAction" >
			<result name="listAll">ListUsers.jsp</result>
			<result></result>
		</action>
		<action name="usuario!*" method="{1}" class="br.com.jm.actions.UsuarioAction" >
			<result name="insertUsuario"></result>
		</action>
	</package>
 
</struts>
yoga

e por último o ContatoAction

public class ContatoAction {
	private Contato contato;
	private List<Contato> contatos;
	
	 HttpServlet request = (HttpServlet) ServletActionContext.getRequest();
	 private String username = request.getInitParameter("username");
	
	public String listAll() throws SQLException{
		contatos = ContatoDAO.getContatoList(username);
		return "listAll";
	}
	
	public void insertContato() throws SQLException{
		ContatoDAO.addUser(contato);
	}
		
	public final Contato getContato(){
		return contato;
	}
	
	public final void setContato(Contato contato){
		this.contato = contato;
	}

	public final List<Contato> getContatos() {
		return contatos;
	}

	public final void setContatos(List<Contato> contatos) {
		this.contatos = contatos;
	}
	
	

}
Criado 29 de junho de 2008
Ultima resposta 30 de jun. de 2008
Respostas 6
Participantes 2