2. Conteúdos
● Introdução ao Desenvolvimento RAD para WEB
● Desenvolvimento Action Based e Component Based
● Introdução a framework Component-Based JSF 2.2
● Managed Bean
● Escopo Managed Bean
● Ciclo de vida
● Converter
● Integração com Spring-boot
3. Conteúdos
● Validation
● Framework de componentes ricos
● Facelets
● Templates
● Aumentando a produtividade com a criação de
componentes em JSF
11. Evolução Java para web
● Servlet
○ 2.X e 3.X
● JSP – Java Server Pages
○ 1.X e 2.X
● JSTL – JSP Standard Tag Library
● Frameworks
○ Component Based
○ Action Based
12. Frameworks - web
● Surgiram para trazer produtividade no
desenvolvimento de software web
● Component Based
○ Simplicidade no desenvolvimento e aprendizado;
○ Conjunto de componentes visuais. Semelhante ao
que acontece no desktop;
○ Diminui as preocupações com a parte visual;
○ Exige pouco conhecimento de html+css+javascript
inicialmente
13. Servidor de Aplicação JEE
● Download do JEE ????
● Precisamos de uma implementação JEE
○ Glassfish
○ Jboss
○ Apache Geronimo
○ IBM Websphere Application Server
○ WebLogic Application Server
15. Servlet Container
● Precisamos de um servidor de aplicativo
grande e pesado?
● Um Servlet Container suporta quase tudo
que precisamos para o desenvolvimento
web, mas não o JEE completo;
○ JSP
○ Servlets
○ JSTL
○ JSF
19. JSF
● API Java Server Faces;
● Interface padrão de desenvolvimento web Java;
● Modelo de interfaces baseada em eventos e
componentes;
● Framework MVC (Model-View-Controller);
21. Conceitos Principais JSF
● Componentes
● Renderers
● Managed-Beans
● Ciclo de vida (Request Lifecycle)
● Converter/Validators
● Navegação
● Eventos
22. Componentes
● Separa lógica de negócio da apresentação;
● Toda view possui uma hierarquia de
componentes;
Client Side h:form
h:input h:input h:input
Server Side
23. Componentes
● Os componentes são expressos em tags e uma pagina
JSP e em sua maioria são de interface com o usuário;
● Os componentes padrões são divididos em dois grupos:
● Faces Core: <f:view>, <f:loadBundle>, <f:param>
● HTML wrappers: <h:dataTabe>, <h:inputText>
● Componente = class + renderer + tag handler (JSP)
24. Primeiros passos
● Criar um projeto web que seja um
.war
● Adicionar a lib para jsf
● Configurar o web.xml
● Criar um arquivo faces-config.xml
● Criar uma página de index
25. Criar projeto web
● Criar projeto web utilizando maven e eclipse:
○ File->new->maven project
35. Executando a aplicação
● Aplicação será executada no wildfly 10
○ Prática: Configurar e executar
36. HTML wrappers - JSF
● Comando
○ h:commandButton: Botão de submissão
de formulário
○ h:commandLink: Link com ação
● Dados
○ h:dataTable: Tabela associada a dados
● Imagens
○ h:graphicImage: Uma imagem
37. HTML wrappers - JSF
● Mensagens
○ h:message: mensagens para um componente
especifico
○ h:messages: mensagens globais da página
● Entrada de dados
○ h:inputHidden: Campo oculto
○ h:inputText: Campo simples para entrada de dados
○ h:inputSecret: Campo para senha
○ h:inputTextArea: Campo texto para entrada de
dados
● Seleção verdadeiro ou falso
○ h:selectBooleanCheckbox: Campo de marcação
verdadeiro ou falso
38. HTML wrappers - JSF
● Saída de dados
○ h:outputFormat: Texto formatado
○ h:outputLabel: Rotulo de campo
○ h:outputLink: Link sem ação
○ h:outputText: Texto simples
● Painel
○ h:panelGrid: Tabela para campos
○ h:panelGroup: Agrupador de
componentes para aplicar formatação ou
alimentamento
39. HTML wrappers - JSF
● Seleção única
○ h:SelectOneRadio: grupo de botões de radio
○ h:SelectOneListbox: lista de seleção única
○ h:SelectOneMenu: combobox de seleção única
● Seleção múltipla
○ h:SelectManyCheckbox: checkboxes agrupados
○ h:SelectManyListbox: lista de seleção múltipla
○ h:SelectManyMenu: lista de seleção múltipla
40. Faces Core
● f:view: Elemento raiz da árvore de
componentes
● f:ajax: Injeta comportamento ajax em
qualquer componente html
● f:selectItem: Representa um item de uma
lista ou combo
● f:selectItems: Representa a coleção de itens
de uma lista ou combo
● f:converter: Converto objeto java em texto e
vice-versa
41. Propriedades comuns
Propriedade Tipo Valor Default Obrigatório
id String Não tem sim
value Object Não tem sim
rendered Boolean True não
converter Converter Não tem não
sytleClass String Não tem não
binding String Não tem não
42. Todos componentes + exemplos
● Links com documentação para API Padrão JSF
● http://docs.oracle.com/javaee/7/tutorial/doc/jsf-intro.htm#BNAPH
● https://javaserverfaces.java.net/nonav/docs/2.2/javadocs/index.html
● http://www.jsftoolbox.com/documentation/help/12-TagReference/core/inde
x.jsf
43. Renderers
● Responsável por exibir o componente no
cliente
● Efetua enconde de HTML e decode em
String do form enviado
46. Managed Beans
● Classe POJO com uma anotação
@ManagedBean
● Não esquecer dos get e set para os
atributos;
47. JSF Value Binding
● Vincular valores do componente ao
Managed-bean;
● A vinculação é feita através de
EL(Expression Language)
● Sintaxe: #{ }
● Pode executar métodos ou acessar
atributos;
● Pode ser criado comandos condicionais;
50. Managed Beans - Escopo
● Request: @RequestScoped;
○ Novos dados a cada requisição;
● Session: @SessionScoped;
○ Criada uma sessão para o usuário dados finalizados
só quando a sessão for encerrada;
● Application: @ApplicationScoped;
○ Dados compartilhados por todos os usuários;
● View: @ViewScoped;
○ Dados presentes enquanto estiver na mesma
página
● Flow: @FlowScoped
○ Dados podem ser passado de página por página
como um wizard
51. Managed Beans - Init, Destroy
● Interagindo na construção e destruição dos
ManagedBeans
● @PostConstruct
○ É executado logo após a construção do MB
○ Sempre deve ser adicionado logo acima de
um método
● @PreDestroy
○ É executado pouco antes do MB sair do
contêiner
○ Sempre deve ser adicionado logo acima de
um método
52. Face Messages
● Classe do JSF responsável por enviar
mensagens ao componente <h:message> da
página JSF.
1 - Contexto web;
2 - Objeto de mensagem onde podemos indicar a Severidade da
mensagem, o resumo e os detalhes;
3 - Adiciona a mensagem no contexto, para um id especifico ou para null.
62. Ciclo de vida JSF
● Objeto Lifecycle contrala o ciclo de vida do JSF
● 6 fases
http://www.edsongoncalves.com.br/2010/02/21/javaserver-faces-2-0-na-pratica-parte-3/
65. Restaura Visão (Restore View)
restaura ou cria no servidor a árvore de
componentes em memória para
representar a interface com o usuário.
Ciclo de Vida
77. Ciclo de vida JSF
● Nem toda requisição passa por todas etapas;
● Interceptamos uma das fase implementando a
interface javax.faces.event.PhaseListener
● Os método afterPhase(), beforePhase() e
getPhaseId(), estão disponíveis para interceptar
o ciclo de vida
● Deve ser registrado no faces-config.xml o
Listener criado
80. Converters
● Tem por finalidade converter objetos Java em
String e vice-versa;
● Converters são bidirecionais:
○ Managed-bean faz: getAsObject()
○ JSF faz: getAsString()
● Tipos padrões Java já possuem converters
padrões;
● O converter pode ser implícito(class) ou
explícito(id)
83. Validatores
● Utilizados para validar o valor de um
campo;
● Retornam um FacesMessage com o erro;
● Existem 3 maneiras de fazer validação de
campo:
○ Validadores padrões JSF
○ Bean Validation
○ Validadores personalizados do JSF
85. Bean Validation
● Especificação definida pela JSR303
● É necessária uma implementação para ser utilizada
● Utiliza annotation para registrar as regras de validação
● Possibilita fazer validações em qualquer camada da
aplicação
● Deve ser escrita de preferência nas classes do modelo
87. Validadores personalizados do JSF
● Criar uma classe que implementa uma
interface de validação
● Será utilizado somente no JSF e deve ser
invocado explicitamente no arquivo .xhtml
89. Prática
Criar Validatores utilizando Bean Validation
e Validadores Personalizados JSF;
Criar converter para as classes do nosso
projeto;
Criar algumas telas de cadastro;
90. Ajax
● Asynchronous Javascript and XML
● Um conjunto de tecnologias:
○ HTML
○ DOM
○ XHTML
○ CSS
○ XML
○ XSLT
○ XMLHttpRequest
○ JavaScript
91. Ajax
● Foi batizado em 2005 pela publicação do
artigo “Ajax: A New Approach to Web
Application” Escrito por Jossé James Garret
● Ajax pode ser usado com Java, Php, Ruby,
etc..
● Ajax = Javascript rodando no browse e se
comunicando com o servidor
94. Por que usar AJAX
● Respostas mais rápidas;
● Economia na banda do servidor;
● Maior interatividade;
95. Ajax no JSF 2.0
O que vai enviar ao servidor
@form, @all, @this,
ou id de um componente
Id do componente a ser atualizado com o
retorno do servidor.
Pode ser usado @all, @this, @form
Evento a ser
executado o
AJAX
101. Primefaces - Temas
Para configurar um tema basta adicionar o
jar do tema desejado e configurar o web.xml
http://www.primefaces.org/themes.html
<context-param>
<param-name>primefaces.THEME</param-name>
<param-value>cupertino</param-value>
</context-param>
105. Prática
Construir as telas de cadastro utilizando os
componentes do primefaces;
Criar alguns componentes autocomplete;
106. Internacionalização
● JSF 2 fornece duas maneiras de
internacionalização
○ faces-config.xml
○ tag Core <f:loadBundle>
● Após configurado é possível pegar através
de uma chave um valor adicionado em um
arquivo texto de mensagens.
109. Internacionalização
● Padrão do arquivo de mensagens:
○ Respeitar o nome que foi adicionado na
configuração;
○ O arquivo é composto por key=value
110. Internacionalização
● Para utilizar a chave do arquivo basta,
chamar a variável(msg) configurada no XML
(ponto) nome da chave;
<h:outputLabel value="#{msg.tituloUF}"/>