Camada de Apresentação com
    Java Server Faces 2.0




Bruno Nascimento, Paulo Neto, Kawe Ramon
Java EE
O      Java EE (Java Enterprise Edition)
    consiste de uma série de especificações
    bem detalhadas, dando uma receita de
    como deve ser implementado um software
    que atenda a todos os requisitos de
    infraestrutura estabelecidos.
Java EE

•É uma plataforma de programação para
  servidores em Java

•Era inicialmente conhecida por J2EE

•Atualmente está na versão 6
ALGUMAS ESPECIFICAÇÕES DO
            JAVA EE
•Java Server Pages (JSP), Java Servlets, Java
  Server Faces (JSF)

•Enterprise Javabeans Components (EJB) e Java
  Persistence API (JPA)

•Java Transaction API (JTA)

•Java Message Service (JMS)
O que é Java Server Faces?


Principais VANTAGENS:

•   Complexas Interfaces = Simples
    Componentes;

•   Manipulação de eventos simplificada;

•   Validação e Conversão na própria View;
O que é Java Server Faces?

Principais DESVANTAGENS:

•   Falta de Transparência;

•   As requisições estarem amarradas ao
    método POST, não sendo possível usar
    GET, PUT, DELETE .
Histórico do JSF


•   JSF 1.0 (11 Março 2004) - Lançamento
    Inicial;

•   JSF 1.1(27 Maio 2004) - Melhorias no
    Desempenho;

•   JSF 1.2 (11 Maio 2006) - Suporta a Servlet
    2.3 3 JSP, EL, Suporte a
    Ajax, configurações XML e novas
JSF – Java Server Faces
•O Java Server Faces é o framework Web
  mais usado em aplicações Web
  complexas em Java.

•JSF é uma tecnologia da camada de
  apresentação
JSF – Java Server Faces
•   Sua arquitetura de componentes aliada a
    integração com outras ferramentas do
    mercado Java EE fazem o sucesso dessa
    especificação.

•   E com sua última versão 2.0, o JSF
    ganhou       mais simplicidade   e
    produtividade.
Tags JSF Core

A biblioteca de tags JSF Core contém
 elementos action que representam
 artefatos JSF que são independentes da
 linguagem de marcação, tais como
 conversores e validadores.
Tags JSF Core

Esta biblioteca é importada para suas
 páginas xhtml por meio da seguinte
 declaração:
    <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:c="http://java.sun.com/jstl/core"
       xmlns:f="http://java.sun.com/jsf/core"
       xmlns:h="http://java.sun.com/jsf/html"
       xmlns:ui="http://java.sun.com/jsf/facelets">
Tags JSF Core
Ciclo de Vida de uma requisição
JSF
Restore View
•   Recupera a visão de acordo com a URL
•   Se for uma chamada inicial, apenas cria um
    componente UIViewRoot e repassa à fase 6
•   Sendo uma chamada subsequente, carrega
    o UIViewRoot existente e repassa para a
    fase 2.
Apply Request Values
•   Carrega parâmetros, cookies e cabeçalhos
    HTTP nos componentes da view escolhida
    na etapa anterior
•   Realiza a conversão e validação de objetos
    UIIunput marcados como immediate
•   Requisições disparadas por campos
    immediate são desviadas para a fase 6.
Process Validations
•   Realiza as validações dos campos UIInput
•   Em caso de falhas de validação de algum
    campo, a mensagem será adicionada ao
    objeto FacesContext e o fluxo será desviado
    para a fase 6
•   Os valores são avaliados de acordo com as
    regras de validação da aplicação
Update Model Values
•   Nesta fase, todos os dados da entrada são
    considerados válidos
•   Atualiza o managed bean com os valores
    dos componentes da view chamando
    conversores quando necessário
•   Se houver alguma falha na conversão de
    algum valor, o fluxo será desviado para a
    etapa 6
Invoke Application
•   Fase onde o método referente ao action de
    um UICommand é executado
•   Se retornar uma string esta será
    considerada o nome de alguma view a ser
    renderizada
•   Se retornar void, a view solicitada será
    renderizada
•   O valor do componente sempre será
    convertido, validado e aplicado aos objetos
    de modelo
Render Response
•   Renderiza a view escolhida pelo usuário ou
    retornada na fase 5
•   Salva o estado da UIViewRoot associada à
    view
•   Se alguns componentes da página tem seu
    atributo setado como immediate, então as
    validações, conversões e eventos
    associados a estes componentes serão
    processados
Managed Beans
•   Classe que expõe objetos de negócio para a
    camada de apresentação
•   São registrados no faces.config.xml
•   Objetos que sofrerão alterações em seus
    atributos durante uma requisição.
•   Serão utilizados na camada de
    apresentação através da Expression
    Language
•   Form Beans são injetados por setters dentro
    do seu próprio Bean
Expression Language
•   Poderosa linguagem de expressão
    (linguagem de navegação) para acessar
    propriedades dos beans e coleções
•   Quando ocorrer uma requisição pelo
    browser é preenchido dinamicamente pelos
    elementos da página pela camada de
    negócio
•   Quando a página for submetida, ocorre a
    modificação no estado da camada de
    negócio
Adicionando JSF 2.0 na camada de
    Apresentação com Spring Roo
Para exemplificar, vamos criar a Entidade
 Aluno com a seguinte estrutura:




Assumindo que o projeto já esteja criado, e que as
  configurações de persistência já foram feitas, digite os
  seguintes comandos:
entity jpa --class ~.modelo.Aluno --testAutomatically false
field string --fieldName nome --notNull
field string --fieldName matricula --notNull
Adicionando JSF 2.0 na camada de
   Apresentação com Spring Roo
Com estes comandos, o Spring Roo irá gerar a
 seguinte classe:
Adicionando JSF 2.0 na camada de
    Apresentação com Spring Roo
Com a nossa Entidade definida, vamos agora adicionar
  o JSF 2.0 para a camada de Apresentação, digite os
  seguintes comandos:

web jsf setup --implementation ORACLE_MOJARRA --library
  PRIMEFACES --theme VADER


O comando web jsf setup pode ser executado tantas vezes quanto
  você quiser mudar a implementação JSF e o tema.


O comando --implementation quando especificado, permite escolher
  asimplementações Mojarra Oracle ou Apache MyFaces JSF.
Adicionando JSF 2.0 na camada de
    Apresentação com Spring Roo
web jsf setup --implementation   ORACLE_MOJARRA     --library
  PRIMEFACES --theme VADER


O comando --library tem apenas um valor selecionável, sendo
  PRIMEFACES.


O comando --theme permite que você selecione um dos 30 temas
  PrimeFaces para sua interface.
Adicionando JSF 2.0 na camada de
    Apresentação com Spring Roo
Comando:
web jsf all --package ~.web


O comando web jsf all cria os managed beans e conversores para
  todas as entidades do pacote especificado. A página XHTML
  também é criada no diretório src / main / webapp / diretório páginas
  para cada entidade.
Adicionando JSF 2.0 na camada de
   Apresentação com Spring Roo
Para executar com o servidor de aplicação
 Jetty, pelo terminal, vá até a raiz do projeto e
 digite:
mvn jetty:run-exploded
Adicionando JSF 2.0 na camada de
   Apresentação com Spring Roo
Quando o servidor terminar de ser iniciado, no
  browser acesse o endereço:
http://localhost:8080/NomeDaSuaAplicacao/
Adicionando JSF 2.0 na camada de
   Apresentação com Spring Roo
O que o Spring Roo fez?

localhost:8080/ApresentacaoJSF

Apresentação jsf 2.0

  • 1.
    Camada de Apresentaçãocom Java Server Faces 2.0 Bruno Nascimento, Paulo Neto, Kawe Ramon
  • 2.
    Java EE O Java EE (Java Enterprise Edition) consiste de uma série de especificações bem detalhadas, dando uma receita de como deve ser implementado um software que atenda a todos os requisitos de infraestrutura estabelecidos.
  • 3.
    Java EE •É umaplataforma de programação para servidores em Java •Era inicialmente conhecida por J2EE •Atualmente está na versão 6
  • 4.
    ALGUMAS ESPECIFICAÇÕES DO JAVA EE •Java Server Pages (JSP), Java Servlets, Java Server Faces (JSF) •Enterprise Javabeans Components (EJB) e Java Persistence API (JPA) •Java Transaction API (JTA) •Java Message Service (JMS)
  • 5.
    O que éJava Server Faces? Principais VANTAGENS: • Complexas Interfaces = Simples Componentes; • Manipulação de eventos simplificada; • Validação e Conversão na própria View;
  • 6.
    O que éJava Server Faces? Principais DESVANTAGENS: • Falta de Transparência; • As requisições estarem amarradas ao método POST, não sendo possível usar GET, PUT, DELETE .
  • 7.
    Histórico do JSF • JSF 1.0 (11 Março 2004) - Lançamento Inicial; • JSF 1.1(27 Maio 2004) - Melhorias no Desempenho; • JSF 1.2 (11 Maio 2006) - Suporta a Servlet 2.3 3 JSP, EL, Suporte a Ajax, configurações XML e novas
  • 8.
    JSF – JavaServer Faces •O Java Server Faces é o framework Web mais usado em aplicações Web complexas em Java. •JSF é uma tecnologia da camada de apresentação
  • 9.
    JSF – JavaServer Faces • Sua arquitetura de componentes aliada a integração com outras ferramentas do mercado Java EE fazem o sucesso dessa especificação. • E com sua última versão 2.0, o JSF ganhou mais simplicidade e produtividade.
  • 10.
    Tags JSF Core Abiblioteca de tags JSF Core contém elementos action que representam artefatos JSF que são independentes da linguagem de marcação, tais como conversores e validadores.
  • 11.
    Tags JSF Core Estabiblioteca é importada para suas páginas xhtml por meio da seguinte declaração: <html xmlns="http://www.w3.org/1999/xhtml" xmlns:c="http://java.sun.com/jstl/core" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:ui="http://java.sun.com/jsf/facelets">
  • 12.
  • 13.
    Ciclo de Vidade uma requisição JSF
  • 14.
    Restore View • Recupera a visão de acordo com a URL • Se for uma chamada inicial, apenas cria um componente UIViewRoot e repassa à fase 6 • Sendo uma chamada subsequente, carrega o UIViewRoot existente e repassa para a fase 2.
  • 15.
    Apply Request Values • Carrega parâmetros, cookies e cabeçalhos HTTP nos componentes da view escolhida na etapa anterior • Realiza a conversão e validação de objetos UIIunput marcados como immediate • Requisições disparadas por campos immediate são desviadas para a fase 6.
  • 16.
    Process Validations • Realiza as validações dos campos UIInput • Em caso de falhas de validação de algum campo, a mensagem será adicionada ao objeto FacesContext e o fluxo será desviado para a fase 6 • Os valores são avaliados de acordo com as regras de validação da aplicação
  • 17.
    Update Model Values • Nesta fase, todos os dados da entrada são considerados válidos • Atualiza o managed bean com os valores dos componentes da view chamando conversores quando necessário • Se houver alguma falha na conversão de algum valor, o fluxo será desviado para a etapa 6
  • 18.
    Invoke Application • Fase onde o método referente ao action de um UICommand é executado • Se retornar uma string esta será considerada o nome de alguma view a ser renderizada • Se retornar void, a view solicitada será renderizada • O valor do componente sempre será convertido, validado e aplicado aos objetos de modelo
  • 19.
    Render Response • Renderiza a view escolhida pelo usuário ou retornada na fase 5 • Salva o estado da UIViewRoot associada à view • Se alguns componentes da página tem seu atributo setado como immediate, então as validações, conversões e eventos associados a estes componentes serão processados
  • 20.
    Managed Beans • Classe que expõe objetos de negócio para a camada de apresentação • São registrados no faces.config.xml • Objetos que sofrerão alterações em seus atributos durante uma requisição. • Serão utilizados na camada de apresentação através da Expression Language • Form Beans são injetados por setters dentro do seu próprio Bean
  • 21.
    Expression Language • Poderosa linguagem de expressão (linguagem de navegação) para acessar propriedades dos beans e coleções • Quando ocorrer uma requisição pelo browser é preenchido dinamicamente pelos elementos da página pela camada de negócio • Quando a página for submetida, ocorre a modificação no estado da camada de negócio
  • 22.
    Adicionando JSF 2.0na camada de Apresentação com Spring Roo Para exemplificar, vamos criar a Entidade Aluno com a seguinte estrutura: Assumindo que o projeto já esteja criado, e que as configurações de persistência já foram feitas, digite os seguintes comandos: entity jpa --class ~.modelo.Aluno --testAutomatically false field string --fieldName nome --notNull field string --fieldName matricula --notNull
  • 23.
    Adicionando JSF 2.0na camada de Apresentação com Spring Roo Com estes comandos, o Spring Roo irá gerar a seguinte classe:
  • 24.
    Adicionando JSF 2.0na camada de Apresentação com Spring Roo Com a nossa Entidade definida, vamos agora adicionar o JSF 2.0 para a camada de Apresentação, digite os seguintes comandos: web jsf setup --implementation ORACLE_MOJARRA --library PRIMEFACES --theme VADER O comando web jsf setup pode ser executado tantas vezes quanto você quiser mudar a implementação JSF e o tema. O comando --implementation quando especificado, permite escolher asimplementações Mojarra Oracle ou Apache MyFaces JSF.
  • 25.
    Adicionando JSF 2.0na camada de Apresentação com Spring Roo web jsf setup --implementation ORACLE_MOJARRA --library PRIMEFACES --theme VADER O comando --library tem apenas um valor selecionável, sendo PRIMEFACES. O comando --theme permite que você selecione um dos 30 temas PrimeFaces para sua interface.
  • 26.
    Adicionando JSF 2.0na camada de Apresentação com Spring Roo Comando: web jsf all --package ~.web O comando web jsf all cria os managed beans e conversores para todas as entidades do pacote especificado. A página XHTML também é criada no diretório src / main / webapp / diretório páginas para cada entidade.
  • 27.
    Adicionando JSF 2.0na camada de Apresentação com Spring Roo Para executar com o servidor de aplicação Jetty, pelo terminal, vá até a raiz do projeto e digite: mvn jetty:run-exploded
  • 28.
    Adicionando JSF 2.0na camada de Apresentação com Spring Roo Quando o servidor terminar de ser iniciado, no browser acesse o endereço: http://localhost:8080/NomeDaSuaAplicacao/
  • 29.
    Adicionando JSF 2.0na camada de Apresentação com Spring Roo O que o Spring Roo fez? localhost:8080/ApresentacaoJSF