Olá pessoal, neste tutorial falaremos sobre escopo padrão dos Managed Beans, Request Scope cujo ciclo de vida curto se deve ao fato de que ele sobrevive a apenas um ciclo de submissão. Onde a interação com a aplicação web é realizada em uma única solicitação HTTP e depois em encerrada.
Sobre os escopos do ManagedBean, para uma aplicação web usar um objeto bean que injeta outra classe de bean, o bean precisa ser capaz de manter o estado durante a interação do usuário com o aplicativo. Ao longo de uma série de tutoriais iremos na prática implementar os principais escopos e entender como interagem com a aplicação. Mas hoje nos concentraremos no @RequestScoped.
CONTEXTO DA APLICAÇÃO
Temos implementada uma aplicação muito simples onde há um campo inputText para que o usuário adicione um nome. E um commandButton representando um parâmetro de ação para a chamada do método addNome() que adicionará o método a uma lista.
Os nomes adicionados à lista serão exibidos na página por meio de uma dataTable que varre a lista de nomes, e os adiciona a uma variável “nome”. Esta variável é a que será a responsável por exibir em uma coluna o valor da variável, isto é, o nome por meio de um outputText.
Lembrando que todos estes componentes, inputText, commandButton, dataTable e outputText integram a biblioteca de componentes nativos do JSF – JavaServer Faces.
EXIBINDO O RESULTADO
Observe que a aplicação que acabamos de implementar está funcionado corretamente. Entretanto, observe que se você adicionar um segundo nome ele irá sobrescrever o nome “Fernando”, quando na verdade eles deveriam ser exibidos como em uma lista.
Acontece que como estamos utilizando um escopo de requisição o ciclo de vida curto será apenas de um ciclo de submissão. Em outras palavras significa que ele é iniciado quando uma requisição HTTP (ao servidor) é realizada, terminando quando a resposta é enviada de volta ao cliente.
Assim, o servidor envia a resposta de volta ao navegador e o ciclo de vida do Bean termina. Grosso modo, ele é descartado bem como todo seu conteúdo e dessa forma não é possível obter os dados da requisição anterior.
EM POUCAS PALAVRAS
Então quando podemos usar o request scope? A utilização de um escopo de requisição é recomendada, para, por exemplo, na realização de um cadastro. Neste caso, uma vez armazenado os dados, o ciclo de vida daquela sessão é encerrado. Mas para casos em que precisamos manter os dados em tela, esta não é a anotação indicada.