Hierarquia de Pasta no VRaptor

Bom pessoal, boa noite,

       Gostaria de saber se possivel aplicar um hierarquia de pasta no VRaptor, por exemplo, por padrão o nome da pasta que é criada dentro do JSP é o mesmo nome para o controle PastaController, exemplo, pasta index o controller tem que ser IndexController, bom eu gostaria de montar um nova estrutura de pasta no meu projeto quer seria o seguinte :

/admin/usuario (Criar um pasta admin e dentro dela uma pasta usuario);

para acessar o index de /admin/index, eu deveria criar um AdminController com o metodo index(), e anota-lo com @GET("/admin/"), sei que consigo acessar o jsp numa boa, mas desejo criar um controller para usuario e acessar a pasta dentro de admin, teria como que criar um metodo no UsuarioController (pos exemplo, form()) e acessar dentro da pasta /admin/usuario/form, ou teria que criar o metodo form() para manipular o meu usuario no AdminController?

flw

Olá,

Use isso : result.forwardTo("/WEB-INF/templates/suaPasta/suaSubPasta/seutemplate.jsp");

abraço!

então teria que criar por exemplo em AdminController() um metodo usuario usando @Get(/usuario/form) na sua anotação, e dentro deste metodo criar um result.forwardTo("/WEB-INF/templates/suaPasta/suaSubPasta/seutemplate.jsp") ?

Flw

Não precisa, somente da um foward que ele irá encontrar seu template, essa é a forma quando se sai da convenção!

abraço!

ok, agora entendi, valeu mesmo

se vc quer fazer isso em um lugar só, esse forward é ok… se vc quiser fazer isso em vários lugares, é melhor sobrescrever a convenção do VRaptor: o PathResolver:

http://vraptor.caelum.com.br/pt/docs/sobrescrevendo-as-convencoes-e-comportamento-do-vraptor/

ele tem métodos que te deixam extrair o nome do controller… assim ao invés de retornar “usuarios”, vc pode colocar “/admin/usuarios” se o controller estiver no pacote admin (ou algo do tipo)

Bom o que eu desejo criar duas forma de acesso uma sendo /public e outra /admin, onde a formar /public o usuario navegue sem uso de login e a outra seria a /admin onde criaria uma outra pasta dentro da pasta admin (por exemplo, /user, por questão de organização) … e setar o login e senha para /admin e tambem facilitar a organizar do themplate pelo sistemesh

Estou tentando fazer isso aqui

Na class do AdminController


@Resource
public class AdminController {
	
	private Result result;
	
	public AdminController(Result result) {
		this.result = result;
	}
	
	@Get("/admin/")
	public void index(){}
	
	@Get("/admin/usuario/form")
	public void usuario(){
		result.forwardTo(UsuarioController.class).form();
	}

Na minha class UsuarioControlle()

package br.com.agenciaweb.controller;
 
import br.com.agenciaweb.modelo.Usuario;
import br.com.agenciaweb.repository.UsuarioRepository;
import br.com.caelum.vraptor.Get;
import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;

@Resource
public class UsuarioController {
	
	private Result result;
	private UsuarioRepository repository;
	
	public UsuarioController(Result result, UsuarioRepository repository) {
		this.result = result;
		this.repository = repository;
	}
		
	@Get("/usuario/form")
	public void form(){}
	
	@Post("/usuario")
	public void salvar(Usuario usuario){
		usuario = this.repository.save(usuario);
		this.result.include("message", "Cadastro realizado com sucesso ....").redirectTo(this).listar();
	}
	
	@Get("/usuario/listar")
	public void listar(){
		result.include("message","listar usuario");
	}
}

de arcodo mmaico usando result.forwardTo resolveria, mais apanhei para saber que tinha que deixar na mesma estrutura hierarquia da pasta /admin, ou seja, as pasta teria que ficar:

/jsp
  /admin
   /usuario

para o metodo da minha funciona-se, por favor se estiver errado me corrijam, pois a forma que tentando aki,

vou analisar esta outra aki tambem e tentar fazer, mais teria com ajudar na questão de dividir as forma de acesso, a minha duvida esta nesse processo

o controle de acesso não precisa ser necessariamente pela URL, vc pode fazer isso do lado dos controllers (ex criando uma anotação pra definir o que precisa de login)

se vc faz:

result.forwardTo(UsuarioController.class).form(); 

não importa aonde esteja ele vai por padrão pra: /WEB-INF/jsp/usuario/form.jsp, a menos que o método form mude isso ( ou que vc sobrescreva o PathResolver)

entendi, mais sobre o sistema de login, vc falar sobre os interceptadores, se anotar na meus controller que serão bloqueadas por exemplo AdminController, UsuarioController a anotação @Permission(TipoPerfil.ADMINISTRADOR), ira bloquer o acesso?

não a anotação sozinha, mas sim, um interceptor que le a anotação e verifica permissão.

Então, vou continuar o meu projeto aqui, valeu pelas dicas muito obrigado mesmo