JavaServer Faces Produtividade em Desenvolvimento

Post on 17-Dec-2014

4.564 views 4 download

description

Palestra ministrada no JustJava 2007

Transcript of JavaServer Faces Produtividade em Desenvolvimento

TCS Confidential

JavaServer Faces

Produtividade em Desenvolvimento

April 10, 2023

Tópicos Abordados• O que JavaServer Faces nos traz?

– Especificações– Managed Beans– Expression Language

• Life Cycle JSF• Roteiro de Uso• IDEs• Customizações• Pequenas mudanças no Default• Implementações• Templates• JSF 2.0

Produtividade com JavaServer Faces

April 10, 2023

Apresentação• Eduardo Bregaida

– Analista de sistemas Java da Tata Consultancy Services do Brasil - TCS.– Membro do Java Community Process (JCP).– Desenvolvedor JSF há 2 anos.– Bacharelando na Universidade IMES – São Caetano do Sul.

April 10, 2023

O que JavaServer Faces nos traz?

April 10, 2023

O que JavaServer Faces nos traz?• É mais do que um framework, é uma especificação baseada em MVC;

• Suporte a internacionalização;

• Facilita criação de telas;

• Facilita a transferência dos dados entre telas e camadas de negócio através da EL.

• Produtividade para conversores recebidos do formulário para os tipos nas classes;

• Flexibilidade para renderização.

• Criar modelos simples de eventos entre interfaces gráficas e as classes no servidor.

• Mecanismos produtivos para validação de campos na tela.

• Facilidade para criação de componentes;

April 10, 2023

Especificações• JSF 1.0 e 1.1 – JSR 127

– Problemas com renderização– ELs diferentes entre JSP e JSF– Não portava a tag JSTL <c:forEach>

• JSF 1.2 – JSR 252– Resolveram todos os problemas de incompatibilidade, pois o JSF 1.2 e o JSP 2.1 tiveram

muitas uniões e estão dentro do JEE.

• JSF 2.0 – JSR 314– Ainda está em discussão muitas coisas, porém estão planejando deixar bem integrado e

intuitivo JSF e JSP.

April 10, 2023

Managed Beans• É uma classe que expões objetos de negócio para camada de apresentação;

• São Registrados no faces-config.xml;

• Objetos que sofrerão alterações em seus atributos durante uma requisição, assim como seus métodos podem ser chamados a partir de um command;

• São como as Actions do Struts, porém os form beans são injetados por setters dentro do seu próprio bean;

• Os ManagedBeans serão usados na EL das páginas.

April 10, 2023

Expression Language - EL• É uma poderosa linguagem de expressão (Linguagem de navegação) para acessar

propriedades de beans e coleções.

• Quando ocorrer uma requisição pelo browser é preenchido dinamicamente os elementos da página pela camada de negócios.

• Quando ocorre um Submit ocorre a modificação no estado da camada de negócio.

April 10, 2023

Life Cycle JSF

April 10, 2023

Life Cycle JSF - Fases• São Atendidas pelo Reader Response e Restore Component Tree

• Restore Component Tree: O conjunto de componentes JSF é criado ou restaurado dependento da requisição (Primeira ou demais vezes executadas)

April 10, 2023

Life Cycle JSF - Fases• Apply request Values: Os componentes irão extrair seu novo valor dos parâmetros da Request,

colocando-os em variaveis de estado no servidor.

April 10, 2023

Life Cycle JSF - Fases• Process Validations: todos os validadores serão executados, em caso de erro de qualquer

valor, a mensagem é alocada no FacesContext, caso contrário ele atualiza (Update Model Values) os valores dos inputs na camada de negócio através da EL.

April 10, 2023

Life Cycle JSF - Fases• Invoke Application: Os métodos do ManagedBeans são executados e as regras de navegação

(Gravar, Excluir, Alterar,...) são resolvidas.• Se tudo ocorrer bem é renderizada pelo container do JSP, caso contrario as mensagens

gravadas no FacesContext são apresentadas.

April 10, 2023

Roteiro de Uso

April 10, 2023

Roteiro de Uso1. Criar um bean que represente o formulário

2. Usar f:view e h:form para formulários

3. Especificar o Action Controller com o atributo de ação h:commandButton.

4. Criar um controlador que leia os dados do formulário, chame a lógica de negócio, guarde os resultados em beans e tenha um retorno.

5. No faces-config é usado para declarar o form bean e as regras de navegação.

6. Criar os JSP´s responsáveis por cada retorno declarado

April 10, 2023

Exemplo: Passo 1 – Criar um Beanpackage br.com.justjava.sgv.cadastro.campanha;

import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;

@Entitypublic class CadastroCampanha {

@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private long id;

private String nomeCampanha;

private String observacaoCampanha;

public long getId() { return id;}

public void setId(long id) { this.id = id;}

public String getNomeCampanha() { return nomeCampanha;}

public void setNomeCampanha(String nomeCampanha) { this.nomeCampanha = nomeCampanha;

}

public String getObservacaoCampanha() { return observacaoCampanha;}

public void setObservacaoCampanha(String observacaoCampanha) { this.observacaoCampanha = observacaoCampanha;}

}

April 10, 2023

Exemplo: Passo 2 e 3 - f:view e h:form e Especificar o Action Controller <%@ page contentType="text/html; charset=UTF-8" %>

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

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

<%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="t" %>

<html>

<head>

<title>Cadastro de Cliente</title>

</head>

<body>

<f:view>

<h:form>

<t:panelGrid align="center">

<h:outputText value="Nome Campanha:"/>

<h:inputText value="#{campanhaHandler.cadastroCampanha.nomeCampanha}"required="true"/>

<h:outputText value="Observação:"/>

<h:inputTextarea value="#{campanhaHandler.cadastroCampanha.observacaoCampanha}" required="true"/>

<h:commandButton value="Gravar" action="#{campanhaHandler.salvar}"/>

</t:panelGrid>

</h:form>

</f:view>

</body>

</html>

April 10, 2023

Exemplo: Passo 4 – Criar o Controlador

public void salvar() {

Session session = HibernateUtil.getCurrentSession();

DAO<CadastroCampanha> dao = new DAO<CadastroCampanha>(session,CadastroCampanha.class);

if (cadastroCampanha.getId() == 0) {

dao.salveOrUpdate(this.cadastroCampanha);

} else {

session.merge(this.cadastroCampanha);

}

this.cadastroCampanha = new CadastroCampanha();

}

April 10, 2023

Exemplo: Passo 5 – Configurar o faces-config.xml

<managed-bean>

<managed-bean-name>campanhaHandler</managed-bean-name>

<managed-bean-class>

br.com.justjava.sgv.cadastro.campanhahandler.CampanhaHandler

</managed-bean-class>

<managed-bean-scope>session</managed-bean-scope>

</managed-bean>

<navigation-rule>

<from-view-id>/cadastroCampanha.jsp</from-view-id>

</navigation-rule>

April 10, 2023

Exemplo: Passo 6 – Criar o JSP responsável pelo retorno<!- - Insiro este <h:form> com a tabela de retorno dentro do próprio JSP que cadastra - -><h:form>

<t:panelGrid align="center">

<h:dataTable value="#{campanhaHandler.allCadastroCampanha}" id="tabelaDados" rows="5" var="ccam" border="1“>

<h:column>

<f:facet name="header">

<h:outputText value="Nome Campanha"/>

</f:facet>

<h:outputText value="#{ccam.nomeCampanha}"/>

</h:column>

<h:column>

<f:facet name="header">

<h:outputText value="Observação"/>

</f:facet>

<h:outputText value="#{ccam.observacaoCampanha}"/>

</h:column>

</h:dataTable>

</t:panelGrid>

</h:form>

April 10, 2023

Rodando• Antes:

• Depois:

April 10, 2023

IDEs

April 10, 2023

IDEs• Netbeans

- Web Pack – Studio Creator

• Eclipse– Webtools + jsftoos (a ser liberado em julho)– EasyEclipse– MyEclipse– Red Hat Developer Studio

• Rational Application Developer – WSAD

• JDeveloper

April 10, 2023

Customizações

April 10, 2023

Customizações• Facilidade na customização de:

– Validadores– Conversores– Componentes de Interface– Renderizadores– Mensagens

April 10, 2023

Pequenas mudanças no Default

April 10, 2023

Pequenas mudanças no Default• Montagem de templates: como Clay (Shale) e Facelets e substituir um pelo outro é

questão de uma linha de configuração.

• A beans factory: podemos usar os beans do Spring ao invés dos managed beans do faces-config.xml.

• Renderização dos componentes: existem implementações, utilizando por exemplo XUL ou HTML + Ajax.

April 10, 2023

Implementações

April 10, 2023

Implementações• Apache

– MyFaces• Tomahawk/ Sandbox/ Tobago/ Trinidad/ Orchestra

• Red Hat/JBoss – RichFaces– Ajax4JSF

• Red Hat/JBoss – RichFaces

• ICEsoft Technologies Inc. – ICEfaces

• Oracle – ADF Faces

April 10, 2023

Templates

April 10, 2023

Templates• Tiles• Facelets• JSFTemplating

April 10, 2023

Templates• Alexandre (escrever)

April 10, 2023

O que vai ter novo no JSF 2.0?

April 10, 2023

JSF 2.0• Suporte a templates, baseado no Facelets, Tiles, dentre outros;• Simplificar a criação de aplicações do tipo CRUD;• Melhor tratamento de mensagens de erro;• Mecanismo de tratamento de exceções padrão;• Criação de aplicações Web sem XML, utilizando anotações;• Simplificação no desenvolvimento de componentes;• Especificar onde os artefatos (Conversores, Renderizadores, etc.) dever ser colocados no

WAR, permitindo ao container encontra-los sem a necessidade de sua definição em arquivos de configuração;

• Permitir que artefatos sejam alterados sem a necessidade de reinicializar o servidor.

April 10, 2023

Perguntas???

April 10, 2023

Contato:eduardo.bregaida@gmail.com

http://www.javawora.blogspot.com

Blog Java Anywhere:

April 10, 2023

Referências• http://www.caelum.com.br• http://javawora.blogspot.com/search/label/JSF• http://www.guj.com.br/java.tutorial.artigo.158.1.guj• http://java.sun.com/javaee/javaserverfaces/• www.jcp.org

– JSRs: 127; 252; 314.• http://www.jspolympus.com/JSF/JSFLifeCycle.jsp• http://www.guj.com.br/java.tutorial.artigo.187.1.guj• http://javaplace.blogspot.com/2007/07/frameworks-jsf-que-encapsulam-o-uso-do.html• http://www.nabble.com/Struts-+-JSF:-Vale-a-Pena--t4056131.html• http://www.javaplace.blogspot.com/ • http://myfaces.apache.org/• http://www.oracle.com/technology/products/adf/adffaces/index.html• http://www.icefaces.org/main/home/index.jsp• https://ajax4jsf.dev.java.net/

• Revistas:– Mundo Java nº: 21.– Java Magazine nº: 23; 26; 43; 44; 45; 46; 47; 48.

• Livros:– Faces in Action (Kito Mann – Manning, 2004);– JavaServer Faces (Hans Bergsten – O´Reilly, 2004);– Core JavaServer Faces (David Geary e Cay Horstmann).

TCS Confidential

Obrigado