DWR 3 Release Candidate 1

{ December 24th, 2008 }


cmilfont

Autor: cmilfont

Joe Walker anunciou que saiu a RC1 do DWR3 com pequeno atraso com novidades interessantes como suporte a Varargs, Method Overloading, entre outras coisas. Mas destaco algo que deveria ter há tempos e sentíamos falta para construções repetitivas como CRUD (principalmente) que é o que chamou de “Lightweight typed parameters“.

Até a versão 2 temos que construir métodos no Creator com implementação nos argumentos devido ao DWR não ter como fazer o binding entre o Javascript e o Java sem saber quem é o objeto. Algo assim:

public class AjaxFacade {
 
	public User teste(User param) {
		param.setDescription("Teste funcionou");
		return param;
	}
}

No javascript:

AjaxFacade.teste(
	{
		id:42 //JSON que representa o objeto User
	}, 
	{
		callback:function(retorno) {
			alert(retorno.toSource());
		},
		errorHandler:function(error, message) {
			alert(message);
		}, 
		timeout:5000
	});

Agora foi adicionado a propriedade $dwrClassName no Converter onde você pode trabalhar com a interface ao invés da implementação. Vejamos com o Object como argumento no mesmo método:

public class AjaxFacade {
 
	public Object teste(Object param) {
		//puramente ilustrativo não peça fundamentação lógica :)
		if(param instanceof User) { 
			((User) param).setDescription("Teste funcionou");
		}
		return param;
	}
}

No javascript:

AjaxFacade.teste(
	{
		id:42 //JSON que representa o objeto User,
		$dwrClassName:"User"
	}, 
	{
		callback:function(retorno) {
			alert(retorno.toSource());
		},
		errorHandler:function(error, message) {
			alert(message);
		}, 
		timeout:5000
	});

Agora aquelas centenas de classes que fazem a mesma coisa [CRUDzão velho de guerra] podem ser resumidas em uma única Facade que faz suas validações e aciona um Repository ou sua estrutura de persistência.

public class AjaxFacade {
	@Autowired Repository repository;
	public Object persistir(Object param) {
		if(param == null) ...
		repository.persist(param);
		return param;
	}
}

Agora não tem como não termos um Feliz Natal!

If you enjoyed this post, please consider leaving a comment or subscribing to the RSS feed to have future articles delivered to your feed reader.

Categories: Ajax, DWR, Frameworks, JSON, Java, JavaScript, Web Development ~ ~ Trackback


Assine os comentários deste artigo.


5 Responses to “DWR 3 Release Candidate 1”

  1. 1
    Rafael Ponte

    Muito bom Milfont!

    DWR é sem dúvida o melhor framework AJAX para Java hoje em dia. E eu realmente achei muito interessante essa feature, pois me desculpe, fazer cruds ninguém merece!

    Feliz Natal e que venha DWR3 com força total!

  2. 2
    Lilían

    Não entendi nada…
    Feliz natal!

  3. 3
    Silveira Neto

    Gostei, me pareceu ser bem fácil de usar.
    Feliz natal cara!

  4. 4
    Chris Benseler

    Concordo com o comment acima que fala que DWR é o melhor framework para requisições assíncronas em aplicações Java. Certamente ele é o que melhor abstraí o modelo de entidades da camada de negócios na apresentação!
    Trabalho diariamente com ele no meu job full-time, e escrevi uma biblioteca em PHP baseada no conceito do DWR! Se quiser conhecer…
    http://www.chrisb.com.br/blog/js-calls-php-biblioteca-que-possibilita-interacao-entre-javascript-e-php/

    Abraços!

  5. 5
    Extjs e DWR - CMilfont Tech

    [...] Para entender o {$dwrClassName:”Project”} visite esse post. [...]

Leave a Reply