[VRaptor] Melhor prática para enviar objetos do controller para a view

Amigos do fórum, usuários do VRaptor, por gentileza,

Estou em um debate com a equipe em que trabalho com VRaptor, sobre a forma como mandar objetos para a view, no caso de um único objeto. Como vocês preferem/costumam fazer?

Assim:

@Resource
public class Controller {

    public Tipo metodo() {
        return new Tipo();
    }
}

ou assim:

@Resource
public class Controller {
    private final Result;

    public class Controller(Result result) {
        this.result = result;
    }
    public void metodo() {
        result.include("tipo", new Tipo());
    }
}

Nas duas formas o acesso no jsp seria com ${tipo.algumaCoisa}

Nossos controllers estão nessa segunda abordagem, mas estamos pensando que a primeira facilitaria mais a escrita dos testes e o codigo ficaria ainda mais independente do VRaptor.

Como vocês fazem? Qual é a melhor prática nesse caso? Qual seria a convencão do framework?

Valeu!

Eu prefiro a segunda forma, por mais que atrapalhe nos testes.

A minha preferência se deu quando eu precisava controlar exceptions e era obrigado a retornar algo, ficando com return null no código…

[quote=Rafael Guerreiro]Eu prefiro a segunda forma, por mais que atrapalhe nos testes.

A minha preferência se deu quando eu precisava controlar exceptions e era obrigado a retornar algo, ficando com return null no código…[/quote]

Cara, bem observado…não ia ficar muito legal mesmo.

Um outro probleminha que vejo nessa abordagem de “return” é que ela só serve pra retornar um único objeto pra view, caso seja mais de um seria necessário usar o result.include. Meu receio é o código ficar meio despadronizado, com return em alguns lugares e result.include em outros…

Nesse caso o result.include ajuda a resolver… Isso não é um problema quando o objeto retornado tem a ver com o método em questão…

Por isso eu só uso o resul.include…

Nesse caso o result.include ajuda a resolver… Isso não é um problema quando o objeto retornado tem a ver com o método em questão…
[/quote]

Pois é…no caso de precisar fazer

result.include("x", new X()).include("y", new Y());

Não daria pra fazer com o return. Acho que ia ficar meio estranho mesmo…alguns lugares de um jeito, e outros controllers, de outro.

Mas como é que a equipe do VRaptor “encoraja” fazer?

Como eles encorajam, sinceramente, não sei.

Eu acho que isso é mais ao gosto do freguês…

Legal. Pra fins de padronização vou votar aqui pra mantermos o uso do Result mesmo…

Valeu Rafael, obrigado!

Eu encorajo usar aquilo que ficar mais claro :wink:

tipo um método “lista” que retorna uma List é bem claro… mas um método form que retorna uma lista de fabricantes que são usados para preencher combobox é meio estranho, melhor usar o result.include…

mas, em geral, costumo usar result.include sempre.

Legal…vamos manter o result.include por aqui.

Obrigado pessoal.