fundamentos jsf

8
2/3/2011 1 Prof. Italberto F. Dantas [email protected] Camada de Visão Camada de Controle Um servlet servlet servlet servlet controlador chamado controlador chamado controlador chamado controlador chamado FacesServlet FacesServlet FacesServlet FacesServlet Configurado no arquivo web. web. web. web.xml xml xml xml Não é editável pelo desenvolvedor Um arquivo de configuração XML chamado faces faces faces faces- - -config config config config. . .xml xml xml xml Registrara beans, formas de navegação JSF 2.0 minimizou a necessidade de seu uso Manipuladores de ações: managed managed managed managed beans beans beans beans Fazem acesso à camada de modelo Seus métodos devolvem strings strings strings strings para que o FacesServlet FacesServlet FacesServlet FacesServlet faça a navegação: redirecionamentos Fornece taglibs taglibs taglibs taglibs para exibir a interface com o para exibir a interface com o para exibir a interface com o para exibir a interface com o usuário através de: usuário através de: usuário através de: usuário através de: Um conjunto de componentes Uma API padronizada para acesso e manipulação de dados da camada de controle Podemos usar pelo menos duas tecnologias de visão: JSP Facelets

Upload: geraldo-silva

Post on 23-Jun-2015

1.075 views

Category:

Documents


6 download

DESCRIPTION

Para quem está iniciando em JSF

TRANSCRIPT

Page 1: Fundamentos jsf

2/3/2011

1

Prof. Italberto F. [email protected]

� Camada de Visão� Camada de Controle

� Um servletservletservletservlet controlador chamado controlador chamado controlador chamado controlador chamado FacesServletFacesServletFacesServletFacesServlet◦ Configurado no arquivo web.web.web.web.xmlxmlxmlxml◦ Não é editável pelo desenvolvedor

� Um arquivo de configuração XML chamado facesfacesfacesfaces----configconfigconfigconfig....xmlxmlxmlxml◦ Registrara beans, formas de navegação◦ JSF 2.0 minimizou a necessidade de seu uso

� Manipuladores de ações: managedmanagedmanagedmanaged beansbeansbeansbeans◦ Fazem acesso à camada de modelo◦ Seus métodos devolvem strings strings strings strings para que o FacesServletFacesServletFacesServletFacesServlet faça a navegação: redirecionamentos

� Fornece taglibstaglibstaglibstaglibs para exibir a interface com o para exibir a interface com o para exibir a interface com o para exibir a interface com o usuário através de:usuário através de:usuário através de:usuário através de:◦ Um conjunto de componentes◦ Uma API padronizada para acesso e manipulação de dados da camada de controle

� Podemos usar pelo menos duas tecnologias de visão:◦ JSP◦ Facelets

Page 2: Fundamentos jsf

2/3/2011

2

• Análoga à EL JSP 2.0– Forma de uso: #{identificador}

• Pode ser usada em páginas e também no faces-config.xmlpara injeção de dependência

• Permite acesso simplificado às propriedades de um bean:– #{agendaBean.contatos}, #{agendaBean.contato.nome},

• Permite "executar" métodos também:– #{loginControlador.autenticar}, #{palpiteControlador.gerarNovoNumero,

• Similaridades com JSP EL:– Permite acesso a objetos implícitos de escopo: session, request, application

– Acesso simples a coleções– Suporte aos operadores básicos (or, and, eq, lt, gt...)

� Um formulário é requisitado◦ Um managedmanagedmanagedmanaged beanbeanbeanbean é instanciado (caso não é instanciado (caso não é instanciado (caso não é instanciado (caso não exista), por padrão, no escopo do exista), por padrão, no escopo do exista), por padrão, no escopo do exista), por padrão, no escopo do requestrequestrequestrequest◦ TagTagTagTag HandlersHandlersHandlersHandlers colaboram uns com os outros para colaboram uns com os outros para colaboram uns com os outros para colaboram uns com os outros para formar uma árvore de componentesformar uma árvore de componentesformar uma árvore de componentesformar uma árvore de componentes◦ Os componentes são renderizados e preenchidos com dados de um managedmanagedmanagedmanaged beanbeanbeanbean◦ A página codificada é então enviado ao cliente.codificada é então enviado ao cliente.codificada é então enviado ao cliente.codificada é então enviado ao cliente.

� O formulário é enviado◦ A priori, os dados são enviados para a própria página◦ As propriedades dos managedmanagedmanagedmanaged beansbeansbeansbeans são são são são preenchidas com o conteúdo dos componentespreenchidas com o conteúdo dos componentespreenchidas com o conteúdo dos componentespreenchidas com o conteúdo dos componentes◦ Caso haja mudança na navegação, o usuário é encaminhado para outra página

� O método de ação é executado◦ Esse método é invocado por componentes como commandButton ou commandLink

� O método ação retorna uma “condição”◦ A stringstringstringstring pode ser um mapeamento facesfacesfacesfaces----configconfigconfigconfig....xmlxmlxmlxml ou o nome de uma página (sem a extensão) facesfacesfacesfaces----configconfigconfigconfig....xmlxmlxmlxml

� Uma página de resultados é exibida

Page 3: Fundamentos jsf

2/3/2011

3

� O FacesServlet extrai da requisição o "viewID", que é determinado pelo nome da página.

� Uma árvore de componentes é mantida pelo framework representando o estado da visão:

� O estado pode ser mantido no cliente ou no servidor:◦ Cliente: menor consumo de memória e maior tráfego de rede◦ Servidor: maior consumo de memória e menor tráfego de rede)

� Cada componente deverá recuperar seu estado corrente.

� Os valores dos componentes são extraídos do request, cookies, sessão ou do “header” da requisição

� Essa atribuição é feita utilizando o conversor definido para o componente

� Cada componente (propriedade “value”) será validado de acordo com as regras de validação definidas na aplicação

� As regras de validação são definidas através dos “validators”

� Caso haja problemas de validação mensagens de erro são adicionadas no FacesContext e o componente é marcado como inválido

� Se um componente for marcado como inválido, o JSF pula para a fase “Render Response”

Page 4: Fundamentos jsf

2/3/2011

4

� Os valores dos componentes são passados para as propriedades associadas aos Managed Beans

� Caso seja necessário, os Managed Beans são instanciados e mantidos no seu respectivo escopo

� Pode haver erro na conversão, fazendo com que o JSF dispare um erro de tempo de execução

� O FacesServletFacesServletFacesServletFacesServlet executa chama o método do Managed Bean associado no submit/link,

� Todos os valores já foram validados e carregados nas fases anteriores

� Métodos ou outcomes carregados na propriedade “actionactionactionaction” dos componentes

� Monta-se a resposta onde cada componente é processado e o resultado é unificado aos demais

� A visão então é exibida ao usuário

� No cabeçalho de cada componente visual da página deve ser declarado as taglibstaglibstaglibstaglibs que serão usadas naquele trecho de código.

Page 5: Fundamentos jsf

2/3/2011

5

� h:inputText� h:commandButton� h:commandLink� h:dataTable� h:panelGrid� h:outputLink� h:outputLabel� h:form

� Tarefa obrigatória para qualquer aplicação� Alguns tipos de validação:◦ Campos obrigatórios preenchidos◦ Formatos e tamanhos de tipos básicos como real e inteiro corretos◦ Tipos de dados mais específicos como dígitos verificadores (CPF, CNPJ, Matrícula) corretamente gerados/fornecidos

� Para campos obrigatórios, o JSF provê o atributo required

� Para validações básicas (domínio e tamanho), o JSF possui validadores pré-definidos

� Podemos escrever métodos ou classes próprios para validar os dados dos formulários.

� Há duas maneiras de implementar validação personalizada

� Criar uma classe e implementar a interface javax.faces.validator.Validator

� Usar um método do managed bean para validação

Page 6: Fundamentos jsf

2/3/2011

6

� Usando o método do managed bean� Caso seja escolhido essa forma de validação, o método deve ter a seguinte assinatura.

� JavaBeans Validation (Bean Validation) é um novo modelo de validação parte da plataforma Java EE6

� Suportado através de anotações.

Page 7: Fundamentos jsf

2/3/2011

7

AnotaçãoAnotaçãoAnotaçãoAnotação DescriçãoDescriçãoDescriçãoDescrição ExemploExemploExemploExemplo

@AssertFalse O valor do campo deveser falso.

@AssertFalse booleanisUsuario;

@AssertTrue O valor do campo deveser verdadeiro.

@AssertTrue booleanisAtivo;

@Digits O valor deve estar entre uma faixa de valores.

@Digits(integer=6, fraction=2) BigDecimalprice;

@Pattern O valor deve reconhecidopor uma expressãoregular.

@Pattern(regexp=“.+@.+\\.[a-z]+") String email;

@NotNull O valor do campo nãopode ser nulo.

@NotNull String nome;

� Existem três tipos de escopo de execução nas aplicações web:◦ Application ◦ Session◦ Request

� O JSF 2 definiu mais um tipo◦ View

� Application◦ O bean que é definido como sendo @@@@ApplicationScoppedApplicationScoppedApplicationScoppedApplicationScopped poderá ser visto por toda a apliação da mesma forma. Ou seja visto por vários usuários do mesmo sistema em máquinas diferentes.◦ Não é recomendável em formulários.

Page 8: Fundamentos jsf

2/3/2011

8

� Session◦ Um managed bean definido como @@@@SessionScoppedSessionScoppedSessionScoppedSessionScoppedpoderá ser visto durante toda a execução do sistema por um único usuário (enquanto sua sessão não expira).◦ É usado para guardar informações úteis ao usuário durante a execução do sistema.

� Request◦ Este é o escopo padrão utilizado pelo JSF.◦ Um managed definido como @@@@RequestScoppedRequestScoppedRequestScoppedRequestScopped terá seus dádos válidos apenas durante a comuncaçãoentre o clienteclienteclientecliente (browser) e o servidor servidor servidor servidor (GlassFish, TomCat, etc)