Boa tarder a todos, to com uma duvidazinha, queria saber qual e a difenrença de estender o DispatchAction do Action e quais as vantagens de ambos.
Att,
Alan Rodrigo.
Boa tarder a todos, to com uma duvidazinha, queria saber qual e a difenrença de estender o DispatchAction do Action e quais as vantagens de ambos.
Att,
Alan Rodrigo.
http://www.guj.com.br/posts/list/32195.java
http://www.guj.com.br/posts/list/41083.java
Cara, o fórum tá cheio de material sobre isso, não levante um tópico sem dar uma pesquisada primeiro.
Flw! :thumbup:
A diferença é simples:
Quando você estende Action, não escolhe qual método da classe será executado, o método execute() é sempre chamado.
Estendendo DispatchAction, você pode criar divérsos métodos na classe para executar as suas ações, e o método que será executado depende do que foi submetido pelo form (ex: se a sua action tiver parameter=“method” definido no struts-config.xml, você deverá chamar http://aplicacao[:porta]/acao.do?[color=red]method=metodo01[/color]).
Na minha opinião estender o DispatchAction faz muito mais sentido. Para várias operações em uma mesma tabela do banco, por exemplo, (searchByName, searchById, insert, update, delete, etc…) é possível criar vários métodos em uma mesma DispatchAction, ao invés de criar uma Action para cada operação, o que aumentaria o número de classes e blocos de configuração no struts-config.xml para uma mesma finalidade.
O Action é mais antigo, o DispatchAction foi uma evolução em uma versão mais avançada do Struts quando reconheceram a necessidade de dar essa flexibilidade às classes de ação…
É um pouco uma questão de escolha pessoal, mas é importante pesar a coesão: agrupar o que pode estar em unidade, facilitando a manutenção do código, desagrupar as funcionalidades diferentes, permitindo uma baixa acoplagem, e assim por diante…
Eu sempre utilizo DispatchAction, porque mesmo que hoje a minha ação possua apenas um método, se futuramente eu precisar de mais uma funcionalidade na mesma ação basta adicionar mais um método.
Fox McCloud bela resposta muito útil.