35
JavaServer Faces Rapid Web Application Development em Java Ricardo Cavalcanti [email protected] Jobson Ronan [email protected]

JavaServer Faces

  • Upload
    hamish

  • View
    48

  • Download
    0

Embed Size (px)

DESCRIPTION

JavaServer Faces. Rapid Web Application Development em Java. Ricardo Cavalcanti [email protected]. Jobson Ronan [email protected]. O que é?. Um framework padrão( Standard ) para aplicações webs Define um modelo de programação Componentes Reusáveis Gera HTML a partir dos componentes - PowerPoint PPT Presentation

Citation preview

Page 1: JavaServer Faces

JavaServer Faces

Rapid Web Application Development em Java

Ricardo [email protected]

Jobson [email protected]

Page 2: JavaServer Faces

O que é?

Um framework padrão(Standard) para aplicações webs

Define um modelo de programação

Componentes Reusáveis

Gera HTML a partir dos componentes

Validação e conversão

Arvore de componentes

Page 3: JavaServer Faces

Objetivos

Simplificar o desenvolvimento

Suporte por ferramentas

Eventos facilmente ligado a código server-side

Fácil de estender

Gerenciar o estado da UI

Page 4: JavaServer Faces

Padrões e Arquitetura

Model-View-Controller (MVC)

Baseada em factories

Árvore de componentes (Composite)

Eventos do lado do servidor

Page 5: JavaServer Faces

Mas o que é mesmo?

Uma aplicação JSF é como qualquer outra aplicação web Java

Roda dentro de um servlet container, e normalmente é composta de: Simples componentes Java Beans Event Listeners Páginas, como páginas JSP Outras classes como classes de acesso a

dados

Page 6: JavaServer Faces

Mas o que é mesmo?

Em adição aplicações JSF também contém: Uma tag library para renderizar os

componentes gráficos na página Uma tag library para tratamento de

eventos, validações e outras acções Backing Beans, que definem

propriedades e funções para os componentes gráficos

Page 7: JavaServer Faces

Mas o que é mesmo?

Além de: Classes implementando validators,

converters, event listeners e event handlers

Um descritor de aplicação para configurar o funcionamento da mesma

Page 8: JavaServer Faces

Como usar?

Prescisa-se de uma implementação: Implementação de referência MyFaces, do grupo Jakarta

Page 9: JavaServer Faces

Ciclo de vida do Request-response

Page 10: JavaServer Faces

Como usar?

Declarar o Faces Servlet (Front Controller) web.xml

<servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup></servlet>

<servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.jsf</url-pattern></servlet-mapping>

<context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/faces-config.xml</param-value></context-param>

Page 11: JavaServer Faces

Como usar?

Características Front Controller MVC (como Struts) Configuravel através de parametros de

contexto

Page 12: JavaServer Faces

Simples exemplo

Botão “trocar” troca o conteúdo do campo1 pelo do campo2, e vice-versa

Page 13: JavaServer Faces

Implementando páginas

TagLibraries UIComponent + HTML RenderKit

Renderer<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>

Core JavaServer Faces<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>

Page 14: JavaServer Faces

UIComponent + HTML RenderKit Renderer

<h:inputText> Define um campo de entrada de texto Atributos

• value: expressão que indica o conteúdo do campo. Possivelmente uma propriedade de um bean

<h:inputText id="campo1" value="#{TrocaBean.campo1}"/>

Page 15: JavaServer Faces

UIComponent + HTML RenderKit Renderer

<h:commandButton> Define um botão de ação Atributos

• action: expressão que indica a ação a ser invocada quando este componente for ativado

• actionListener: expressão que indica o método de listener que será notificado quando este componente for ativado

Page 16: JavaServer Faces

UIComponent + HTML RenderKit Renderer

<h:commandButton><h:commandButton id="trocar" action="#{TrocaBean.trocar}" value="Trocar" />

O método “trocar” do bean Trocar, não deve receber parâmetros e deve retornar uma String

Page 17: JavaServer Faces

UIComponent + HTML RenderKit Renderer

<h:commandLink> Renderiza um componente “a” HTML

que funciona como um botão submit de um form

• Uso análogo ao commandButton

Page 18: JavaServer Faces

UIComponent + HTML RenderKit Renderer

<h:form> Renderiza um formulário HTML

Page 19: JavaServer Faces

Core JavaServer Faces

<f:view> Container para todos os componentes

usados na página

Todos os componentes JavaServer Faces devem ser aninhados a este

Page 20: JavaServer Faces

Exemplo completo<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %> <%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><body><f:view><h:form> <fieldset> <legend>Troca Exemplo</legend> <label>Campo1: <h:inputText id="campo1" value="#{TrocaBean.campo1}"/> </label><br/> <label>Campo2: <h:inputText id="campo2" value="#{TrocaBean.campo2}"/> </label><br/> <h:commandButton id="trocar" action="#{TrocaBean.trocar}" value="Trocar" /> </fieldset></h:form></f:view></body></html>

Page 21: JavaServer Faces

Backing Bean Model

Que bean “TrocaBean” é este?

package pcc;

public class Troca {

private String campo1; private String campo2;

//gets e sets ...

public String troca() { String temp = campo1; campo1 = campo2; campo2 = temp; return “sucesso”; }}

Page 22: JavaServer Faces

Backing Bean Model

Declarado no faces-config.xml<!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>pcc.Troca</managed-bean-class> <managed-bean-scope>request</managed-bean-scope> </managed-bean>

</faces-config>

Page 23: JavaServer Faces

Backing Bean Model

Demostração...

Page 24: JavaServer Faces

Validação

Suporte validação de campos de entrada de forma declarativa <f:validateDoubleRange>, <f:validateLengtg>, <f:validateLongRange> e outros validators customizados podem ser aninhados campos de entrada

Page 25: JavaServer Faces

Validação

Suporte validação de campos de entrada de forma programática Um método do bean no formato

public void xyz(FacesContext faces, UIComponent coponent,

Object value)

Uma classe que implemente a interface javax.faces.validator.Validator

Page 26: JavaServer Faces

Validação

Mensagens de erro podem ser impressas utilizando a tag

<h:message>

Atributos• for: O id do campo do qual deseja-se

mostrar uma mensagem, possivelmente de erro

<h:message for="campo1"/>

Page 27: JavaServer Faces

Validação

Demostração...

Page 28: JavaServer Faces

O que mais?

Navegação definida no faces-config.xml Condicionada e método do bean Condicionada a retorno do método do

bean

Page 29: JavaServer Faces

O que mais?

Exemplo (faces-config.xml)<faces-config> <!-- ... --> <navigation-rule> <description></description> <from-view-id>/troca.jsp</from-view-id> <navigation-case> <description></description> <from-outcome>success</from-outcome> <to-view-id>/trocaSucesso.jsp</to-view-id> </navigation-case> </navigation-rule> <!-- ... --></faces-config>

Page 30: JavaServer Faces

O que mais?

Injeção de dependência nos beans Suporte a internacionalização

Page 31: JavaServer Faces

O que mais?

Converters para a conversão de entradas em objetos específicos Implementados de formas análogas a

validação

Listeners de eventos do usuário Implementados de formas análogas a

validação e a converters

Page 32: JavaServer Faces

O que mais?

Gerênciadores de layout <h:panelGrid>

Geração de Tabelas de dados total suporte a coleções <h:dataTable var=“filme” value=#{filmes}> <h:column id=“#{filme.nome}”>

Page 33: JavaServer Faces

O que mais?

Suporte a outros tipos de entrada<h:selectBooleanCheckbox><h:selectManyCheckbox><h:selectManyListbox><h:selectManyMenu><h:selectOneListbox><h:selectOneMenu><h:selectOneRadio>

Page 34: JavaServer Faces

O que mais?

Implementação open-source, MyFaces (jakarta), com excelentes componentes customizados Geradores de menus Geradores de popups Geradores de Barra de navegação Grande quantidade de Validators

customizados: EmailValidator, CreditCardValidator, etc.

Page 35: JavaServer Faces

O que mais?

Suporte de ferramentas comerciais para geração Drag’n Drop Sun Java Studio Creator IBM Webspheere JDeveloper (free)

Uma tecnologia de geração de páginas a altura de ASP.NET Porém, com toda a maturidade da linguagem

Java no ServerSide