VRaptor Controller

7 respostas
italoborges

Pessoal, sou iniciante e tenho a seguinte dúvida:

Tenho as seguintes sessões por exemplo:

  • Produtos

    • Lista
    • Remove
    • Adiciona
  • Usuários

    • Lista
    • Remove
    • Adiciona
  • Categorias

    • Lista

Se através dá url eu precisar acessar /produtos, /usuarios, /categorias, eu terei que ter um controller para cada um destes?
(ProdutosController, UsuariosController, CategoriasController)

E dentro deles eu precisaria criar os @Path para acessar os métodos de lista, remove, adiciona.

É isso?

Valeu!

7 Respostas

Rafael_Guerreiro

É isso mesmo…

lembrando que cada um dele precisa ter a sua respectiva JSP.

PS: É ideal que o seu controller seja nomeado no singular: ProdutoController.

É bem legal também, evidar redundâncias:

public class Produto{
   private Long produtoId; //FEIO
   private Long id; // Legal...
}

E isso vale para qualquer classe de todo o seu sistema:

public void ProdutoDAO{
   public void salvarProduto(Produto produto){} // FEIO
   public void save(Produto obj){} // Legal...
}

Depois você pode até olhar em como criar classes genéricas, e se as suas classes não estiverem redundantes e tiverem um padrão, você poderá facilmente implementar o Generic…

italoborges

Valeu Rafael.

Outra coisa, eu quero que minha index seja a página de login, ou seja, quando eu entrar em meusite.com ele caia em login. Pode ser no “/” ou no “/login”.
Como eu poderia fazer isso?

Rafael_Guerreiro

Dá uma olhada no que eu escrevi no primeiro post (Eu editei la.)

para poder fazer isso, basta você criar um controller com um método anotado com @Path("/")

Qual versão do VRaptor que você está usando? Você já viu sobre as anotações @Get e @Post?

italoborges

Vi aqui, vou implementar desta forma e ver o que acontece.

Estou usando o VRaptor 3.4.1
Fiz uns exemplos da Caelum que usei @Post, @Get, @Delete, etc. Deu para entender bem os exemplos.
Obrigado!

Rafael_Guerreiro

Pois então, ao invés de fazer:

@Get
@Path("/path")
public void action(){
}

Você pode fazer:

@Get("/path")
public void action(){
}

Dá na mesma, o código fica menor e mais limpo. Funciona também com @Post, @Put, @Delete

Lucas_Cavalcanti

se quiser mais de uma url pro mesmo método pode fazer:

@Get({"/", "/login"})

mesma coisa pra as outras anotações.

italoborges

Com as duas últimas respostas, consegui fazer funcionar da forma que eu queria!

Muito obrigado! :slight_smile:

Criado 23 de maio de 2012
Ultima resposta 23 de mai. de 2012
Respostas 7
Participantes 3