Apache Struts 2  XML
Índice dos Fóruns » Java Enterprise Edition (Java EE)
Autor Mensagem
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
[Email] [WWW] [MSN]
alexandremlima
JavaChild
[Avatar]

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).
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
[Email] [WWW] [MSN]
alexandremlima
JavaChild
[Avatar]

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.
plentz
Moderador
[Avatar]

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?
[Email] [WWW]
alexandremlima
JavaChild
[Avatar]

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.
alexandremlima
JavaChild
[Avatar]

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.
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
[Email] [WWW] [MSN]
alexandremlima
JavaChild
[Avatar]

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.
WilliamSilva
Moderador

Membro desde: 02/03/2005 11:08:44
Mensagens: 1747
Localização: Santos -SP.
Offline

Beleza....

= William Silva =
iSHARE - Document Management System
[Email] [WWW] [MSN]
tricano
HelloWorld
[Avatar]

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.
[Email]
tricano
HelloWorld
[Avatar]

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.
[Email]
alexandremlima
JavaChild
[Avatar]

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.
rodrigo_ctba
JavaChild
[Avatar]

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
alexandremlima
JavaChild
[Avatar]

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.
 
Índice dos Fóruns » Java Enterprise Edition (Java EE)
Ir para:   
Powered by JForum 2.1.8 © JForum Team