Olá desenvolvedores, neste tutorial falaremos sobre o escopo do ManagedBean, a anotação @ViewScoped, cuja instância permanece ativa até que o usuário navegue para uma próxima página.

No tutorial “ESCOPO DO MANAGEDBEAN: REQUEST SCOPE” vimos que o ciclo de vida da anotação @RequestScoped é de apenas uma submissão. Em outras palavras significa que o ciclo de vida é encerrado tão logo o servidor envia a resposta de uma requisição HTTP. Assim, tem-se que a utilização de um request scope é recomendada, para, por exemplo, na realização de um cadastro. Neste caso, uma vez armazenado os dados, o ciclo de vida daquela sessão poderá ser encerrado. 

No entanto, se os dados precisam ser mantidos em tela, certamente o request scope não é a melhor opção. É neste contexto que o view scope se insere como a escolha recomendada. Uma vez que com esta anotação os dados são mantidos durante quantas requisições forem necessárias, desde que todas sejam realizadas para a mesma view.

CONTEXTO DA APLICAÇÃO

Considere uma aplicação simples onde temos um campo inputText para que o usuário adicione um nome qualquer e um commandButton representando um parâmetro de ação para a chamada do método addNome() que adicionará o nome a uma lista. Lista esta que deverá ser exibida na mesma tela de cadastro.

Os nomes que serão adicionados à lista serão exibidos na página por meio de um dataTable que varre a lista de nomes, e os adiciona a variável “nome”. Esta variável será a responsável por exibir em uma coluna – column, o valor da variável, isto é, o nome adicionado no campo inputText. O componente utilizado para exibir o nome na coluna é o outputText.

BOAS PRÁTICAS

É uma boa prática que você adquira o hábito de limpar os dados em cache do projeto, com o objetivo de forçar o carregamento da versão mais recente da aplicação. Esta prática nos permite limpar os dados temporários ou que permaneceram de uma implementação anterior e que podem implicar no não funcionamento correto do seu sistema.

Desse modo, para limpar os dados da memória de um dado projeto, com ele selecionado clique no menu Project >> Clean… Selecione novamente o projeto e clique em “OK”. Publique e start o projeto.

ANOTAÇÃO @VIEWSCOPED

Assim, para resolver a questão e conseguirmos “segurar” os dados em tela na mesma página, utilizaremos a anotação @ViewScoped. E veja que com a alteração de uma simples anotação, poderemos mudar todo o contexto de um sistema e/ou funcionalidade. Ou ainda, como que apenas utilizando o escopo correto, podemos alcançar este ou aquele resultado.

EM POUCAS PALAVRAS

Neste tutorial você pode observar o poder do escopo do ManagedBean. Alterando apenas o escopo temos que todo o comportamento da tela é alterado. Este é também um dos motivos pelos quais o ManagedBean é chamado de controlador, porque ele que delega funções a camada View, atente-se, neste caso estamos nos referindo a camada de visão da arquitetura MVC – Model-View-Controller.