Struts - Ajuda!

Galera, eu to precisando fazer com que uma action seja executada depois de outra, com o form da primeira. Eu ate consegui que ela fosse chamada, mas como ela precisa de um form para executar sua logica, o form fica nulo e assim nao executa do jeito que deveria. Alguem poderia ajudar?

O que eu preciso fazer é com que depois da action atualizar os dados, uma action que faz a listagem de uns dados especificos seja executada e os parametros dela (form) sejam os da primeira action.

Alguem?! Obrigado!

Por que nao faz isso numa mesma action?

Chama um metodo da action por exemplo e dele dá um retono para outro método.

Ex.

public ActionForward edit(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
// teu codigo
// retorno para outro método teu da action no caso o list
return list(mapping, form, request, response);

}

public ActionForward list(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
if (log.isDebugEnabled()) {
log.debug(“Iniciando o metodo ‘list’…”);
}
// teu codigo
// retorno para tua página
return mapping.findForward(“consulta”);
}

Espero que seja esta idéia que vc queria

mas nesse caso. Como eu poderia chamar direto o método. Assim, se eu tenho um método pra editar e outro listar, quando eu fosse editar eu editaria e depois chamaria o método listar. Mas e quando eu fosse só listar? Como eu faria pra somente chamar o método listar? Sem ter que passar um parâmetro e usar um if para decidir qual método usar.

Obrigado.

Para chamar um metodo na tua action vc coloca no link:
NomeDaAction ! NomeDoMetodo.

E se tiver que passar parametros:
NomeDaAction ! NomeDoMetodo ? OParametroASerPassado.

Exemplo:

<s:url id="controleTeu" action="Action!metodo" includeParams="get">    

Isso funciona com as tags do struts tambem?! Mesmo no form, tipo <html:form action=“action ! metodo”/>

Obrigado.

Tu podes usar a tag do structs por exemplo a Logic e hidden posso te mandar um exemplo se tu quiser por e-mail

eu uso isso todo dia no trabalho e funciona bem.

por que ao invés de toda essa complicada vc não faz simplesmente:

no struts.xml:

<action name="editar" method="editar" class="meu.pacote.MinhaAction">
    <result>meu_jsp_de_sucesso.jsp</result>
</action>
<action name="listar" method="listar" class="meu.pacote.MinhaAction">
    <result>editar.jsp</result>
 </action>

no meu form:

<form action="<s:url action="editar"/>">
   //meu form aqui...
</form>

Implemente o método listar, que busque as informacoes nos seus repositorios e coloque o objeto na sessão.
Implemente o método editar, que pega as informacoes do seu request ou direto no objeto se tiver usando ognl, e grave esses dados no banco de dados…

daí basta chamar pelo seu browser a url da action listar, por exemplo: http://meudominio/meusistema/listar.action

[]'s