Desenvolvimento
baseado em
componentes com Java
Emmanuel Neri
www.emmanuelneri.com.br
@emanu_neri
JSF - Java Server Faces
● Análise e Desenvolvimento de Sistemas - Unipar
● Especialização em Engenharia de Software - PUCPR
● Mestrado em Desenvolvimento de Tecnologias - LACTEC
● Desenvolvedor Java desde 2010;
○ Morena Rosa, Michelin, Land Rover/Jaguar, Mercedes Benz
● Atualmente desenvolvedor Java na TecSinapse
● Pesquisador nas linhas de desenvolvimento de software e
arquitetura de software
Emmanuel Neri
● Introdução ao desenvolvimento web com
JSF
● Configurando ambientes Java com JSF
● Tags JSF e front-end JSF
● Templates reutilizáveis
● Escopos JSF e o lado servidor
● Conversão e validação de dados
● Ajax com JSF
● Componentes ricos
Cronograma
1. Slide com teoria
2. Demonstração do código
3. Prática
Metodologia
Desenvolvimento baseado em
componentes
“Unidade de software independente, que
encapsula, dentro de si, seu projeto e
implementação, e oferece serviços, por meio
de interfaces bem definidas, para o meio
externo.“
Desenvolvimento baseado em
componentes Web
Desenvolvimento baseado em
componentes
Benefícios Consequências
Reutilização de código Complexidade
Tempo(longo prazo) Tempo(curto prazo)
Maturidade
Framewoks de mercado
Component based Action based
JSF - Java Server Face
“JSF é uma tecnologia que nos permite criar
aplicações Java para Web utilizando
componentes visuais pré-prontos, de forma
que o desenvolvedor não se preocupe com
Javascript e HTML. Basta adicionarmos os
componentes (calendários, tabelas,
formulários) e eles serão renderizados e
exibidos em formato html.”
JSF - Java Server Face
● É um framework MVC
● Guarda estado
● Possui componentes prontos
● Faz o binding automatico dos atributos
● Faz parte do Java EE
● Possui compatibilidade entre versões
Java EE 7
MVC - Model View Controller
JSF - Como funciona
Frameworks de componentes
Configurações
● Java 7
● NetBeans
● Maven
● Tomcat 7
Configurando Projeto
● https://github.
com/emmanuelneri/minicursojsf-
projeto.git
● 10.2.2.254/Jornada
2015/Java/minicursojsf-projeto
JSF - Como funciona
● XHTML é HTML escrito como XML;
● XHTML significa Extensible HyperText Markup
Language;
● XHTML é quase idêntico ao HTML;
● XHTML é mais rigoroso do que o HTML;
● XHTML é HTML definido como um aplicativo XML;
● XHTML é suportado por todos os principais
navegadores
xhtml
Coding...
Prática
● Faça a página de boas vindas do seu
sistema.
Tags - xmlns:h="http://java.sun.com/jsf/html"
● h:form
● h:inputText
● h:outputText
● h:commandButton
● h:messages
● h:panelGrid
● etc...
Coding...
Prática
● Fazer uma nova página, que será o login do
sistema.
● Alterar no web.xml para ser a primeira tela
do sistema.
● O login deve redirecionar para o index.xhtml
Tags - xmlns:ui="http://java.sun.
com/jsf/facelets"
● ui:insert
● ui:define
● ui:include
● ui:define
● ui:param
Coding...
Prática
● Criar uma nova página de template com
nome do sistema e botão sair;
● O template deverá ter um menu com os links
Home e Sair;
● Ao clicar no sair deverá enviar para o login;
● Ao clicar em home deverá enviar para
página index.xhtml;
Tags - xmlns:f="http://java.sun.com/jsf/core"
● f:converterNumber
● f:converterDateTime
● f:validateLength
● f:validateLongRange
● etc...
Coding...
Prática
● Adicionar no template a data atual no
padrão dd/mm/yyyy.
JSF - Como funciona
Managed Bean / Controller - Escopos
● É uma classe java
● É o Controller do MVC
● @ManagedBean
Managed Bean / Controller
● Request
● View
● Session
● Application
Coding...
Ciclo de vida do JSF
Validadores
● Required
● MinLength
● MaxLength
● f:validateLength
● f:LongRangeValidator
Conversores
● f:convertNumber
● f:convertDateTime
Coding...
Prática
● Criar um cadastro de cliente com os
atributos código e nome;
● Validar os atributos para serem obrigatórios
e o atributo código apenas receber um Long;
● Criar uma tela de pedido e converter os
atributos data e valor total;
Injeção de Controllers
● @ManagedProperty
● A injeção é feita através de uma chamada
EL
● É necessário o set do atributo
Coding...
Prática
● Adicionar a lista de produtos e clientes
disponíveis no ClienteController e no
PedidoController através de DI no
PedidoController;
● Adicionar os atributos Cliente no Pedido;
● Adicionar o selectOneMenu na tela de
pedido;
Ajax
● JSF possui suporte nativo
● f:ajax
● No primefaces as ações de botões são por
padrão ajax
Coding...
Prática
● Criar uma classe ItemPedido com os
atributos Produto, Quantidade e valor;
● Adicionar uma Lista de ItemPedido no
Perido;
● Adicionar no pedido.xhml os novos atributos;
● Criar botão “Adicionar” e “Remover” que
joga os itens no pedido via ajax;
Componentes Ricos
● Primefaces;
● Facilidade;
● Funções javascripts;
● CSS;
Outros
● Listeners
● Passangem de Parâmetros
● Componentes customizados
Fim...
Emmanuel Neri
www.emmanuelneri.com.br
emmanuelnerisouza@gmail.com
@emanu_neri
github.com/emmanuelneri
https://github.com/emmanuelneri/minicursojsf

Desenvolvimento baseado em componentes com JSF