JavaServer
Faces
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
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
▼ 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
Exemplo Aplicação JSF
Validações, Conversores, Eventos
Navegação TrocaBean - campo1: String - campo2: String + gets e sets... + inverte(): String P ág in a JS F B ac k in g B ea n
<%@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> w el co m eJ S 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.jspExemplo Aplicação JSF
Validações, Conversores, Eventos
Navegação TrocaBean - campo1: String - campo2: String + gets e sets... + inverte(): String B ac k in g B ea n P ág in a JS F
@ManagedBean @RequestScoped
public class TrocaBean {
private String campo1;
private String campo2;
//get e set …
public String inverte() { String temp = campo1; campo1 = campo2; campo2 = temp; return "/welcomeJSF.jsp"; } } T ro ca B ea n .j av a
Exemplo de Bean
método chamado por botão ou link que direciona a navegação
para mesma página atributos com get e set
usados na caixa de texto da Página JSF
...
<servletmapping> <servletname>Faces Servlet</servletname>
<urlpattern>/faces/*</urlpattern> </servletmapping> ... welcomeJSF.jsp componentes JSF faces/welcomeJSF.jsp Interpretada pelo Browser w eb .x m l Requisição feita para pagina gerada
Página gerada
Execução
=
JavaServer
Faces
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: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
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
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
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)
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.
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
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.
▼ 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> U I H T M L<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" />
<h:form>
<h:outputText value="digite aqui"/> <h:inputText value="#{bean.campo}"/> </h:form> U I H T M L <form ... digite aqui
<input type="text" name="j_id_id16:j_id_id20" /> ...</form>
<h:outputText>
<h:inputText>
▼ OutputText → Rótulo 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> U I H T M
L ...<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
▼ 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>
Outros Componentes
▼ <h:inputSecret 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?
▼ 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 ... } C ar ro .j av a U I H T M L <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 ... } C ar ro .j av a
Exemplo h:selectOneMenu
U I H T M L <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:
Arquivos .properties
informe=Informe seu Nome naoVazio=Nome não pode estar vazio. ok=OK ola=Olá ingles=English portugues=Português p t_ B R .p or p et ie s p t_ B R .p or p et ie s informe=Enter your name naoVazio=Name cannot be null. ok=OK ola=Hello ingles=English portugues=Português<application>
<resourcebundle>
<basename>mensagem.Mensagens</basename>
<var>msg</var>
</resourcebundle> <localeconfig>
<defaultlocale>pt_BR</defaultlocale>
<supportedlocale>en_US</supportedlocale>
<supportedlocale>pt_BR</supportedlocale>
</localeconfig> </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
fa ce s-co n fi g. xm l<application>
<resourcebundle>
<basename>mensagem.Mensagens</basename>
<var>msg</var>
</resourcebundle> <localeconfig>
<defaultlocale>pt_BR</defaultlocale>
<supportedlocale>en_US</supportedlocale>
<supportedlocale>pt_BR</supportedlocale>
</localeconfig> </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
fa ce s-co n fi 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}"/> ...
JavaServer
Faces
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 @RequestScoped
public 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"; } } B ea n .j av a
Exemplo
de Bean
método chamado por botão ou link que direciona a navegação
para mesma página atributos com get e set
usados 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
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.
JavaServer
Faces
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> fa ce s-co n fi g. xm l C la ss e T ro ca .j av a
<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> fa ce s-co n fi g. xm l
faces-config.xml
▼
Navegação condicionada ao retorno
JavaServer
Faces
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çõ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
<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}" >JavaServer
Faces
Prof. Enzo Seraphim
Face Bean Componentes Navegação Validação Ciclo JSF Exemplo JSF
Interação cliente aplicação
web
Request/ Requisição
Retaurar
Visão Aplicar ValoresRequisitados ValidaçõesProcessar
Response/
Resposta RenderizarResposta AplicaçãoInvocar Valores BeanAtualizar
▼ 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 ValoresRequisitados ValidaçõesProcessar
Response/
Resposta RenderizarResposta AplicaçãoInvocar Valores BeanAtualizar
▼ 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 ValoresRequisitados ValidaçõesProcessar
Response/
Resposta RenderizarResposta AplicaçãoInvocar Valores BeanAtualizar
▼ 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 ValoresRequisitados ValidaçõesProcessar
Response/
Resposta RenderizarResposta AplicaçãoInvocar Valores BeanAtualizar
▼ 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 ValoresRequisitados ValidaçõesProcessar
Response/
Resposta RenderizarResposta AplicaçãoInvocar Valores BeanAtualizar
▼ 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
Request/ Requisição
Retaurar
Visão Aplicar ValoresRequisitados ValidaçõesProcessar
Response/
Resposta RenderizarResposta AplicaçãoInvocar Valores BeanAtualizar
▼ 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
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
JavaServer
Faces
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 tags
web.xml
sun-web.xml
Bibliotecas
.jar Classes.class Arquivos.tag
Diretório Projeto Netbeans
br.edu.unifei.ecoe07.controle.dao br.edu.unifei.ecoe07.modelo FonteDados ClienteDao crud FilmeDao LocacaoDao 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
JavaServer
Faces
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.