terça-feira, 26 de maio de 2009

Obtendo uma Collection Java com DWR

Bem, o post está bem específico mas eu li em alguns foruns essa dúvida e por isso vou postar assim específico mesmo. Ou seja, esse post é para quem está começando a usar DWR.
Primeiro eu crio o método na minha classe RemoteProxy:

@RemoteProxy
public class Funcoes {

@RemoteMethod
public Collection obterMinhaLista() {
Collection lista = new ArrayList();
return lista;
}
}


As propriedades que eu quero usar do Bean devem ser mapeadas com Annotation:

@DataTransferObject
public class MeuBean{

@RemoteProperty
private Integer id;

@RemoteProperty
private String descricao;

...
}


Agora é só usar essa chamada no javascript do JSP que você desejar:

mapear esses arquivos na sua classe html, na seção head:
/dwr/interface/Funcoes.js
/dwr/engine.js
/dwr/util.js

----------------------------

<script>
function mudarDisciplinas() {
Funcoes.obterMinhaLista( exibe);
}

function exibe(meusBeans){
//aqui agora é só usar o array como quiser, lembrando que
//cada objeto do array tem id e descricao. Exemplo: meusBeans[1].descricao

}
</script>


Ah, não esqueça de mapear as duas classes no web.xml:

<servlet>
<description>DWR controller servlet</description>
<servlet-name>DWR controller servlet</servlet-name>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
<init-param>
<param-name>classes</param-name>
<param-value>
meuPacote.Funcoes,
meuPacote.MeuBean
</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>DWR controller servlet</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>

Para quem quiser saber mais sobre AJAX com DWR é só dar uma olhada no mini-curso que Mário ministrou na FIB.
Até apróxima e qualquer dúvida, já sabe, é só comentar.

4 comentários:

  1. Diego,

    Acho que vale a pena indicar o mini curso que eu ministrei na FIB.

    http://javalinuxevatapa.blogspot.com/2008/05/mini-curso-sobre-ajax.html

    []'s
    Mario

    ResponderExcluir
  2. Beleza, gafe corrigida! Isso é que dá não usar a pesquisa do Google do próprio Blog!

    :)

    ResponderExcluir
  3. Diego, não seria:
    function mudarDisciplinas() {
    Funcoes.obterMinhaLista(exibe);
    }

    ? ou me passei???

    e precisa inserir no jsp os seguintes importes de javascript:

    /dwr/interface/Funcoes.js
    /dwr/engine.js
    /dwr/util.js

    ... seria isso???

    ResponderExcluir