Olá desenvolvedores, neste tutorial falaremos sobre o backing bean que pode, entre outras definições, ser considerado uma espécie de “servlet de alto nível”. Entretanto, originalmente o backing bean é uma classe Java que responde a pedidos e gera o estado dos componentes JSF.
Em “JSF: CRIANDO O PRIMEIRO MANAGEDBEAN” vimos que o ManagedBean é um controlador que se comporta como uma classe Java Bean delegando funções a camada View. Onde a camada View é referente a arquitetura MVC – Model-View-Controller. E podemos observar por meio das anotações dos escopos do Managed Beans como este controle é feito.
O ManagedBean, é um tipo de Backing beans, o mais comum. No entanto, especificamente o Backing beans cumpre também a função de, entre várias outras, fazer a ligação entre a camada de serviços que pode, por exemplo, ser um banco de dados, e um servidor.
Uma aplicação JSF – JavaServer Faces pode incluir um ou mais backing beans, cada um dos quais é um tipo de bean gerenciado e que pode ser associado aos componentes usados em uma página específica.
ENTENDENDO O BACKING BEANS
Quando falamos especificamente do Backing beans, estamos neste contexto nos referindo aos objetos. Todo componente JSF é um objeto. Dessa forma, todos os componentes de uma página XHTML, tem uma respectiva classe em Java.
Assim, se de um lado, no Front-end temos os componentes JSF, temos do outro lado no back-end um objeto que referencia cada um destes componentes. Dessa forma, os Backing beans, por meio do ManagedBen conseguem chamar os Objetos JSF e fazer, desse modo, uma ligação com estes objetos diretamente na tela.
Porque em suma, ou controlamos a tela por meio do ManagedBean ou utilizando os atributos HTML dentro de uma página XHTML. Ou ainda, podemos fazer a combinação dos dois recursos, utilizando-os conforme for conveniente, objetivando um melhor desempenho da aplicação.
ATRIBUTO BINDING
A função do atributo binding é ligar o valor de uma expressão de um componente JSF a um backing Bean, em outras palavras a um objeto Java. Assim, todas as alterações implementadas no objeto Java, refletirão de forma automática na página JSF, o no componente bean de apoio.
O JSF traz, por exemplo, o componente commandButton que implementa um botão que pode vir a disparar uma ação chamando, por exemplo, um método. Na classe Java podemos declarar o commandButton, e do mesmo modo como fazemos com qualquer atributo, definir os métodos Getter and Setter.
private HTMLCommandButton commandButton;
Na página XHTML, utilizando linguagem de expressão JSF “amarramos” o componente commandButton a um backing bean. Isso quer dizer que agora temos a possibilidade de trabalhar o componente também do lado do servidor, no back-end.
Um exemplo do que podemos fazer é a implementação de uma condição onde, o botão será desabilitado se a lista contiver mais de três nomes. Para este fim, utilizaremos a anotação @ViewScoped. E claro, a condição deverá ser implementada dentro do método já existente que adiciona um nome a lista.
Após a implementação do método, observe abaixo o botão desabilitado depois que o quarto nome foi inserido.
EM POUCAS PALAVRAS
Assim, com o backing bens podemos fazer uma referência ao componente do JSF no back-end e assim controlar o objeto. Não é uma prática comum, mas resguardadas as devidas proporções ela pode ser, em um dado momento, útil, dependendo do nível de complexidade da sua aplicação.