Action pode chamar outra Action?

9 respostas
fcmartins

Eu estou enfrentando um problema no Struts. :frowning:

Eu tenho um formulário que vem preenchido e nesse formulário eu tenho um botão que chama outra tela, se existirem alguns dados no banco, mas se não houverem dados eu preciso que o navegador continue na mesma tela com os dados preenchidos. O que eu preciso é através da action que popula a 2a tela fazer uma verificação e então se não houver os dados chamar a action que populou a 1a tela, que irá fazer um forward para a 1a tela.

Dei uma pesquisada e poderia resolver isso colocando o FormBean na sessão ao invés do request, mas achei que não é muito elegante e queria saber se alguém tem uma solução melhor.

9 Respostas

ricardolecheta

faz forward para /suaAction.do :wink:

e sobre o formbean na sessao, isto é comum quando se usa struts… alias session é o scope default

fcmartins

É, acho que vou fazer isso mesmo. Eu não queria fazer isso, porque não me parece muito correto ficar colocando dados de pesquisa na sessão, mas já que não tem jeito… :cry:

Obrigado pela ajuda.

_fs

Não sei quase nada de Struts, mas não bastar fazer um dispatch ao invés de um forward? Assim os dados da request iriam juntos.

fcmartins

É, mas aí eu não tenho como chamar o action que contém a minha lógica de negócios (podem me apedrejar, os meus actions são meus BOs mesmo :twisted: ).

cv1

Eh ateh legar os BOs serem as Actions…

…quando vc usa WebWork.

No caso do Struts, vc ta acoplando a logica de negocio com coisas tipo HttpServletRequest, entao faz uma forcinha e refatora :wink:

A dica do lipe de fazer dispatch ao inves de forward eh valida - assim vc nao precisa ficar colocando coisa na session a toa :smiley:

ricardolecheta

nao me lembro disso no struts… no struts é tudo <forward…

aff! mas é o que o struts mais faz da vida :wink:

fcmartins

O sistema é web mesmo, não há qualquer previsão de mudar o cliente no futuro, então esse acoplamento não é problema.

Só que aí eu saio do Struts e eu prefiro manter o fluxo da aplicação no struts-config.xml, eu acredito que fica mais fácil de manter.

Depois de pensar um pouco, eu lembrei dos forwards globais, então é so eu configurar o forward que monta a 1a tela como global e chamar ele no final do 2o action em caso de problemas. :slight_smile:

cv1

O acoplamento eh um problema na hora de fazer testes unitarios (vai dizer que vc nao ta fazendo? shame on you big time)

fcmartins

Não faço :twisted: . Eu trabalho em uma empresa onde sou o único programador, se eu for parar p/ fazer testes unitários o sistema não sai. Na minha opinião testes unitários são úteis em empresas maiores que podem reservar parte do tempo do programador para fazer esse tipo de teste. Infelizmente esse não é meu caso. :cry:

Criado 20 de janeiro de 2005
Ultima resposta 20 de jan. de 2005
Respostas 9
Participantes 4