| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/11/2006 02:40:17
|
WilliamSilva
Moderador
Membro desde: 02/03/2005 11:08:44
Mensagens: 1747
Localização: Santos -SP.
Offline
|
Alguém usou em projetos, já está estável ?? poderiam me passar alguma informação.
SDS.
William Silva
|
= William Silva =
iSHARE - Document Management System
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/11/2006 10:34:42
|
alexandremlima
JavaChild
![[Avatar]](/images/avatar/426f990b332ef8193a61cc90516c1245.jpg)
Membro desde: 29/12/2003 09:01:59
Mensagens: 129
Localização: Salvador-BA
Offline
|
Estamos iniciando um projeto aqui na empresa com o Struts 2.0.1 beta pois acreditamos na evolução dessa versão do framework. O projeto já havia começado com o Struts 1.2.9 e estamos migrando o que já havia sido desenvolvido para a versão 2.0.1. Até o momento só tivemos problemas na composição das telas com o Tiles (daí estamos migrando para Freemarker) e na validação dinâmica (então estamos construindo a validação dentro das actions mesmo).
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/11/2006 11:43:12
|
WilliamSilva
Moderador
Membro desde: 02/03/2005 11:08:44
Mensagens: 1747
Localização: Santos -SP.
Offline
|
Olá alexandremlima ,
Diga o que está achando do novo Struts (WebWork2.0), passe suas impressões sobre ele
- está sentindo falta das ActionsForms e DynaForms ??
- pretende integra-lo com o Spring ??
- etc.
Dei uma olhada ontem a noite em uma app exemplo e tive a impressão que ele está bem mais produtivo que os Struts 1.xx , mais ainda preciso analizar a documentação e ver os recursos possíveis.
|
= William Silva =
iSHARE - Document Management System
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/11/2006 21:45:15
|
alexandremlima
JavaChild
![[Avatar]](/images/avatar/426f990b332ef8193a61cc90516c1245.jpg)
Membro desde: 29/12/2003 09:01:59
Mensagens: 129
Localização: Salvador-BA
Offline
|
Eu não somente tive a impressão de que agora está bem mais produtivo como senti isso ao migrar o projeto que estava em desenvolvimento aqui para o novo framework.
Não sinto falta nenhuma dos dynaforms que usava na aplicação. Agora o trabalho ficou muito melhor e mais fácil. Repetição de código praticamente não existe com o novo framework o que está tornando o código mais limpo e fácil de compreender.
Não pretendo integrá-lo com Spring porque nunca usei este framework. Aqui sempre utilizamos Actions (Struts) + Façade + Model + DAO (sem e com Hibernate). Mas com o Spring já integrado ao Struts 2 talvez eu passe a olhar mais para esse lado.
Nesta versão nova, tive dificuldades em fazer a validação apenas para alguns métodos das minhas actions e em usar o Tiles. Então acabei fazendo a validação dentro de um método específico da action (implementando uma interface do framework) e retirando o tiles para usar includes nos JSPs.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/11/2006 22:06:30
|
plentz
Moderador
![[Avatar]](/images/avatar/73f490f3f868edbcd80b5d3f7cedc403.png)
Membro desde: 28/01/2004 07:34:12
Mensagens: 1584
Localização: Porto Alegre, RS
Offline
|
Olá alexandremlima, você poderia colocar o exemplo de uma action sua antes e depois da migração? Estão usando o que no lugar dos seus antigos DynaActions?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/11/2006 11:13:47
|
alexandremlima
JavaChild
![[Avatar]](/images/avatar/426f990b332ef8193a61cc90516c1245.jpg)
Membro desde: 29/12/2003 09:01:59
Mensagens: 129
Localização: Salvador-BA
Offline
|
Atendendo ao seu pedido, vou colocar aqui um exemplo de como se transformaram as minhas Actions.
Antes gostaria de explicar que na minha aplicação, o Model e o Façade são uma única peça. Os métodos get e set funcionam como todos já sabemos e os métodos estáticos funcionam como serviços para a aplicação relativos ao assunto daquele model. Portanto, a aplicação tem a seguinte estrutura: JSP+Action -> Model (método estático) -> DAO e o Model (métodos get e set) transitando nas 3 camadas.
Meu struts-config.xml (Struts 1) estava assim anteriormente:
Todos os meus DynaForms tem as propriedades pag* para realizar a paginação dos registros na tela (a nível de banco de dados). A propriedade act é para execução dinâmica de métodos nas Actions do tipo DispatchAction.
As Actions do tipo ForwardAction são para integração com o Tiles.
As demais Actions que são descendentes de DispatchAction agrupam funcionalidades semelhantes em dois grupos separados. *ConsultaAction são os métodos para visualizar a tela, processar pesquisa (filtragem) e ver detalhes de um registro. *CadastroAction são os métodos para iniciar a inclusão de um registro, processar a inclusão do registro, iniciar a edição do registro, processar a edição do registro e processar a exclusão do registro.
Meu validation.xml estava assim:
Meu tiles-defs.xml estava assim:
Agora vou começar a mostrar como estavam os JSP's da aplicação. As páginas são sempre em grupos de 3: uma para visualizar e pesquisar registros (exibindo uma grid), uma para visualizar os detalhes de um registro, e outra para visualizar o formulário de cadastro (inclusão e edição).
TabelasAtividades.jsp
TabelasAtividadesCadastro.jsp
TabelasAtividadesDetalhes.jsp
Como citei anteriormente, as minhas Actions combinam dois grupos de funcionalidades. Para este grupos eu tenho duas classes genéricas de Actions. E estas duas ainda extendem de uma mais genérica ainda.
GenericAction.java
GenericConsultaAction.java
TabelasAtividadesConsultaAction.java
GenericCadastroAction.java
TabelasAtividadesCadastroAction.java
Este é um exemplo para ter uma idéia de como estava o meu código com o Struts 1.
No próximo post eu vou colocar como ficou o código como Struts 2.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/11/2006 11:30:58
|
alexandremlima
JavaChild
![[Avatar]](/images/avatar/426f990b332ef8193a61cc90516c1245.jpg)
Membro desde: 29/12/2003 09:01:59
Mensagens: 129
Localização: Salvador-BA
Offline
|
Convertendo para o Struts 2, a aplicação manteve a mesma estrutura: JSP+Action -> Model (método estático) -> DAO e o Model (métodos get e set) transitando nas 3 camadas. Esta estrutura já havia sido pensada assim para poder trocar o framework no nível JSP+Action no futuro.
Reaproveitei todos os Models e DAO's, sem mexer em nenhuma linha de código destes. Reaproveitei também os JSP's mas estes tiveram que ser reajustados para as novas tags do Struts 2.
Meu struts.xml agora ficou assim:
Como falei antes, não consegui fazer o Tiles funcionar no Struts 2 apesar do que está escrito na documentação. Pode ser um bug que seja resolvido na próxima versão beta. Então resolvi voltar a fazer includes nos JSP's com a tag <s:include/> do novo framework.
Consegui também fazer o código de paginação ficar isolado e genérico num JSP separado e funcionar em todas as telas sem precisar reescrever nada.
Paginacao.jsp
TabelasAtividades.jsp
TabelasAtividadesCadastro.jsp
TabelasAtividadesDetalhes.jsp
Antes, para saber se um usuário estava logado no sistema, eu tinha que ter um if em cada método das Actions. Agora o Struts já vem com o conceito de interceptador e eu aproveitei ele para fazer isso.
AutenticacaoInterceptor.java
Minha GenericAction ficou assim:
Criei uma classe para auxiliar as Actions:
E finalmente, assim ficou minha AtividadeAction.java:
Também não consegui fazer a validação funcionar para os métodos separadamente, então optei por não usar a validação em XML e sim na action. Com isso ganhei debug mas tô tendo um pouco mais de copy-paste.
Qualquer dúvida, é só perguntar.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/11/2006 12:47:31
|
WilliamSilva
Moderador
Membro desde: 02/03/2005 11:08:44
Mensagens: 1747
Localização: Santos -SP.
Offline
|
Olá alexandremlima ,
Muito legal a sua explicação acho que já deu para tirar uma conclusão só mais uma pergunta pessoal com relação a IDE, qual delas vc. está usando e os auto completar, code-editor ,help e demais recursos funcionam de acordo pois pelo que vi ainda não temos plugins para o Struts 2.
Mais uma vez obrigado.
att.
William Silva
wos.silva@uol.com.br
|
= William Silva =
iSHARE - Document Management System
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/11/2006 18:37:00
|
alexandremlima
JavaChild
![[Avatar]](/images/avatar/426f990b332ef8193a61cc90516c1245.jpg)
Membro desde: 29/12/2003 09:01:59
Mensagens: 129
Localização: Salvador-BA
Offline
|
Eu uso o Eclipse 3.1.2 com o plugin WTP 1.0.2 e com o plugin Tomcat Launcher da Sysdeo. Fazemos todos os sistemas somente com esse ambiente.
Estou aprendendo o Struts 2 somente com a documentação do website da Apache e pesquisando nos fóruns usando o Google.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/11/2006 23:25:43
|
WilliamSilva
Moderador
Membro desde: 02/03/2005 11:08:44
Mensagens: 1747
Localização: Santos -SP.
Offline
|
Beleza....
|
= William Silva =
iSHARE - Document Management System
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/12/2006 13:06:13
|
tricano
HelloWorld
![[Avatar]](/images/avatar/4251c47fdf0b43ddd1e5bf28bc6f3dba.jpg)
Membro desde: 07/09/2006 12:44:37
Mensagens: 13
Offline
|
Olá alexandremlima !
Me explica uma questão, por favor. Qual a razão do action genérico ?
Há tempos à atrás, pensei em algo para uso de polimorfismo, para criar dinamismo na condução das ações, mas não consegui uma conclusão coesa.
Bye !!
|
Atenciosamente,
André Tricano.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/12/2006 13:07:37
|
tricano
HelloWorld
![[Avatar]](/images/avatar/4251c47fdf0b43ddd1e5bf28bc6f3dba.jpg)
Membro desde: 07/09/2006 12:44:37
Mensagens: 13
Offline
|
Ah !! Queria agradecê-lo pelo material. Estou fazendo testes com struts2 e vai me ajudar muito.
Obrigado !
|
Atenciosamente,
André Tricano.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 02/01/2007 12:40:56
|
alexandremlima
JavaChild
![[Avatar]](/images/avatar/426f990b332ef8193a61cc90516c1245.jpg)
Membro desde: 29/12/2003 09:01:59
Mensagens: 129
Localização: Salvador-BA
Offline
|
A GenericAction é apenas para diminuição de código. Todas as minhas Actions tem os gets e sets da paginação e um get para obter o usuário logado na aplicação. Então, deixei isso numa action genérica e todas as actions herdam dela estes métodos.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/01/2007 15:55:14
|
rodrigo_ctba
JavaChild
![[Avatar]](/images/avatar/bafd1b75c5f0ceb81050a853c9faa911.jpg)
Membro desde: 20/09/2006 10:38:17
Mensagens: 101
Offline
|
Estou utilizando o Struts 2 e estou achando bem mais ""organizado" doque o anterior.
Quanto ao Tiles? Como anda isso? Já funciona para a versão 2 ? Estava verificando que já existe um tal de Tiles 2.
T+
|
>> Rodrigo Fragoso
>> AdapTI - Soluções em Internet
>> http://www.adapti.com.br
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/01/2007 19:43:56
|
alexandremlima
JavaChild
![[Avatar]](/images/avatar/426f990b332ef8193a61cc90516c1245.jpg)
Membro desde: 29/12/2003 09:01:59
Mensagens: 129
Localização: Salvador-BA
Offline
|
Sim, o Tiles não estava funcionando muito bem na versão 2.0.1 mas a partir da 2.0.2 está ok.
Sugiro que baixem no momento a versão 2.0.3 em http://people.apache.org/builds/struts/2.0.3/ . É uma versão mais estável do Struts 2 e quase foi promovida a versão GA (produção). Existe já uma versão 2.0.4 em andamento para ser lançada nos próximos dias.
|
|
|
 |
|
|
|
|