Spring Framework 3: Um 'brainstorm' de novas funcionalidades
JSF 2.0 e ScrumToys
1. JSF 2.0 e ScrumToys
Yara H. Senger Alberto Lemos (Dr. Spock)
Diretora Educacional Globalcode Instrutor/Arquiteto Globalcode
Globalcode – Open4education
2. 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
3. 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
4. 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
5. Deficiências na versão atual
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
6. 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
7. 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
9. 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
10. 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
11. Novo escopo: ViewScoped
No web.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
12. 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
13. Mecanismo de Eventos
Exemplos de código no ScrumToys:
jsf2.demo.scrum.web.event.*
jsf2.demo.scrum.web.controller.AbstractManager
Alguns eventos suportados:
AfterAddToParentEvent
BeforeRenderEvent
ViewMapCreatedEvent
ViewMapDestroyEvent
Suporte a tag: <f:event type=”...” listener=”...” />
Globalcode – Open4education
14. 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
15. 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
16. Navegação
Implí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
17. 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
20. Referências
JSF Scrum Demo
http://www.globalcode.com.br/site/noticias/painel.seam?
chave=jsf2scrumdemo
Blog Ed Burns
http://www.java.net/blogs/edburns
Blog Ryan Lubke
http://blogs.sun.com/rlubke/
JSF User Group
http://groups.google.com.br/group/javasf?hl=pt-BR
Globalcode – Open4education
21. 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
Globalcode – Open4education