Esse página explica como o VRaptor interage com a camada de apresentação e como ele facilita o uso de engines de apresentação como JSP, Velocity e Freemaker.
Para colocar objetos num escopo nós os ejetamos.
VRaptor consegue ejetar objetos no escopo da lógica, requisição(padrão), sessão e aplicação.
O escopo da lógica é similar do PageScope na especificação JSP e Servlet. Requisição e sessão são exatamente o que nome significa. Também veja ScopeType.
Vamos procurar um usuário e ejetar o resultado ao escopo da requisição:
@Component("users") public class LoginLogic { private List<User> users; private String name; // alias o método para "search" @Logic("search") public void searchUsers(String name) { // dao esquisito, mas só um exemplo this.users = new UserDao().searchByName(name); } public List<User> getUsers() { return this.users. } }
Usamos o getter getUsers() para ejetar o atributo users ao escopo da requisição.
No exemplo acima, a linha seguinte é executada:
request.setAttribute("users", users);
Você também pode usar a anotação @Out para ejetar objetos.
@Out private List<User> users;
Isso ejeta o atributo users ao escopo da requisição.
Se quiser alterar o escopo, use:
@Out(scope=ScopeType.SESSION) private List<User> users;
Ejetamos o atributo users ao escopo da sessão.
Use:
@Out(scope=ScopeType.SESSION, key="USERS") private List<User> users;
se quiser ejetar o atributo users ao session scope com a chave USERS.
No exemplo acima, a linha seguinte é executada:
session.setAttribute("USERS", users);
Supondo que nós usamos a chave USERS e usando o método toString pelo EL:
<html> Aqui é a lista.toString: ${USERS}... Se quisesse, poderia usar forEach com a coleção ... </html>