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>