JSF - Unifei

Propaganda
JSF
Componentes
Face Bean
Navegação
Validação
JavaServer
Faces
Ciclo JSF
Prof. Enzo Seraphim
Exemplo
JSF (JavaServer Faces)
▼
▼
▼
É uma especificação Java e não um
produto proprietário
– Especificado pelo JCP 252
Define um modelo de programação
Orientado a componentes:
– Que gera HTML
– Componentes Reusáveis
– Baseada em factories
– Árvore de componentes (Composite)
– Eventos do lado do servidor
Objetivos
▼
▼
▼
▼
▼
▼
▼
▼
Gerência de estados dos componentes;
Tratamento de eventos;
Validação;
Conversão de dados;
Mapeamento das navegações entre
páginas;
Internacionalização, entre outros.
Simplificar o desenvolvimento
Fácil de estender
Papéis em aplicação JSF
▼
▼
▼
▼
Autor de páginas: Criador das páginas
utilizando as bibliotecas de tags do JSF;
Desenvolvedor de aplicação: Criador
de conversores, validadores, tratadores
de eventos e backing beans;
Autor de componentes: Criador de
componentes e renderizadores;
Arquiteto da aplicação: Configura toda
a aplicação; Define regras de navegação
entre páginas; Configura objetos
(conversores, validadores, etc);
Aplicação web JSF
▼
▼
▼
▼
Conjunto de páginas JSP (apresentação):
tags customizadas UI (user interface),
para representar objetos em uma página;
Conjunto de backing beans (JavaBeans):
objetos definem propriedades e métodos;
Conjunto de tags validadores,
conversores, ou tratadores de eventos;
Conjunto de navegação definidos para os
backing beans em arquivo de
configuração
Backing Bean
Página JSF
Exemplo Aplicação JSF
Validações, Conversores, Eventos
TrocaBean
- campo1: String
- campo2: String
+ gets e sets...
+ inverte(): String
Navegação
welcomeJSF.jsp
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%> <%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<f:view>
<h:form>
<html>
<body>
<fieldset>
<legend>Troca Exemplo</legend>
<label>Campo1: <h:inputText value="#{TrocaBean.campo1}" />
</label><br/>
<label>Campo2: <h:inputText value="#{TrocaBean.campo2}" />
</label><br/>
<h:commandButton value="inverte"
action="#{TrocaBean.inverte}" />
</fieldset>
</body>
</html>
</h:form>
</f:view>
Validação
welcomeJSF.jsp
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%> <%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
…
<h:outputText value="campo1:" />
<h:inputText id="campo1" value="#{TrocaBean.campo1}">
<f:validateLength maximum="15" minimum="6"/>
</h:inputText><br/>
<h:outputText value="campo1:" />
<h:inputText id="campo2" value="#{TrocaBean.campo2}">
<f:validateLength maximum="15" minimum="6"/>
</h:inputText>
<h:commandButton id="inverte" action="#{TrocaBean.inverte}" value="inverte" />
...
Backing Bean
Página JSF
Exemplo Aplicação JSF
Validações, Conversores, Eventos
TrocaBean
- campo1: String
- campo2: String
+ gets e sets...
+ inverte(): String
Navegação
TrocaBean.java
Exemplo de Bean
@ManagedBean
@RequestScoped
public class TrocaBean {
private String campo1;
private String campo2;
}
//get e set …
atributos com get e set
usados na caixa de
texto da Página JSF
public String inverte() {
String temp = campo1;
campo1 = campo2;
campo2 = temp;
return "/welcomeJSF.jsp";
}
método chamado por
botão ou link que
direciona a navegação
para mesma página
Execução
Requisição feita
para pagina gerada
welcomeJSF.jsp
componentes
JSF
web.xml
Página JSF com JSP
=
faces/welcomeJSF.jsp
Interpretada
pelo Browser
Página gerada
...
<servlet­mapping>
<servlet­name>Faces Servlet</servlet­name>
<url­pattern>/faces/*</url­pattern>
</servlet­mapping>
...
JSF
Componentes
Face Bean
Navegação
Validação
JavaServer
Faces
Ciclo JSF
Prof. Enzo Seraphim
Exemplo
Core JavaServer Faces
▼
Contém tags JSF independentes da
apresentação, tais como conversores e
validadores.
<%@taglib prefix="f"
uri="http://java.sun.com/jsf/core"%>
f:view
f:subview
f:facet
f:attribute
f:param
f:actionListener
f:valueChangeListener
f:setPropertyChangeListener
f:converter
f:convertDateTime
f:convertNumber
f:validator
f:validateDoubleRange
f:validateLength
f:validateLongRange
f:loadBundle
f:selectitems
f:selectitem
f:verbatim
Core JavaServer Faces
▼
<f:view>
– Cria uma view JSF.
– Container para todos os componentes
usados na página
– Cada página só pode ter uma única
view;
– Todos os componentes JavaServer
Faces devem ser aninhados a este
– 'Qualquer componente que fique fora
pode gerar um erro.
Core JavaServer Faces
▼
▼
▼
▼
▼
▼
▼
subview→Cria uma subview de uma view
attribute → Define um atributo
(chave/valor) ao componente pai mais
próximo
param → Permite definir parâmetros ao
componente
facet → Adiciona facet a um componente
actionListener → Adiciona um action
listener ao componente
setPropertyActionListener → Adiciona
action listener que define propriedade
valueChangeListener → Adiciona um
change Listerner de valor ao componente
Core JavaServer Faces
▼
▼
▼
▼
▼
▼
phaseListener → Adiciona um ouvidor
de fases ao componente
converter → Adiciona um conversor
arbitrário ao componente
convertDateTime → Adiciona um
conversor de data e hora ao componente
convertNumber → Adiciona um
conversor de números ao componente
validator → Adiciona um validador ao
componente
validateDoubleRange → Faz validação
de uma faixa de valores ao double
Core JavaServer Faces
▼
▼
▼
▼
▼
▼
validateLength → Faz a validação do
tamanho mínimo e máximo de caracteres
do valor de um componente
validateLongRange → Faz a validação
de uma faixa de valores inteiros
loadBundle → Carrega um arquivo de
recursos e armazena as propriedades
selectItems → Define os ítens para um
componente select one ou select many
selectItem → Define um ítem para um
componente select one ou select many
verbatim → Transforma texto contendo
marcação em um componente
UIComponent + HTML
RenderKit Renderer
▼
Classes de componentes que geram como
saída tags HTML
<%@taglib prefix="h"
uri="http://java.sun.com/jsf/html"%>
h:form
h:inputText
h:inputTextArea
h:inputSecret
h:inputHidden
h:outputLabel
h:outputLink
h:outputFormat
h:outputText
h:commandButton
h:commandLink
h:message
h:messages
h:selectOneListbox
h:selectOneMenu
h:selectOneRadio
h:selectBooleanCheckbox
h:selectManyCheckbox
h:selectManyListbox
h:selectManyMenu
h:panelGrid
h:panelGroup
h:dataTable
h:column
Tags JSF HTML
▼
▼
▼
▼
▼
▼
▼
h:form → Formulário HTML
h:inputText → Entrada de uma linha de
texto
h:inputTextArea → Entrada de várias
linhas de texto.
h:inputSecret → Entrada de Texto para
senha
h:inputHidden → Campos Escondido
h:outputLabel → Label para componente
(acessibilidade)
h:outputLink → Link em HTML.
Tags JSF HTML
▼
▼
▼
▼
▼
▼
h:outputFormat → Igual ao outputText,
mas com formatação
h:outputText → Saida de Texto única.
h:commandButton → Botões formulário:
submit, reset, or pushbutton.
h:commandLink → Link que atua com o
pushbutton.
h:message → Mostra a mensagem mias
recente para o componente.
h:messages → Mostra todas mensagens
Tags JSF HTML
▼
▼
▼
▼
▼
▼
▼
h:selectOneListbox → Lista de seleção
única.
h:selectOneMenu → Menu de seleção
única
h:selectOneRadio → Radio buttons.
h:selectBooleanCheckbox → Checkbox.
h:selectManyCheckbox → Lista de
Checkboxes.
h:selectManyListbox → Lista de seleção
multiplas
h:selectManyMenu → Menu com
muiltiplas seleções.
Tags JSF HTML
▼
▼
▼
▼
h:panelGrid → tabela HTML
h:panelGroup → Dois ou mais
componentes que são definidos como um
h:dataTable → Pode exibir objetos de
uma coleção ou de um vetor. Cada objeto
representa uma linha na tabela e as
colunas correspondem variáveis de
instância no objeto.
h:column → Coluna em uma dataTable
<h:form>
UI
▼
Representa a tag form do HTML;
Dentro do form, devem estar os componentes para entrada de dados, que serão posteriormente enviados
<h:form>
</h:form>
HTML
▼
<form id="j_id_id16" name="j_id_id16" method="post"
action="/WebApplication1/faces/welcomeJSF.jsp"
enctype="application/x-www-form-urlencoded">
<input type="hidden" name="j_id_id16" value="j_id_id16" />
<input type="hidden" name="javax.faces.ViewState"
id="javax.faces.ViewState" value="-9163228735902783129:
-7151430677457024184" autocomplete="off" />
</form>
<h:outputText>
<h:inputText>
UI
▼
OutputText → Rótulo texto
InputText → Caixa de entrada de texto
<h:form>
<h:outputText value="digite aqui"/>
<h:inputText value="#{bean.campo}"/>
</h:form>
<form ...
HTML
▼
digite aqui
<input type="text" name="j_id_id16:j_id_id20" />
...</form>
h:commandButton
UI
Define um botão com ação e a
navegação.
HTML
▼
<h:form>
<h:outputText value="digite aqui"/>
<h:inputText value="#{bean.campo}"/>
<h:commandButton value="Cadastrar"
action="#{bean.acao}" />
</h:form>
...
<input type="submit" name="j_id_id16:j_id_id22"
value="Cadastrar" />
...
Expressions Language
▼
▼
▼
#{bean.atributo}
#{bean.método}
Utilizada para acessar os backing beans:
– bean: o nome do face bean;
– atributo: a propriedade do bean
acessada pelos métodos set/get.
– método: método do bean que não
recebe parâmetro e retorna string
Exemplo EL
<h:form>
<h:outputText value="digite aqui"/>
<h:inputText value="#{bean.campo}"/>
<h:commandButton value="Cadastrar"
action="#{bean.acao}" />
</h:form>
▼
▼
componente inputText:
– chamará o método getNome() quando a
página for renderizada
– chamará o método setNome() quando a
página for submetida;
componente commandButton:
– chamará o método validar() quando a
página for submetida
Outros Componentes
▼
<h:inputSecret value="#{bean.campo}" />
▼
<h:inputTextarea value="#{bean.campo}" />
h:outputLink + h:outputText
<h:outputLink
value="http://www.meusite.com">
<f:param name="user" value="ze" />
<f:param name="pwd" value="123" />
<h:outputText value="Login" />
</h:outputLink>
<a href="http://www.meusite.com?
user=ze&pwd=123" id="link1">Login</a>
<h:selectOneMenu,
Radio,ListBox>
▼
▼
Representa uma caixa de seleção única
– value → pode ser um atributo do bean
f:selectItems permite manipular coleções
(list, set, map,array)
– value → coleção
– var → nome de variavel para itemValue
e itemLabel
– ItemLabel → rótulo (visível na lista)
– ItemValue → valor (passado para
atributo)
Exemplo h:selectOneMenu
private String [] cores =
{"branco","prata","vermelho","azul"};
private String cor = "";
//gets e sets ...
UI
}
<h:selectOneMenu value="#{carroBean.cor}">
<f:selectItems value="#{carroBean.cores}"/>
</h:selectOneMenu>
HTML
Carro.java
public class Bean {
<select id="cor" name="cor" size="1">
<option value="branco">branco</option>
<option value="prata">prata</option>
<option value="vermelho">vermelho</option>
< option value="azul">azul</option>
</select>
▼
▼
<h:selectManyCheckBox,
Menu,ListBox>
Representa uma caixa de seleção única
– value: pode ser um atributo do bean
f:selectItems permite manipular coleções
(list, set, map,array)
– value → coleção
– var → nome de variavel para itemValue
e itemLabel
– ItemLabel → rótulo (visível na lista)
– ItemValue → valor (passado para
atributo)
HTML
UI
Carro.java
Exemplo h:selectOneMenu
public class Bean {
private String [] cores =
{"branco","prata","vermelho","azul"};
private List<String> variasCores =
new ArrayList<String>();
//gets e sets ...
}
<h:selectManyMenu
value="#{carroBean.variasCores}">
<f:selectItems value="#{carroBean.cores}"
</h:selectOneMenu>
...
<input name="cor" id="cor:0" value=";@7683b1"
type="checkbox"/><label for="cor:0" class="">
branco</label>
<input name="cor" id="cor:1" value=";@7683b1"
type="checkbox"/><label for="cor:1" class="">
prata</label> ...
Internacionalização
▼
▼
Um recurso muito poderoso do JSF é a
internacionalização muito fácil de utilizar
As mensagens ficam gravadas em
arquivo de recursos chamado de
Resource Bundle;
– Arquivo de extensão .properties.
– Pacote próprio na aplicação
– Exemplo de nomes de arquivos:
Mensagens_pt_BR e Mensagens_en_US
pt_BR.porpeties
informe=Informe seu Nome
naoVazio=Nome não pode estar vazio.
ok=OK
ola=Olá
ingles=English
portugues=Português
pt_BR.porpeties
Arquivos .properties
informe=Enter your name
naoVazio=Name cannot be null.
ok=OK
ola=Hello
ingles=English
portugues=Português
ResourceBundle
▼
▼
▼
Tag application: Configurações gerais da
aplicação;
Tag resource-bundle: Configurações de
um resource bundle;
Tag base-name: nome base arq.recurso.
Tag var: variável visível nas páginas JSP.
faces-config.xml
▼
<application>
<resource­bundle>
<base­name>mensagem.Mensagens</base­name>
<var>msg</var>
</resource­bundle>
<locale­config>
<default­locale>pt_BR</default­locale>
<supported­locale>en_US</supported­locale>
<supported­locale>pt_BR</supported­locale>
</locale­config>
</application>
ResourceBundle
▼
▼
Tag locale-config: configura os idiomas
que podem ser usados na aplicação;
Tag default-locale: língua padrão da
aplicação;
Tag supported-locale: indica os idiomas
suportados pela aplicação.
faces-config.xml
▼
<application>
<resource­bundle>
<base­name>mensagem.Mensagens</base­name>
<var>msg</var>
</resource­bundle>
<locale­config>
<default­locale>pt_BR</default­locale>
<supported­locale>en_US</supported­locale>
<supported­locale>pt_BR</supported­locale>
</locale­config>
</application>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%> <%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<f:view>
<html>
<body>
<h:form>
<h:outputLabel for="itNome" value="#{msg.informe}"/>
<h:inputText id="itNome" value="#{nomeBean.nome}"
required="true" requiredMessage="#{msg.naoVazio}"/>
<h:message for="itNome"/><br/>
<h:commandButton id="ok" action="mensagem"
value="#{msg.ok}" />
</h:form>
</body>
</html>
</f:view>
...
<h:outputText value="#{mensagens.ola}, #{nomeBean.nome}"/>
...
JSF
Componentes
Face Bean
Navegação
Validação
JavaServer
Faces
Ciclo JSF
Prof. Enzo Seraphim
Exemplo
O que é ?
Bean.java
Atributos acessados pela
Expressions Language da
página JSF
Métodos invocados pela
página JSF
Exemplo
de Bean
EquacaoQuadratica
- a: float
- b: float
- c: float
- delta: float
+ gets e sets...
+ calcDelta(): String
@ManagedBean
@RequestScoped
Faces Annotations
public class EquacaoQuadratica {
Bean.java
private
private
private
private
float
float
float
float
a;
b;
b;
delta;
//get e set …
public String calcDelta() {
delta = b*b – 4*a*c;
return "/welcomeJSF.jsp";
}
}
atributos com get e set
usados na caixa de
texto da Página JSF
método chamado por
botão ou link que
direciona a navegação
para mesma página
Managed Bean
▼
Classes java que a principal
responsabilidade é intermediar a
comunicação entre as páginas
(componentes do JSF) e nosso modelo:
import javax.faces.bean.ManagedBean;
@ManagedBean
▼
Algumas responsabilidades são:
– Escutar eventos, processa-los e delegar
para a camada de negócios
Escopo Faces
▼
▼
▼
Um escopo dá um objeto num contexto
de ciclo de vida bem definido.
Um objeto de escopo podem ser criados
automaticamente quando ela é
necessária e automaticamente destruídas
quando o contexto no qual ele foi criado
finalizar.
Seu estado é automaticamente
compartilhada por todos os clientes que
executam no mesmo contexto.
Escopo Faces
▼
▼
@RequestScoped → Estado do Bean
renovado em a cada interação do usuário
com uma aplicação web (uma única
solicitação HTTP ao Bean). Instanciação
do Bean para toda requisição HTTP
@SessionScoped → Estado do Bean
compartilhado em várias solicitação
HTTP A interação do usuário com uma
aplicação web em várias solicitações
HTTP.
Escopo Faces
▼
▼
@ApplicationScoped → Estado do Bean
compartilhado entre todas as interações
dos usuários com uma aplicação web.
Uma única instanciação do Bean a partir
da instanciação
@ViewScoped → Estado do Bean
compartilhado compartilhado enquanto
não for requisitado a mesma página JSF.
Uma única instanciação do Bean até que
seja requisitada outra página.
JSF
Componentes
Face Bean
Navegação
Validação
JavaServer
Faces
Ciclo JSF
Prof. Enzo Seraphim
Exemplo
Navegação de Páginas
▼
A navegação de páginas em JSF é
baseado em regras de navegação:
–
Método do Managed Bean → não
contém parâmentros e que retorna
String define direção da navegação
–
faces-config.xml → Navegação
condicionada ao retorno do método do
bean
faces-config.xml
Classe Troca.java
Método do Managed Bean
public class Troca {
private String campo1;
private String campo2;
//gets e sets ...
public String inverte() {
String temp = campo1;
campo1 = campo2;
campo2 = temp;
return "sucesso";
}
}
<!DOCTYPE faces-config PUBLIC
"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
"http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
<faces-config>
<managed-bean>
<managed-bean-name>TrocaBean</managed-bean-name>
<managed-bean-class>Troca</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
</faces-config>
faces-config.xml
Navegação condicionada ao retorno
do método do bean
faces-config.xml
▼
<faces-config>
<!-- ... -->
<navigation-rule>
<description></description>
<from-view-id>/troca.jsp</from-view-id>
<navigation-case>
<description></description>
<from-outcome>sucesso</from-outcome>
<to-view-id>/trocaSucesso.jsp</to-view-id>
</navigation-case>
</navigation-rule>
<!-- ... -->
</faces-config>
JSF
Componentes
Face Bean
Navegação
Validação
JavaServer
Faces
Ciclo JSF
Prof. Enzo Seraphim
Exemplo
Validação e Converção
▼
▼
Validação e Tratamento de Erros
– JSF torna fácil a inclusão de validações
como: “valor requerido”, “valor deve ser
inteiro”
– Ao entrar com dados inválidos, faz-se
necessário mostrar os dados errados
– JSF trata da maior parte da tarefa tediosa
de converter dados e validar/tratar erros
Conversão de Dados
– Usuários entram dados em formato String
– Objetos de negócio necessitam de Strings,
inteiros, decimais e datas
– JSF faz a conversão automática dos dados
Validações
▼
▼
▼
▼
Validação Manual
– Métodos sets e gets
Validação Automática Implícita
– Adiciona required na entrada
– Usar h:message para informar erros
Validação automática explícita
– f:convertNumber, f:convertDateTme,
f:validateLength,f:validateDoubleRang
e, f:validateLongRange
Validadores customizáveis
– Herdam Validador, sobrescrevem o
validate e são registrados no
faces-config.xml
Validação Implícita
<h:form>
Cor:
<h:inputText value="#{carroBean.cor}"
required="true" requiredMessage=
"não pode ser vazio" id="cor"/>
<h:message for="cor" /><br />
<h:commandButton id="conectar"
action="teste.jsf" value="Conectar"/>
</h:form>
▼
<h:message for="campo1"/>
– Impressão de mensagens
– for: O id do campo do qual deseja-se
mostrar uma mensagem, possivelmente
de erro
Validação explícita
▼
Suporte validação de campos de entrada de forma declarativa
<h:inputText … >
<f:validate... ... \>
</h:inputText>
▼
Exemplos de validação:
<f:validateLongRange maximum="30" minimum="15"/>
<f:validateLength maximum="15" minimum="6"/>
<f:validateDoubleRange minimum="20.00"
maximum="1000.00" />
Exemplo de Validação
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%> <%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
…
<label>Campo1: <h:inputText id="campo1" value="#{TrocaBean.campo1}">
<f:validateLength maximum="15" minimum="6"/>
</h:inputText>
</label><br/>
<label>Campo2: <h:inputText id="campo2" value="#{TrocaBean.campo2}">
<f:validateLength maximum="15" minimum="6"/>
</h:inputText>
</label><br/>
<h:commandButton id="inverte" action="#{TrocaBean.inverte}" value="inverte" />
...
Converções
BigDecimalConverter
DoubleConverter
BigIntegerConverter
FloatConverter
BooleanConverter
IntegerConverter
ByteConverter
LongConverter
CharacterConverter
NumberConverter
DateTimeConverter
ShortConverte
<h:outputText value="#{bean.date}">
<f:convertDateTime dateStyle="full" />
</h:outputText>
<h:outputText value="#{bean.soma}" >
<f:convertNumber type="currency" </h:outputText>
JSF
Componentes
Face Bean
Navegação
Validação
JavaServer
Faces
Ciclo JSF
Prof. Enzo Seraphim
Exemplo
Interação cliente aplicação
web
Request/
Requisição
Retaurar
Visão
Aplicar Valores
Requisitados
Processar
Validações
Response/
Resposta
Renderizar
Resposta
Invocar
Aplicação
Atualizar
Valores Bean
▼
▼
▼
Esta fase inicia o processamento da
requisição do ciclo de vida por meio da
construção da árvore de componentes do
JSF.
Cada árvore de componentes possui um
identificador único durante todo o
aplicativo.
O JSF constrói a apresentação da página e
salva na instância FacesContext para
processamento das fases seguintes.
Request/
Requisição
Retaurar
Visão
Aplicar Valores
Requisitados
Processar
Validações
Response/
Resposta
Renderizar
Resposta
Invocar
Aplicação
Atualizar
Valores Bean
▼
Nesta fase, quaisquer novos valores
inseridos são extraídos e armazenados por
seus apropriados componentes. Se o valor
do componente não for uma String, então
ele é convertido para o seu determinado
tipo. Se a conversão falhar, ocorrem
diversas situações:
– Uma mensagem de erro é gerada e
associada com o componente;
– Uma mensagem de erro é armazenada no
FacesContext que depois será mostrada
pelas fases posteriores
Request/
Requisição
Retaurar
Visão
Aplicar Valores
Requisitados
Processar
Validações
Response/
Resposta
Renderizar
Resposta
Invocar
Aplicação
Atualizar
Valores Bean
▼
▼
▼
Nesta fase de processo de validações, os
componentes serão validados
Um componente que necessita de validação
deve fornecer a implementação da lógica de
validação.
Por exemplo, na idade podemos determinar
um valor mínimo e máximo a ser digitado. O
valor requisitado é um inteiro (verificado na
fase anterior) e, como passou pela fase 2,
nessa fase pode ser barrado por estar além
do determinado (com uma idade mínima ou
máxima diferente da estipulada).
Request/
Requisição
Retaurar
Visão
Aplicar Valores
Requisitados
Processar
Validações
Response/
Resposta
Renderizar
Resposta
Invocar
Aplicação
Atualizar
Valores Bean
▼
▼
▼
Nesta fase são atualizados os dados do
modelo do aplicativo.
Durante esta fase a informação digitada é
armazenada no Managed Bean .
Por ter passado pelo processo de validação,
temos garantias que o valor armazenado
será garantido nessa fase. Entretanto, os
dados podem violar a lógica de negócios, ao
qual a validação ocorre na fase seguinte.
Request/
Requisição
Retaurar
Visão
Aplicar Valores
Requisitados
Processar
Validações
Response/
Resposta
Renderizar
Resposta
Invocar
Aplicação
Atualizar
Valores Bean
▼
▼
Durante esta fase, a implementação JSF
manipula quaisquer eventos do aplicativo,
tal como enviar um formulário ou ir a outra
página através de um link.
Estes eventos são ações que retornam
geralmente uma string que está associada a
uma navegação no qual se encarrega de
chamar a página.
Request/
Requisição
Retaurar
Visão
Aplicar Valores
Requisitados
Processar
Validações
Response/
Resposta
Renderizar
Resposta
Invocar
Aplicação
Atualizar
Valores Bean
▼
▼
▼
Esta é a fase final, ao qual é renderizada a
página.
Se este é um pedido inicial para esta página,
os componentes são acrescentados à
apresentação neste momento.
Se este é um postback, os componentes já
foram acrescidos à apresentação. Se há
mensagens de conversão ou erros de
validação e a página contém um ou mais
componentes <mensage /> ou um
componente <messages />, estes serão
exibidos.
Conceitos importantes
▼
▼
▼
▼
View → Uma página JSP que é requisitada em JSF.
Component Tree → Uma View em JSF é árvore de
componentes, tais como o form, as inputTexts, botões e
links. Esses objetos são organizados em uma árvore,
com base na hierarquia da página HTML.
View Root → Cada árvore de componentes está
enraizada a um objeto UIViewRoot.
View Identifier → Cada View de componente de árvore
tem um ID único. Quando utilizando JSPs e
mapeamento de prefixo, esta é a parte da URL entre o
prefixo e a seqüência de consulta.
URL= http://localhost/myapp/faces/admin/usuario.jsf
ID=/admin/usuario.jsp
Conceitos importantes
▼
▼
▼
Identificador de Componente → Este é o valor
atribuído ao atributo id para a tag de um componente. O
id do componente deve ser único no seu contêiner de
nomeação. Caso contrário a exceção duplicate id é
lançada.
Nomeação do contêiner → Um contêiner serve como
um espaço para os componentes.
Identificador de cliente → É identificador de um
componente no cliente que é composto por nomes de
recipiente id e id do componente, delimitado por dois
pontos.
Conceitos importantes
▼
▼
▼
▼
Faces Context → descreve o ambiente de execução da
requisição em andamento. Define ou recuperar a raiz da
View atual afetando assim a View que será exibida para
o usuário
Converter → Converte o valor String na entrada do
componente que apresentou o valor do atributo para o
tipo de dados apropriado para o componente de valor
presente.
Validator → Aplica-se a regras de validação o valor
convertido para um componente.
FacesMessage → Representa uma mensagem que
precisa ser exibido para o usuário. O FacesContext
mantém uma fila de mensagem que contém as
mensagens de uma determinada visão.
JSF
Componentes
Face Bean
Navegação
Validação
JavaServer
Faces
Ciclo JSF
Prof. Enzo Seraphim
Exemplo
Diretório Projeto Netbeans
raiz
setup
web
web-inf
src
páginas
conf
test
java
.jsp, .html
classes
web.xml
lib
classes
tags
sun-web.xml
Bibliotecas
.jar
Classes
.class
Arquivos
.tag
.java
br.edu.unifei.ecoe07.controle.faces
ClienteBean
LocacaoBean
FilmeBean
:EntityManager
:ClienteDao
:Cliente
:EntityManager
:LocacaoDao/:Locacao
:FilmeDao/:Filme
:ClienteDao/:Cliente
:EntityManager
:FilmeDao
:Filme
br.edu.unifei.ecoe07.modelo
FonteDados
ClienteDao
LocacaoDao
FilmeDao
crud
crud
crud
br.edu.unifei.ecoe07.controle.dao
Cliente
-login:String
-cpf:String
-nome:String
*
Locacao
-id:int
-locacao:Calendar
-devolucao:Calendar
1
Filme
-codigo:int
-nome:String
Os logotipos, marcas
comerciais e nomes de
produtos citados nesta
publicação tem apenas
o propósitos de
identificação e podem
ser marcas registradas
de suas respectivas
companhias.
JavaServer
Faces
Prof. Enzo Seraphim
Download