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 classesNome: 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...