O JSF é um Framework MVC para sistemas web baseado em componentes que auxilia bastante a construção de aplicações desse tipo com a tecnologia Java. Esses componentes são colocados em formulários de páginas e ligados a objetos Java de forma a prover suporte a várias características presentes no Framework, tais como: mecanismos de manipulação de eventos, validações de informações enviadas pelos clientes, navegação entre páginas, entre outras. Assim, com essa tecnologia torna-se mais fácil a construção de interfaces com o usuário pelo fato de o desenvolvedor poder implementar as aplicações simplesmente utilizando componentes visuais reusáveis.
Devido à existência destes componentes na interface, toda página JSF é um documento XML com namespaces, recurso utilizado para importar e possibilitar o uso de componentes HTML do JSF. Alguns exemplos de namespaces são: xmlns:h, xmlns:f e xmlns:ui.
A partir da declaração destes os componentes são utilizados na interface com o usuário e ligados a objetos Java – conhecidos como JavaBeans – através da utilização da tag <h:form/> e dos métodos get e set das classes. Dessa forma, os componentes de UI que serão vinculados às propriedades de um JavaBean devem, necessariamente, fazer parte de um formulário JSF, pois é através dele que o JSF envia e recebe dados do servidor. A seguir é apresentada a declaração da tag <h:form/>:
<h:form id="form1">
<!-- componentes JSF de interface com o usuário devem ser colocados aqui -->
</h:form>
No lado do servidor, cada JavaBean que tenha atributo vinculado a alguma página deve possuir a anotação @ManagedBean sobre o nome da classe, para que seja gerenciado pelo framework JSF e permita a ligação entre as regras de negócio da aplicação e a camada de visualização. Essa anotação possui ainda um atributo chamado name, não obrigatório, que representa o nome dado ao bean gerenciado. Ademais, para definir o ciclo de vida de cada um dos beans conforme a necessidade do projeto, é possível especificar o seu escopo fazendo uso de uma das anotações analisadas a seguir:
@ApplicationScoped: especifica que existirá somente uma instância da classe em toda a aplicação, ou seja, todos os usuários terão acesso à mesma instância;
@SessionScoped: garante a existência de uma instância para cada usuário que utiliza a aplicação;
@ViewScoped: relaciona a instância do bean gerenciado à página. Assim, enquanto essa página estiver sendo manipulada pelo usuário, o bean estará disponível;
@RequestScoped: garante que existirá uma instância pelo tempo de duração da requisição feita pelo usuário;
@NoneScoped: cada vez que houver uma chamada a uma propriedade ou método da classe bean, será criada uma nova instância. Neste caso a instância não terá ligação com qualquer escopo da aplicação;
@CustomScoped: essa anotação permite a criação de escopos personalizados. Para isso, a instância de uma classe bean é armazenada em uma interface do tipo java.util.Map <K,V> e disponibilizada para uma página ou um conjunto de páginas da aplicação.
Nenhum comentário:
Postar um comentário