Este guia rápido de introdução às ferramentas básicas do VRaptor 2, ele mostra como criar um componente básico de lógica de negócios.
Siga a instrução de instalação para fazer o VRaptor funcionar.
Nós vamos usar uma classe chamada Pessoa. Crie a seguinte classe:
package org.vraptor.exemplos.primeiro; public class Pessoa { private String nome; private String endereco; private Long numeroPreferido; // getters and setters @Override public String toString() { return "[Pessoa " + nome + "," + endereco + "," + numeroPreferido + "]"; } }
Vamos criar nosso primeiro componente e lógica de negócio: criando uma nova pessoa.
Crie uma classe chamada PessoaLogic no pacote logic.
Assim que nós lermos uma nova pessoa do request, vamos criar uma nova pessoa e um método que contenha nossa lógica de negócio.
package org.vraptor.exemplos.logic; public class PessoaLogic { public void adiciona(Pessoa pessoa) { System.out.println("Adicionando " + pessoa + " no banco de dados!"); } }
O parâmetro do tipo Pessoa será lido através da chave pessoa devido ao seu tipo e não através do nome da variável!
Se um parâmetro chamado pessoa.nome for encontrado no request, o método pessoa.setNome() será chamado usando o valor do parâmetro passado. O mesmo acontece com qualquer coisa que comece com pessoa (o nome do nosso campo).
Lembre-se de adicionar o arquivo jar do vraptor ao classpath do seu projeto!
package org.vraptor.exemplos.logic; public class PessoaLogic { public void adiciona(Pessoa pessoa) { System.out.println("Adicionando " + pessoa + " no banco de dados!"); } }
Agora vamos um passo à frente e configurar esta URL da lógica de negócio.
Vamos dar um nome à este componente (pessoa) e à lógica de negócio representada pelo método adiciona pelo adiciona.
Isso porque sua classe se chama PessoaLogic.
Isso significa que quando a url pessoa.adiciona.logic é chamada, nosso componente será instanciado, o campo pessoa preenchido com o parâmetro do request e depois o método adiciona é chamado.
package org.vraptor.exemplos.logic; import org.vraptor.annotations.Component; @Component public class PessoaLogic { public void adiciona(Pessoa pessoa) { System.out.println("Adicionando " + pessoa + " no banco de dados!"); } }
Agora que nós sabemos que nosso método será invocado, vamos pensar sobre o que deve ser mostrado como resultado. Desejamos mostrar em nosso jsp que aquele objeto 'pessoa' foi adicionado com sucesso.
Dependendo da implementação de mvc que a aplicação for baseada, isto é realizado configurando um atributo no request... diremos ao vraptor sobre nosso desejo de colocar no request o valor do campo pessoa usando o getter:
package org.vraptor.exemplos.logic; import org.vraptor.annotations.Component; import org.vraptor.annotations.Out; @Component public class PessoaLogic { private Pessoa pessoa; public void adiciona(Pessoa pessoa) { this.pessoa = pessoa; System.out.println("Adicionando " + pessoa + " no banco de dados!"); } public Pessoa getPessoa() { return this.pessoa; } }
Criamos o getter getPessoa(), assim o VRaptor faz o envio dessa pessoa para o request automaticamente.
Nós vamos usar o modelo padrão de redirecionamento: nomeDoComponente/NomeDaLogica.Resultado.jsp
Assim como o resultado padrão é ok nós criaremos um arquivo chamado: pessoa/adiciona.ok.jsp
Agora nós mostraremos o resultado usando aquele campo pessoa que foi colocado no request em um arquivo chamado sucesso.jsp
<html> Você criou uma nova pessoa chamada ${pessoa.nome}, que mora em ${pessoa.endereco} e o número preferido é ${pessoa.numeroPreferido}. </html>
Vamos criar um simples index.jsp que contenha o seguinte form:
<html> <form action="pessoa.adiciona.logic" method="get"> Nome: <input name="pessoa.nome"/><br/> Endereço: <input name="pessoa.endereco"/><br/> Número Preferido: <input name="pessoa.numeroPreferido"/><br/> <input type="submit"/> </form> </html>
Vamos agora criar o arquivo xml... a idéia é que você não precisa de um arquivo! O VRaptor buscará todas as classes anotadas com @Component no seu classpath e irá registrá-las automaticamente.
Então teremos a seguinte estrutura
|-pessoa | |--/adiciona.ok.jsp |-WEB-INF |--/web.xml |--/lib | |--/arquivos de jar |--/classes |--/arquivos das classes
Nome: Guilherme
Endereçãoo: Vergueiro
Número Preferido: 7
Volte ao início e olhe o código...sem configuração em xml?
Sua lógica de negócio é um simples POJO?
Você importou alguma coisa relacionada com javax.servlet? Algum HttpServletRequest?
Você teve que converter String em int?
Você escreveu algum arquivo XML horrível desumano, que só o computador lê?
Você configurou alguma visualização?
Nós realmente precisamos explicar o que foi configurado? Foi simples...