javaserver faces - seraphim.unifei.edu.br · jsf (javaserver faces) É uma especificação java e...

71
JavaServer Faces Prof. Enzo Seraphim Face Bean Componentes Navegação Validação Ciclo JSF Exemplo JSF

Upload: phungmien

Post on 13-Nov-2018

267 views

Category:

Documents


0 download

TRANSCRIPT

JavaServerFaces

Prof. Enzo Seraphim

Face Bean

Componentes

Navegação

Validação

Ciclo JSF

Exemplo

JSF

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);

▼ 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

Aplicação web JSF

Exemplo Aplicação JSF

Validações, Conversores, Eventos

Navegação

TrocaBean

- campo1: String- campo2: String

+ gets e sets...+ inverte(): String

Pág

ina

JSF

Bac

kin

g B

ean

<%@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>

wel

com

eJS

F.js

p

<%@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" />...

Validação

welcomeJSF.jsp

Exemplo Aplicação JSF

Validações, Conversores, Eventos

Navegação

TrocaBean

- campo1: String- campo2: String

+ gets e sets...+ inverte(): StringB

ack

ing

Bea

nP

ágin

a JS

F

@ManagedBean@RequestScopedpublic class TrocaBean { private String campo1; private String campo2;

//get e set …

public String inverte() { String temp = campo1; campo1 = campo2; campo2 = temp; return "/welcomeJSF.jsp"; }}

Tro

caB

ean

.jav

a

Exemplo de Bean

método chamado porbotão ou link que

direciona a navegação para mesma página

atributos com get e setusados na caixa de texto da Página JSF

...<servlet­mapping> <servlet­name>Faces Servlet</servlet­name> <url­pattern>/faces/*</url­pattern></servlet­mapping>...

welcomeJSF.jsp

componentesJSF

faces/welcomeJSF.jsp

Interpretadapelo Browser

web

.xm

l

Requisição feita para pagina gerada

Página gerada

Execução

=Página JSF com JSP

JavaServerFaces

Prof. Enzo Seraphim

Face Bean

Componentes

Navegação

Validação

Ciclo JSF

Exemplo

JSF

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:viewf:subviewf:facetf:attributef:paramf:actionListenerf:valueChangeListener

f:setPropertyChangeListenerf:converterf:convertDateTimef:convertNumberf:validatorf:validateDoubleRangef:validateLength

f:validateLongRangef:loadBundlef:selectitemsf:selectitemf: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:formh:inputTexth:inputTextAreah:inputSecreth:inputHiddenh:outputLabelh:outputLinkh:outputFormat

h:outputTexth:commandButtonh:commandLinkh:messageh:messagesh:selectOneListboxh:selectOneMenuh:selectOneRadio

h:selectBooleanCheckboxh:selectManyCheckboxh:selectManyListboxh:selectManyMenuh:panelGridh:panelGrouph:dataTableh: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

▼ 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>

</h:form>

UI

HT

ML

<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:form> <h:outputText value="digite aqui"/> <h:inputText value="#{bean.campo}"/></h:form>

UI

HT

ML

<form ...

digite aqui<input type="text" name="j_id_id16:j_id_id20" />

...</form>

<h:outputText><h:inputText>

▼ OutputText → Rótulo texto▼ InputText → Caixa de entrada de texto

h:commandButton ▼ Define um botão com ação e a

navegação.

<h:form> <h:outputText value="digite aqui"/> <h:inputText value="#{bean.campo}"/> <h:commandButton value="Cadastrar" action="#{bean.acao}" /></h:form>

UI

HT

ML

...<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

▼ 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

<h:form> <h:outputText value="digite aqui"/> <h:inputText value="#{bean.campo}"/> <h:commandButton value="Cadastrar" action="#{bean.acao}" /></h:form>

Exemplo EL

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>

▼ 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)

<h:selectOneMenu,Radio,ListBox>

public class Bean {

private String [] cores = {"branco","prata","vermelho","azul"};

private String cor = ""; //gets e sets ... }

Car

ro.j

ava

UI

HT

ML

<h:selectOneMenu value="#{carroBean.cor}"> <f:selectItems value="#{carroBean.cores}"/></h:selectOneMenu>

<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>

Exemplo h:selectOneMenu

▼ 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)

<h:selectManyCheckBox,Menu,ListBox>

public class Bean { private String [] cores = {"branco","prata","vermelho","azul"};

private List<String> variasCores = new ArrayList<String>(); //gets e sets ... }

Car

ro.j

ava

Exemplo h:selectOneMenu

UI

HT

ML

<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

Arquivos .properties

informe=Informe seu NomenaoVazio=Nome não pode estar vazio.ok=OKola=Oláingles=Englishportugues=Portuguêsp

t_B

R.p

orp

etie

sp

t_B

R.p

orp

etie

s informe=Enter your namenaoVazio=Name cannot be null.ok=OKola=Helloingles=Englishportugues=Português

<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>

▼ 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.

ResourceBundle

face

s-co

nfi

g.xm

l

<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>

▼ 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.

ResourceBundle

face

s-co

nfi

g.xm

l

<%@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}"/>...

JavaServerFaces

Prof. Enzo Seraphim

Face Bean

Componentes

Navegação

Validação

Ciclo JSF

Exemplo

JSF

O que é ?

Bean.java

Atributos acessados pela Expressions Language da página JSF

Métodos invocados pela página JSF

@ManagedBean@RequestScopedpublic class EquacaoQuadratica { private float a; private float b; private float b; private float delta;

//get e set …

public String calcDelta() { delta = b*b – 4*a*c; return "/welcomeJSF.jsp"; }}

Bea

n.j

ava

Exemplo de Bean

método chamado porbotão ou link que

direciona a navegação para mesma página

atributos com get e setusados na caixa de texto da Página JSF

EquacaoQuadratica

- a: float- b: float- c: float- delta: float

+ gets e sets...+ calcDelta(): String

Faces Annotations

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.

JavaServerFaces

Prof. Enzo Seraphim

Face Bean

Componentes

Navegação

Validação

Ciclo JSF

Exemplo

JSF

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

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>

face

s-co

nfi

g.xm

lC

lass

e T

roca

.jav

a

Método do Managed Bean

<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>

face

s-co

nfi

g.xm

l

faces-config.xml▼ Navegação condicionada ao retorno

do método do bean

JavaServerFaces

Prof. Enzo Seraphim

Face Bean

Componentes

Navegação

Validação

Ciclo JSF

Exemplo

JSF

▼ 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ção e Converção

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:validateDoubleRange, f:validateLongRange

▼ Validadores customizáveis– Herdam Validador, sobrescrevem o

validate e são registrados no faces-config.xml

<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>

Validação Implícita

▼ <h:message for="campo1"/>– Impressão de mensagens – for: O id do campo do qual deseja-se

mostrar uma mensagem, possivelmente de erro

▼ 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" />

Validação explícita

<%@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" />...

Exemplo de Validação

Converções

BigDecimalConverter

BigIntegerConverter

BooleanConverter

ByteConverter

CharacterConverter

DateTimeConverter

DoubleConverter

FloatConverter

IntegerConverter

LongConverter

NumberConverter

ShortConverte

<h:outputText value="#{bean.date}">

<f:convertDateTime dateStyle="full" /> </h:outputText>

<h:outputText value="#{bean.soma}" >

<f:convertNumber type="currency" </h:outputText>

JavaServerFaces

Prof. Enzo Seraphim

Face Bean

Componentes

Navegação

Validação

Ciclo JSF

Exemplo

JSF

Interação cliente aplicação web

Request/Requisição

RetaurarVisão

Aplicar ValoresRequisitados

ProcessarValidações

Response/Resposta

RenderizarResposta

InvocarAplicação

AtualizarValores 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

RetaurarVisão

Aplicar ValoresRequisitados

ProcessarValidações

Response/Resposta

RenderizarResposta

InvocarAplicação

AtualizarValores 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

RetaurarVisão

Aplicar ValoresRequisitados

ProcessarValidações

Response/Resposta

RenderizarResposta

InvocarAplicação

AtualizarValores 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

RetaurarVisão

Aplicar ValoresRequisitados

ProcessarValidações

Response/Resposta

RenderizarResposta

InvocarAplicação

AtualizarValores 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

RetaurarVisão

Aplicar ValoresRequisitados

ProcessarValidações

Response/Resposta

RenderizarResposta

InvocarAplicação

AtualizarValores 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

RetaurarVisão

Aplicar ValoresRequisitados

ProcessarValidações

Response/Resposta

RenderizarResposta

InvocarAplicação

AtualizarValores 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.

JavaServerFaces

Prof. Enzo Seraphim

Face Bean

Componentes

Navegação

Validação

Ciclo JSF

Exemplo

JSF

raiz

web src test

conf java

classes.java

web-inf páginas.jsp, .html

lib classes tagsweb.xmlsun-web.xml

Bibliotecas.jar

Classes.class

Arquivos.tag

Diretório Projeto Netbeans

setup

br.edu.unifei.ecoe07.controle.dao

br.edu.unifei.ecoe07.modelo

FonteDados ClienteDao

crud

FilmeDaoLocacaoDao

crud crud

Cliente

-login:String-cpf:String-nome:String

Locacao

-id:int-locacao:Calendar-devolucao:Calendar

Filme

-codigo:int-nome:String

* 1

br.edu.unifei.ecoe07.controle.faces

ClienteBean

:EntityManager:ClienteDao:Cliente

:EntityManager:LocacaoDao/:Locacao:FilmeDao/:Filme:ClienteDao/:Cliente

LocacaoBean FilmeBean

:EntityManager:FilmeDao:Filme

JavaServerFaces

Prof. Enzo Seraphim

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.