jsf 2.0 e scrumtoys
DESCRIPTION
Palestra para o LinguÁgil 2009 em Salvador. Evento realizado entre os dias 12 e 14 de novembro de 2009 em Salvador. Palestra realizada no dia 14/11 das 17:20 às 18:10.TRANSCRIPT
Globalcode – Open4education
JSF 2.0 e ScrumToysDr. Spock (Alberto Lemos)
D
Profissional 1.5Desenvolvedor/Instrutor Java
Arquiteto Bacanão
Globalcode – Open4education
Agenda
Sobre o JavaServer Faces Benefícios da tecnologia Deficiências na versão atual Principais Novidades do JSF 2.0 Demonstração do ScrumToys Perguntas & Respotas
Globalcode – Open4education
O que é JavaServer Faces
Do mesmo criador do Struts; Paradigma de programação visual de User-interfaces
aplicado à web; É um framework que permite a criação de aplicações
Web com semântica de Swing implementando MVC; “Toolability = Ferramentabilidade” ; É uma especificação Java EE; Faces é mais fácil de aprender que outros frameworks; Faces é mais componentizado;
Globalcode – Open4education
Benefícios
Diversas bibliotecas de componentes disponíveis; Suporte nas principais IDEs; Ampla literatura, treinamentos e foruns de
discussão; Integração com outras tecnologias e frameworks:
Spring, JPA, EJB, JBoss Seam Encapsula a complexidade do HTML, CSS e
JavaScript Oferece servicos fundamentais como conversores
e validadores;
Globalcode – Open4education
JavaServer FacesP
ág
i na
JSF
faces-
con
f ig
.xm
l
Man
ag
ed
Bean
Globalcode – Open4education
Demonstração
Globalcode – Open4education
Deficiências na versão atual (JSF 1.2)
Não oferece Templates de tela “built in” Complexidade para criar componentes visuais Não permite criar Bookmarkble URLs Não suporta AJAX nativamente Incompatibilidade entre bibliotecas de
componentes Uso de JSP: Scriptlets, CustomTags, etc Muitas configurações em XML
Globalcode – Open4education
Principais Novidades do JSF 2.0
Suporte a anotações para configuração Suporte a AJAX PDL baseado em XHTML (Facelets) e JSP PDL extensível Novo escopo para MBs: ViewScoped e
CustomScoped Bookmarkable URLs
Globalcode – Open4education
Principais Novidades do JSF 2.0
Suporte a definição de estágio do projeto Mecanismo de Eventos Gerenciamento de Recursos Suporte a criação de componentes via XHTML Navegação implícita e condicional
Globalcode – Open4education
Novas Anotações Suportadas@ManagedBean(name=”dashBoardBean”)@ManagedProperty(“#{taskManager}”)@RequestScoped@ViewScoped@SessionScoped@ApplicationScoped@CustomScoped@FacesConverter(forClass=Project.class)@FacesValidator
Globalcode – Open4education
Suporte a AJAX
<h:commandButton id="btnDeleteSprint" styleClass="botaoPostIt" action="#{sprintManager.remove}" value="#{i18n['sprint.show.button.delete']} AJAX" onclick="jsf.ajax.request(this, event, {execute: 'frmListSprints', render: 'frmListSprints'}); return false;" />
Também suporta uma tag: <f:ajax>
Globalcode – Open4education
PDL baseado em XHTML
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core">
Incorpora o Facelets.
Não são necessárias configurações extras no web.xml.
Globalcode – Open4education
Novo escopo: ViewScoped
No faces-config.xml: <managed-bean>
<managed-bean-name>dashboardMB</managed-bean-name>
<managed-bean-class>jsf.mb.DashboardMB</managed-bean-class>
<managed-bean-scope>view</managed-bean-scope>
</managed-bean>
No Managed Bean: @ManagedBean(name="dashboardManager")
@ViewScoped
public class DashboardMB implements Serializable {
...
}
Globalcode – Open4education
Estágios do Projeto
Estágios suportados: Production, Development, UnitTest e SystemTest
No web.xml: <context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
Globalcode – Open4education
Mecanismo de Eventos
Exemplos de código no ScrumToys:jsf2.demo.scrum.web.event.*jsf2.demo.scrum.web.controller.AbstractManager
Alguns eventos suportados:AfterAddToParentEventBeforeRenderEventViewMapCreatedEventViewMapDestroyEvent
Suporte a tag: <f:event type=”...” listener=”...” />
Globalcode – Open4education
Gerenciamento de Recursos
Novas tags: <h:head>, <h:body>, <h:outputScript> e <h:outputStyle>
Acesso a recursos via EL: #{resouce[...]}...
<h:head> <title>#{dashboard2MB.name}</title> <h:outputStylesheet library="css/1_1" name="app.css"/> <h:outputScript library="javax.faces" name="ajax.js" target="head"/></h:head><h:body>... <h:form id="frmDashboard"> <img src="#{resource['images/exemplo.jpg']}" width="50px"/>...
Globalcode – Open4education
Criação de Componentes
Exemplo de definição de Composite Component em:
/resources/components/postit.xhtml
Exemplo de uso do componente em:/dashboard/show.xhtml
Globalcode – Open4education
NavegaçãoImplícita: <navigation-rule>
<from-view-id>/page1.xhtml</from-view-id>
<navigation-case>
<from-outcome>success</from-outcome>
<to-view-id>/page2.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
Não é necessário! Bastar no MB retornar: “page2”.Condicional: <navigation-case>
<from-outcome>success</from-outcome>
<to-view-id>/page2.xhtml</to-view-id>
<if>#{foo.someCondition}</if>
</navigation-case>
Globalcode – Open4education
JSF Scrum Demo
Aplicação para gestão de projetos, sprints, estórias e tarefas
Implementa o conceito de skins permitindo ao usuário trocar as cores da tela
JSF 2, JPA, Maven, Glassfish, JavaDB Implementa Bookmarkble URL Implementação de componentes compostos Open Source, parte do projeto Glassfish e agora
NetBeans Usa Beans Validation
Globalcode – Open4education
Demonstração do ScrumToys
Globalcode – Open4education
Perguntas & Respostas
Globalcode – Open4education
Mais informações
Blog da Globalcode http://blog.globalcode.com.br/2009/10/jsf-20-e-scrumtoys.html
Blog do Spock http://blog.spock.com.br/
E-mail do Spock [email protected] [email protected]
Globalcode – Open4education
Referências MC45 JavaServer Faces e Facelets: Um casamento perfeito http://www.globalcode.com.br/site/gratuitos/minicurso.seam?id=640
MC17 Introdução a JSF http://www.globalcode.com.br/site/gratuitos/minicurso.seam?id=362
MC27 Produtividade com JSF e EJB3 http://www.globalcode.com.br/site/gratuitos/minicurso.seam?id=428
MC31 Desenvolvendo um aplicativo completo com JSF, Facelets, Hibernate, AJAX e Design Patterns
http://www.globalcode.com.br/site/gratuitos/minicurso.seam?id=458