VRaptor3 - getter para camada de apresentação e @Out [Resolvido]

Olá pessoal,

Estou tentando reescrever uma pequena aplicação de VRaptor2 para VRaptor3 e estou tendo duas dificuldades:

  1. No VRaptor2 uso getters para enviar classes para minha camada de apresentação e nos meus testes com VRaptor3 não funcionou.

  2. No VRaptor2 uso @Out para enviar um atributo para a Sessão, no VRaptor3 não consegui que a anotação funcionasse:

	@Out(scope = ScopeType.SESSION)
	public Usuario getUsuario() {
		return usuario;
	}

Alguem sabe se houve alguma alteração no VRaptor3 ou se deveria estar funcionando?

Obrigado.

Olá Lagaffe,

no Vraptor 3, não é esse o jeito de expor objetos pra camada de visualização… a anotação @Out não funciona

o que você deve fazer:

se sua lógica só for retornar um objeto, basta usar o retorno da função:

public Resultado minhaLogica() {
    //,,,
   return resultado;
}

se for mais de um, você deve receber no construtor da sua lógica um objeto do tipo Result do vraptor:

public MeuController(Result result) {
   this.result = result
}

public void minhaLogica() {
    //,,,
    this.result.include("nomeQueVoceQuerUsar", objetoQueVoceQuerMandar);
}

para colocar objetos na sessão, basta criar componentes no escopo de sessão: http://vraptor.caelum.com.br/htmlflat/documentacao/componentes/

Lucas, obrigado pelas dicas.

A minha lógica só retorna um List de objetos. O retorno de função não funcionou, mas com o objeto Result do VRaptor funcionou perfeitamente.

Em relação ao envio de objetos na sessão, não consegui fazer funcionar. Já fiz várias tentativas, mas nada! Você teria mais alguma dica ou algum outro lugar para poder consultar?

Obrigado.

Olá

se sua lógica retorna um List o nome do atributo na view é clientList,
se for List é carroList, e assim por diante…

quanto a colocar o usuario na sessão, dá uma olhada nessa classe:

é só você receber SessionUser no construtor do seu controller

[]'s

Preferia a anotação @Out desse jeito está parecendo servlet. O VRaptor 3 parece bem inspirado no Mentawai. Mas a questão das URIs ficou maravilhoso.

Obrigado.

Funcionou!

Só uma informação para quem estiver lendo: usar o import:

e não o: import org.vraptor.annotations.Component;

GouverMXT, realmente a anotação @Out era muito simples de se usar. Mas tenho a impressão de que o código do controller fica melhor agora.