STRUTS - Invocar Action antes de exibir a página

Pessoal,

estou com essa dúvida e gostaria de saber como vocês costumam fazer. A questão é o seguinte:

Geralmente nos exemplos e tutoriais falando sobre Struts 1.x, sempre iniciamos exibindo a página JSP e apenas depois, após submeter o formulário dessa página, é chamado a Action correspondente (configurado o mapeamento no struts-config.xml).

Pois bem, gostaria de saber como vocês fazem, ou se alguém já fez isso, para iniciar através de uma chamada à Action e somente depois de executar um determinado método dentro dela, redirecionar para a página correspondente.

Alguém tem uma idéia de como é possível fazer isso?

Obrigado por qualquer orientação.

Abs!

Não entendi sua dúvida corretamente…

Você está usando Struts 1 mesmo? Se for ele não sei se posso te ajudar.

Tem uma tag action, no struts 2 que chama uma action automaticamente, a partir da jsp…

Isso mesmo .angelo.

Struts 1. Para falar a verdade eu iniciei uma construção que está funcional, porém, estou perdendo a funcionalidade de validação do struts que não está funcionando, sendo assim, estou tendo de verificar o preenchimento de campos obrigatórios através de javascript.

A solução que tenho desenvolvido é a seguinte:

Tenha uma classe pai que estende a Action do struts, onde sobre-escrevo o método execute(…). Dentro dele, através de reflection, eu invoco um método específico que está em uma classe filha que executa determinadas regras e também define a página para redirecionamento.

Por fim, ao final da execução desse método na classe filha, volta-se à classe pai para finalizar a execução do método execute(…) e efetuar o redirecionamento.

A minha questão é saber como o pessoal tem feito isso, para assim eu tirar algumas dúvidas, dentre elas, como manter as validações do struts.

Pegou a idéia?

Abs!

Um dos motivos que me levou a fazer essa abordagem, de invocar a Action primeiro, foi devido ao fato de eu ter logo na minha primeira página JSP um listbox, que precisaria ser preenchido com dados de uma consulta vindo de uma base de dados.

Invocando primeiramente a página JSP, eu não teria o listbox preenchido.

Como vocês costumam fazer então para preencher um listbox dessa maneira, com dados vindo de um BD, invocando primeiramente a página JSP?

Eu acho que tem como fazer isso via Ajax. Mas não sou muito aprofundado nesse assunto, vou deixar agora para alguém mais experiente =]

Sem problemas cara, valeu pelo esforço de qualquer maneira.

Alguém poderia dar uma ajuda?

Vlw!

cara, não se entendi bem, mas de algum forma voce chega na sua tela… ou por um menu, ou do login, certo???

se for pelo menu no link voce pode utilizar:

processaLogin.do?method=inicializar

e no seu método (no caso o inicializar) voce cria sua lista e popula.

se vamos supor que voce tenha feito o login e declarou o retorno sucesso…
ai no struts-config voce coloca:

é isso que precisa? se não tente explicar um pouco mais seu problema.

Abs

Fala cara, tudo bem!?

Então, o quê eu gostaria de saber é como vocês costumam fazer para invocar primeiro uma Action, para executar uma determinada lógica, e assim depois, redirecionar para uma página JSP.

Por exemplo: Supondo que exista um formulário principal que contenha diversas opções como links. Cada um desses links está relacionado com uma Action específica. Uma vez selecionado um link a página JSP correspondente deverá ser exibida somente após a execução da sua Action, pois nela deverá ter várias lógicas para recuperação de dados que deverão ser exibidas nessa página.

O processo seria:

link (formulário principal) -> Action -> página JSP correspondente.

Se você entendeu essa explicação, gostaria de saber como você faz esse processo: Invocar primeiramente a Action para somente depois invocar o JSP correspondente.

Obrigado pela força.

Abs!

Bom, se entendi bem o que eu disse anteriormente resolveria sim.

nesse seu formulario principal como faz para chamar seu jsp??

é só colocar no seu href:

processaLogin.do?method=inicializar 

no seu struts.config voce vai ter um

[code]


[/code]

com isso seu link chamando o processaLogin.do vai cair nesse bloco do seu struts config, ver qual classe esta mapeada, no caso LoginAction, então ele vai procurar dentro dessa classe o método que voce colocou no seu link (method=inicializar), encontrando o método inicializar ele vai executar o que estiver programado nele, recuperar dados, criar objetos, etc pra sua pagina poder ser executada…

seu método ficaria +/- assim:

[code] public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)throws Exception {

	String retorno = "";
	
	try {
		//seu código aqui

		if( tudoCerto ){
				
                        retorno = "sucesso";
				
		}else{
		    retorno = "erro";
		}

		
	}catch(Exception e){
		retorno = "/erro";
	}
	
	return (mapping.findForward( retorno ));
	
}

[/code]

vamos supor que tenha dado tudo certo no seu codigo e deve retornar a pagina solicitada, que o valor final de retorno ficou como “sucesso”.

vamos dizer que com isso sua classe “vai voltar” no seu bloco mapeado no struts-config para esta classe e perguntar: “qual jsp esta mapeado pra forward “sucesso”?”.

seu struts-config, vai responder: “pagina.jsp!!!”

sua classe: ok, obrigado, e então te exibe a pagina.jsp.

se não entender ou não for essa sua duvida, não resolver seu problema, poste seu código para que possamos te ajudar.

Abs!

Fala aí cara,

então, vou fazer uma implementação seguindo esses exemplos que você sugeriu.

Depois eu posto os resultados.

Valeu pela ajuda!!!

Abs.