Framework Web. Qual usar?

Num projeto passado trabalhei com o Struts. Quem já trabalhou com ele sabe que é, de fato, um pouco trabalhoso.
Bom, eu não tenho ainda referência pra dizer se ele é bom ou não.
Mas pra se trabalhar com Servlet não há como negar que ajuda bastante. Tenho lido alguns posts metendo o pau no Struts. Aí vem a pergunta, é ruim mesmo? Tem algo melhor?

Quero deixar claro o que quero.
É o seguinte, vou iniciar um projeto web então gostaria de sugestões.
Continuo trabalhando com Struts? Trabalho com Spring? GWT? DWR? JSF?
Ou algum outro que não citei.

Adianto que não me interessa algo RIA, como Laszlo ou Echo 2.

Dá uma olhada no mentawai. É um ótimo framework MVC e de fácil aprendizado.

eu trabalho com JSF e tenho gostado bastante.
na minha opiniao, uma boa combinacao é jsf + facelets. este ultimo vai servir para voce construir templates e componentes de uma forma muito fácil. e se voce usar esses dois na versao 1.2, tem um esquema de ajax que é muito bom.

Giliard,
JSF faz a parte de controle igual o Struts, o mentawai, o Vraptor?
Ou so a parte visual?

O controle dele é um pouco diferente, mas ele também faz essa parte sim.
a maioria dos outros frameworks é baseado no conceito de actions que facilitam bastante a construcao de aplicacoes web mais ainda tem tem o jeitao de programacao jsp + servlet…
o jsf muda bastante esse conceito. nele voce cadastra classes (que nao precisam implementar nem estender nada, ou pojo, se preferirem) para voce usalas de dentro do seu jsp, que sao chamadas de managed bean. Entao em vez de vc tem uma classe que estende Action que será executada ao clicar em um botao, voce já liga esse botao com um metodo do managed bean, e se tiver outro botao, pode ligar com outro metodo do mesmo managed bean e assim por diante. Com isso voce economiza um numero muito grande de classes e sem precisar fazer gambiarrazinha com campo oculto ou coisa que outros frameworks precisam.
Além do mais, suponha que dentro do teu managed bena voce tenha um atributo do tipo Pessoa que tem nome e data de nascimento…
no jsp voce coloca 2 inputs e liga cada um deles a um atributo da pessoa de dentro do managed bean e o jsf automaticamente pega o valor dos inputs e seta dentro das propriedades de pessoa.
Em outro frameworks geralmente voce pega tudo como string e depois converte pro tipo que quiser, e o jsf já faz isso pra voce.
por exemplo:

<f:view>
<h:form>
...
Nome: <h:inputText value="#{MB.pessoa.nome}"/>
Nascimento: <h:inputText value="#{MB.pessoa.nascimento}"><f:convertDateTime pattern="dd/MM/yyyy"/></h:inputText>

<h:commandButton value="Salvar" action="#{MB.salvarPessoa}"/>

...
</h:form>
</f:view>

configuracao do MB no faces-config.xml

...
<managed-bean>
      <managed-bean-name>MB</managed-bean-name>
      <managed-bean-class>pacote.MinhaClasse</managed-bean-class>
      <managed-bean-scope>request</managed-bean-scope>
</managed-bean>

...
<navigation-rule>
      <from-view-id>*</from-view-id>
      <navigation-case>
         <from-outcome>sucesso</from-outcome>
         <to-view-id>/sucesso.jsp</to-view-id>
      </navigation-case>
...

classe correspondente ao MB

package pacote;
public class MinhaClasse{

private Pessoa pessoa;
// get e set de pessoa

public String salvarPessoa()
{
// aqui voce pega uma referencia para sua DAO ou session do hibernate
session.save(pessoa);

return "sucesso"
}

}

Nesse caso o jsf vai instanciar a MinhaClasse no request e dar um getPessoa().setNome(valor do input) e getPessoa().setNascimento(data nascimento). Verifique que a data que será setada no atributo nao é uma String e sim um java.util.Date…

A action salvarPessoa nao precisa fazer nada mais do que salvar o objeto pessoa que já está todo povoado pelo jsf. Note que a action tem uma assinatura simples, sem argumentos e devolve uma String que vai ser usada para definir qual página seráexibida depois, ou entao pode ser void para indicar que vai retornar para a mesma pagina.

Além disso existem listeners e vários componetes disponiveis para colocar na sua aplicacao.

Bom, já escrevi pra caramba, acho que pra dar uma idéia isso já serve. nao sei se isso responde a sua pergunta… se nao manda aí que a gente complementa.
flw!

Tem também um outro framework que faz coisas parecidas com essas que eu falei sobre jsf mas eu nao conheço, é o VRaptor2.
Nunca usei, mas também parece ser bem simples.

Pessoal,

Vou ser breve e direto ao ponto.

Preciso de um framework Java p/ web (Struts, Mentawai etc) que seja algo semelhante ao desenvolvimento na ferramenta Power Builder da Sybase ou que pelo menos possua algum componente semelhante à DataWindow desta. Pode ser gratuita ou paga. Alguém sabe me informar?

Obrigado.

[quote=sonlino]Num projeto passado trabalhei com o Struts. Quem já trabalhou com ele sabe que é, de fato, um pouco trabalhoso.
Bom, eu não tenho ainda referência pra dizer se ele é bom ou não.
Mas pra se trabalhar com Servlet não há como negar que ajuda bastante. Tenho lido alguns posts metendo o pau no Struts. Aí vem a pergunta, é ruim mesmo? Tem algo melhor?

Quero deixar claro o que quero.
É o seguinte, vou iniciar um projeto web então gostaria de sugestões.
Continuo trabalhando com Struts? Trabalho com Spring? GWT? DWR? JSF?
Ou algum outro que não citei.

Adianto que não me interessa algo RIA, como Laszlo ou Echo 2.
[/quote]

Eu recomendo a trindade JSF, Spring e Hibernate. A integração do Spring com o JSF e o Hibernate é sensacional.

Simplicidade e Produtividade:

http://www.vraptor.org/pt/index.html

Valeu as sugestões!
Meu propósito maior é um framework q trabalhe com AJAX.

Então pelo q jah vi, estou com duas alternativas, mas ainda naum escolhi.

A primeira é trabalhar com Spring e DWR, jah q dwr se integra com spring.

A segunda é trabalhar com o VRaptor2 q tb trabalha com Ajax.

Acho q estou tendendo pra isso aih.
Mas claro, q ainda aceito sugestões, pois naum iniciei o projeto ainda.
valeu!

Apenas complementando, caso queira trabalhar com Webservices, o vRaptor trabalha facilmente não somente com padrões de XML como SOAP mas também com JSON, que hoje é sinonimo de XML para Ajax.

[]´s

Olá,

Eu recomendo o JBoss Seam. É muito prático!

abraços

[quote=fabiano.bandeira]
Eu recomendo a trindade JSF, Spring e Hibernate. A integração do Spring com o JSF e o Hibernate é sensacional.[/quote]

Teria como vc descrever a vantagem de se usar estes frameworks em relação a outros ?? O que vc usa de melhor deles ???

Vraptor

Qual a vantagem do VRaptor sobre o Spring ? e desvantagens ?

Faça um hello word nos 2 e tire sua conclusões.

Olha, eu ja trabalhei com DWR para ajax e te afirmo que o ajax do Facelets é muito mais fácil de trabalhar, vc nao precisa mexer em nada de JavaScript para atualizar a sua view ou coisa parecida.
Concordo com o que o pessoal aí disse, JSF + Spring + Hibernate é show de bola, e eu adicionaria Facelets nesse time (só nao chamo de quadrado mágico porque esse nome nos lembra de muita coisa ruim (momento off topic hehehe)).

[quote=gilliard_santos]Olha, eu ja trabalhei com DWR para ajax e te afirmo que o ajax do Facelets é muito mais fácil de trabalhar, vc nao precisa mexer em nada de JavaScript para atualizar a sua view ou coisa parecida.
Concordo com o que o pessoal aí disse, JSF + Spring + Hibernate é show de bola, e eu adicionaria Facelets nesse time (só nao chamo de quadrado mágico porque esse nome nos lembra de muita coisa ruim (momento off topic hehehe)).[/quote]

O Que seria mais produtivo e fácil aprendizado:

1 - JSF + Spring + Hibernate + Facelets
2 - JSF + Spring-annotation + Hibernate + Facelets
3 - JSF + VRaptor2 + Hibernate + Facelets

E vc poderia me esclarecer: Qual a diferença entre Hibernate e Hibernate+JPA ??

No que JSF ajuda alguem?

CV, quais são os frameworks q vc utiliza ??? e que tipo de sistemas vc desenvolve ??

Valew.