Pessoal seguinte, estou fazendo um sisteminha com o VRaptor e não estou conseguindo entender como o VRaptor trabalha com o SessionScoped.
Ao fazer o login, percebo que o usuario permanece logado entre as requisições (SessionScoped), mas não consegui descobrir como o VRaptor inclui a variavel para ser utilizada nos JSPs.
No meu UsersController:
@Get
@Path("/users/login")
public void login() { }
@Post
@Path("/users/validateLogin")
public void validateLogin(User user) {
User validUser = this.userDao.login(user);
if (validUser == null) {
this.validator.add(new ValidationMessage("Email e/ou senha inválido(s)", "user.login"));
}
this.validator.onErrorUse(Results.page()).of(UsersController.class).login();
this.currentUser.login(validUser);
result.redirectTo(UsersController.class).users();
}
Ai beleza, o usuario acessa o form de Login, envia o email/senha, ela é validada no UserDao e adicionada ao UserSession:
@Component
@SessionScoped
public class UserSession {
private User currentUser;
public void login(User user) {
this.currentUser = user;
}
public boolean isLogged() {
return this.currentUser != null;
}
}
No UsersController eu recebo o UserSession no construtor atras das injeção de dependencia, funciona belezinha:
public UsersController(UserDao dao, Result result, Validator validator, UserSession currentUser) {
this.result = result;
this.userDao = dao;
this.validator = validator;
this.currentUser = currentUser;
}
Porém, em qualquer URI de users que eu acesso, no jsp eu não consigo acessar a variavel currentUser a menos que eu inclua ela explicitamente com result.include.
A duvida é, este é o prodecimento desejado? Tenho que ficar adicionando currentUser manualmente em todos os metodos? Não existe uma forma do VRaptor injetar essa variavel pra mim nos JSPs?
