Struts 2 + AJAX

Estou começando a fazer um site com Struts 2, mas estou precisando de um help:

  • Gostaria de saber se se é possível e se vale a pena utilizar as tags ajax para renderizar uma pagina?

Tipo assim… pensei em ter uma página principal

<s:div id=“menu”>
<s:include value=“menu.jsp”/>
</s:div>

<s:div id="main" theme="ajax">

</s:div>

Então quando eu clicar em um link do menu, por exemplo Cadastrar Usuário, ao inves de eu abrir uma página cadastrarUsuario.jsp com o form, menu, etc (ocorrendo um refresh completo da pagina) eu chamaria uma action retornando a pagina cadastrarUsuario.jsp,contendo somente o form, para a div “main”.

Parece bem caseiro fazer isso… hiehieihei… mas é que detesto refresh de pagina… e ouvi dizer que trabalhar com as frames do html, também não é uma boa opção…

Sou noob aqui no fórum… tenham paciencia… hehehehe

Fala meu amigo,

Utilizar as tags ajax do struts lhe traz alguns beneficios como validação de entrada feita pelo proprio struts sem ter que utilizar javascript, integração com o framework dojoToolkit para utilização de javascript, utilização da tag s:div para fazer o que vc esta querendo que seria renderizar somente o componente dentro da div sem dar refresh na página.
Mas vou ser sincero, eu utilizei em um projeto, tive alguns problemas com s:div principalmente para integrar com outro framework o DisplayTags para renderezar tabelas com paginação.
Sem falar que o layout fica amarrado, pois quando vc utilizar tags ajax do struts2 ele automaticamente renderiza seu componente dentro de tabelas o que torna meio difícil trabalhar com o layout.
Eu utilizar com moderação, tipo, faz uns testes ai que vc vai ver se encaixa no teu projeto.

abraço.

att
Diego

Valeu Diego… você tem razão mesmo… é preciso analisar… as chamada das páginas por exemplo, fica meio lerdo… cliquei umas 10 vezes em um mesmo link para testar e chegou a dar uma “bugada” no browser…

Mas tem alguma outra solução para este refresh de página? Não sei se é frescura isso hehehee… mas o que mais me incomoda em sistemas web é esse refresh toda hora que tem que trocar algo na tela… alguma forma de “jogar” uma pagina jsp em uma div…

O duplo submit tem como vc tratar com interceptors, agora esse refresh só utilizando um framework ajax como DWR.

att
Diego

Cara sempre tive curiosidade de saber a utilidade desses Interceptors… nunca tinha lido um documento bom sobre isso… e na própria Apache te um legal para entender o funcionamento…

http://struts.apache.org/2.x/docs/interceptors.html

No caso do duplo submit é só utilizar o Token Interceptor.

Aprendi a desenvolver web sozinho… daí as vezes eu fico meio perdido, porque o conceito não está bem definido na cabeça… ehihieheie

E para o refresh não achei soluções diferentes de ajax… na verdade achei alguns lugares usando innerHtml… mas não entendi direito… porque na verdade eu só quero tipo fazer um <s:include value=“cadastrarUsuario.jsp”> (ou outra maneira de incluir uma jsp) dinamico em uma

na index.jsp… quando o usuário clicar no menu “Cadastrar Usuario”… entende!? (estou falando isso, porque estava lendo no site da DWR e achei isso: “Struts v2 uses DWR for Ajax Validation”… daí fico pensando se é caseirisse usar DWR somente para fazer uma chamada uma jsp sem refresh da pagina inteira).

… mas esse DWR é melhor do que o Dojo? É relamente utilizado somente para validações?! Quanto mais leio mais fico confuso… hahaaha

Valeu aí a ajuda e a paciência até agora…

O DWR é um framework ajax bastante completo, para fazer validaçõe sugiro que vc utilize o Dojo mesmo.
O DWR vc pode utilizar para fazer coisas mais complexas.
Com ele por exemplo vc escreve classes java que fazem operações no banco por exemplo e retorna uma list de objetos, esse metodo em java se torna disponível em javascript atraves do DWR.

Utilize s:div para apresentar os resultados de suas actions, desta forma a cada chamada de sua action somente este componente será atualizado.

Beleza Diego! Valeu a ajuda aí cara!

Como eu faço para encerrar o tópico!?

Rapaz… encerrar o tópico eu nao sei nao!

abraço!!