DWR | Handerson Frota - WEB2.0 - Part 4
Lomadee, uma nova espécie na web. A maior plataforma de afiliados da América Latina.

Categoria DWR

Carregando HTML usando o DWR

Um método bem simples e muito interessante do DWR é o forwardToString(“JSP/HTML”). Você tem mais ou menos o seguinte cenário:

Você deseja carregar uma determinada página ou trecho de código que está salvo em um html ou jsp dentro da sua aplicação e quer que essa página seja carregada em um deterninado local, normalmente uma DIV, TBODY. Veja como é simples:

Vamos inicialmente criar no seu FacadeAjax um método que irá receber uma determinada URL e vai devolver essa requisição como HTML puro. Veja o código abaixo:

public String carregaPagina(String url) throws ServletException, IOException{
return WebContextFactory.get().forwardToString(url);
}

Agora vamos fazer o JavaScript que irá executar esse método:

function carregar(){
var url = DWRUtil.getValue("url");
FacadeAjaxSession.carregaPagina(url,{
callback:function(data){
     DWRUtil.setValue("pagina", "");
     DWRUtil.setValue("pagina", data, {escapeHtml:false});
}
});

}

O que ele basicamente faz é fazer a chamada ao método carregaPagina passando como parâmetro a página que você deseja carregar e no retorno dessa chamada(callback) ele carrega a página na tela utilizando o DWRUtil.setValue(). Observe que no DWRUtil.setValue() eu passo mais um parâmetro que é o: escapeHtml:false, que vai evitar que o browser carregue o código html no lugar do resultado. Sem esse parâmetro ele iria mostrar as tag do html.

HTML

Carrega página

Carregar Página

No HTML passado acima temos apenas um input onde deverá conter a página que você deseja carregar e uma tabela com um link que executará a função do JavaScript. Temos abaixo desse link a tag TBODY que é onde vamos carregar o nosso html.

Queremos carregar o restante dessa tabela(no nosso exemplo estamos carregando um trecho de uma tabela, mas poderá ser uma completa ou outra coisa que você deseje), que poderá ter vários conteúdos, ou seja, poderá ter um ou mais arquivos html como o que está abaixo:

TESTE.HTML

Formulario


Nome:


Login:


Senha:


Observe abaixo passo a passo a sua execução:

Agora passamos como parâmetro a página teste.html descrita anteriormente:

Clicamos no link Carregar Página:

Você observou como é simples carregar html na sua aplicação usando o DWR. Lembrando que aqui foi apenas um exemplo, imagine ter uma determinada funcionalidade que o usuário através de uma Combo seleciona um de vários formulários já prontos. Seria algo como um formulário “dinâmico”.

Fica a cargo da sua criatividade utilizar essa funcionalidade do DWR. No exemplo da Palestra do Sun Tech Days utilizo esse método para carregar alguns formulários na tela, mas não é obrigado serem somente formulários, podem ser tabelas, imagens etc.

Mas informações no link abaixo:

http://getahead.org/dwr/server/generic

Espero que este artigo tenha sido de utilidade.

Abraços

Joe Walker na InfoQ

Recentemente o site InfoQ entrevistou nada mais do que Joe Walker o criador do DWR. Na entrevista basicamente ele fala sobre as novas características, novas funcionalidades, o futuro do DWR, sobre Ajax Reverse, a integração com Spring, o DWR nas IDE´s e claro a parceria(patrocínio) com a TIBCO, uma multinacional que “adotou” o DWR na maioria de seus projetos dentre outras coisas.

A entrevista claro está em inglês, mas para a nossa sorte(minha principalmente) é um inglês bem técnico, com algumas gírias mas da para entender no geral o que ele fala.

Joe Walker é um desenvolvedor e consultor que trabalha em técnicas avançadas em desenvolvimento com Ajax. Ele é o criador do DWR, praticamente ele mantém sozinho o desenvolvimento do DWR(claro existem alguns gatos pingados que participam).

É mais uma prova da força do DWR e da sua capacidade e robustez, posso afirmar que HOJE ainda não inventaram um fremework Ajax para java melhor ou similar ao DWR.

Link da Entrevista: http://www.infoq.com/interviews/dwr-joe-walker

Até mais ;D

Artigo DWR e Palestra JSF

Novo Artigo

Primeiro queria dá a noticia que mais um artigo foi publicado. Este artigo é uma continuação da primeira parte do artigo sobre Session no DWR que foi publicada essa semana pelo portal da Java Magazine.
Em breve pretendo lançar mais um ou dois artigos finalizando essa parte de Session.

Artigo no portal da Java Magazine: Sessão com DWR
Artigos sobre DWR: Artigos DWR

Evento da Semana

Sábado dia 27/10/2007 o CEJUG(Ceará Java Users Groups) vai realizar mais um CCT(Café Com Tapioca).

O evento vai contar com a presença massiva da comunidade java do Ceará.

O palestrante nada mais é do que o Rafael Ponte meu amigo e sócio(TriadWorks).
A palestra é muito interessante pois ele vai abordar tudo que há de mais importante do JSF(Java Server Faces) e ainda vamos contar com um delicioso coffe-break, sorteios de brindes e para finalizar o evento teremos um encontro de confraternização fortalecendo assim a comunidade.

Vai ser bem interessante mesmo e aconselho a participar do evento, pois só assim a comunidade Java no Ceará vai crescer mais e mais e só quem ganha é VOCÊ ;D.

Mais informações sobre o evento: Anatomia do JSF.

Singnature com DWR

Uma funcionalidade bem interessante do DWR é a Signature. Uma maneira simples de se trabalhar com Coleções. Signatures no DWR utiliza-se de reflexão para descobrir os tipos que ele deve processar na conversão.

É uma forma que o DWR encontrou para resolver alguns problemas de objetos armazenados em uma coleção. Imagine o método a seguir:

public void exampleSign(List attribute){ ...

...

}

Você não tem a mínima idéia do que pode vir no List, pode ser uma coleção de Beans, String, Integer etc. Com Singnatures você poderá garantir que seu método vai receber vários tipos já pré-definidos sem precisar alterar a assinatura do método e sem ter que ter um único tipo. Vejamos um exemplo:

public void exampleSign(List attribute){ ...

...

}

Esse é o seu método, e agora você quer que ele receba uma Lista de Beans de Usuários.

No seu dwr.xml fora da tag < allow >< / allow> você irá criar o trecho abaixo:

< signatures >   < ! - - [ CDATA [

import java.util.List;

import com.jm.dwr.FacadeAjaxSession;

import com.jm.bean.BeanUsuario;

FacadeAjaxSession.exampleSign(List < BeanUsuario >);

] ] - - >
< / signatures >

Na primeira linha você define que o trecho a seguir é uma Signature, caso você vá utilizar algumas classes que não são “default” você deverá fazer o import da mesma. E claro o import da classe que você deseja alterar o método. Na linha 06 você “diz” como o método deverá se comportar.

Agora seu método está recebendo um List de Beans Usuários. Vamos ver outro exemplo:

Queremos agora que o método receba um List de Strings:

< signatures >   < ! - - [ CDATA [

import java.util.List;

import com.jm.dwr.FacadeAjaxSession;

FacadeAjaxSession.exampleSign(List < String >);

] ] - - >
< / signatures >

Que tal um List de Integer:

< signatures >   < ! - - [ CDATA [

import java.util.List;

import com.jm.dwr.FacadeAjaxSession;

import com.jm.bean.BeanUsuario;

FacadeAjaxSession.exampleSign(List < Integer >);

] ] - - >
< / signatures >

É bem simples de fazer e configurar. É uma opção interessante para quem não quer ficar preso a assinatura do método e ter que fazer uma para cada tipo de collections.

Claro existem várias outras formas e maneiras de se utilizar a signatures do DWR, fica a seu cargo escolher onde ela melhor se aplica. Caso queria saber mais sobre signatures acesse o link abaixo:

http://getahead.org/dwr/server/dwrxml/signatures

Abraços.