2 / 49www.4linux.com.br
 Experiência em missão crítica de missão crítica
 Pioneira no ensino de Linux à distância
 Parc...
3 / 49www.4linux.com.br
As grandesAs grandes
novidades do JSFnovidades do JSF
2.0!2.0!
4 / 49www.4linux.com.br
A evoluçãoA evolução
● JSF 1.0 – Lançado em março de 2004, sua especificação
é a JSR 127, não faz ...
5 / 49www.4linux.com.br
A evoluçãoA evolução
● JSF 1.2 – Lançado em maio de 2006, compatível com
servlet 2.5 e JSP 2.1. Se...
6 / 49www.4linux.com.br
Principais mudanças ePrincipais mudanças e
melhorias do JSF 2.0melhorias do JSF 2.0
● Lançado em J...
7 / 49www.4linux.com.br
Principais mudanças ePrincipais mudanças e
melhorias do JSF 2.0melhorias do JSF 2.0
● Integração n...
8 / 49www.4linux.com.br
ResourcesResources
● Como era até o JSF 1.2
<link href=
"#{facesContext.externalContext.requestCon...
9 / 49www.4linux.com.br
ResourcesResources
<h:outputStylesheet library="css" name=”meucss.css"/>
<h:outputScript library="...
10 / 49www.4linux.com.br
AnotaçõesAnotações
● Com o JSF 2 é possível criar managed beans e atribuir
um escopo, converters ...
11 / 49www.4linux.com.br
AJAX nativoAJAX nativo
● Nas versões 1.x do JSF é necessário a recorrer a
frameworks JSF de terce...
12 / 49www.4linux.com.br
AJAX nativoAJAX nativo
● Uma das principais melhorias no JSF 2 é a possibilidade
de fazer requisi...
13 / 49www.4linux.com.br
Ajax nativoAjax nativo
● Nova API Javascript para requisições Ajax e acesso aos
componentes:
<h:o...
14 / 49www.4linux.com.br
Ajax NativoAjax Nativo
● @all - Todos os components da página.
● @none – Nenhum componente da pág...
15 / 49www.4linux.com.br
EscoposEscopos
● Com o JSF 2 novos escopos foram adicionados:
@ViewScoped e @CustomScoped
● Utili...
16 / 49www.4linux.com.br
View ScopeView Scope
@ManagedBean(name="clienteMB")
@ViewScoped
public class ClienteMB {
…
}
@Nam...
17 / 49www.4linux.com.br
Navegação implícitaNavegação implícita
● No JSF 1.2 as regras de navegação obrigatoriamente
preci...
18 / 49www.4linux.com.br
Navegação implícitaNavegação implícita
● Com o JSF 2 basta apenas informar o caminho da view
nas ...
19 / 49www.4linux.com.br
Navegação ImplicitaNavegação Implicita
● faces-redirect=true indica um redirecionamento do
navega...
20 / 49www.4linux.com.br
Navegação condicionalNavegação condicional
● Diferentemente da navegação implícita, a navegação
c...
21 / 49www.4linux.com.br
Navegação condicionalNavegação condicional
<navigation-rule>
<from-view-id> boasvindas.xhtml </fr...
22 / 49www.4linux.com.br
Bean ValidationBean Validation
● JSF 2 é compatível com a JSR 303 – Bean Validation
● É necessári...
23 / 49www.4linux.com.br
Bean ValidationBean Validation
public class Cliente implements Serializable {
@NotNull
private Lo...
24 / 49www.4linux.com.br
Bean ValidationBean Validation
<h:messages />
<h:form>
<h:panelGrid columns="2">
Nome <h:inputTex...
25 / 49www.4linux.com.br
View ParametersView Parameters
● View Parameters servem para atribuir os valores da query
string ...
26 / 49www.4linux.com.br
View ParametersView Parameters
Utilizamos as tags <h:link> ou <h:button> para requisições
GET
<h:...
27 / 49www.4linux.com.br
SelectItemsSelectItems
● No JSF 1.2 para utilizarmos componentes do tipo select
one e select many...
28 / 49www.4linux.com.br
SelectItemsSelectItems
<h:selectOneRadio value="#{produto.status}>
<f:selectItems value="#{produt...
29 / 49www.4linux.com.br
Project StageProject Stage
● Com o JSF 2 é possível especificar no web.xml em quase
fase do ciclo...
30 / 49www.4linux.com.br
Project StageProject Stage
● Os valores possíveis são Development, UnitTest,
SystemTest, Producti...
31 / 49www.4linux.com.br
Composite ComponentsComposite Components
● Provê meios mais simples de criar um componente
custom...
32 / 49www.4linux.com.br
Composite ComponentsComposite Components
<cc:implementation>
<h:form>
#{cc.attrs.title} - #{cc.at...
33 / 49www.4linux.com.br
Composite ComponentsComposite Components
● Utilizando um componente criado:
<html... xmlns:mo=”ht...
34 / 49www.4linux.com.br
Integração com CDIIntegração com CDI
● Integração com as especificações JSR 299 (CDI) e JSR
330 (...
35 / 49www.4linux.com.br
Integração com CDIIntegração com CDI
@Stateless
@LocalBean
@Named("movieService")
public class Mo...
36 / 49www.4linux.com.br
JSF 2.2JSF 2.2
● Nova especificação – JSR 344
● Será lançado antes do Java EE 7
● Proposed Final ...
37 / 49www.4linux.com.br
JSF 2.2 – File UploadJSF 2.2 – File Upload
● File Upload nativo.
● Suporte a AJAX.
● Compatível c...
38 / 49www.4linux.com.br
JSF 2.2 – viewActionJSF 2.2 – viewAction
ComponentComponent
● Com o JSF 2.2 existe um novo compon...
39 / 49www.4linux.com.br
JSF 2.2 – viewActionJSF 2.2 – viewAction
ComponentComponent
public String verificaProduto() {
boo...
40 / 49www.4linux.com.br
JSF 2.2 – viewActionJSF 2.2 – viewAction
ComponentComponent
● A especificação do JSF 2 exige pelo...
41 / 49www.4linux.com.br
JSF 2.2 – viewAction eJSF 2.2 – viewAction e
Navageção ImplícitaNavageção Implícita
● Compatível ...
42 / 49www.4linux.com.br
JSF 2.2 – DI em todos osJSF 2.2 – DI em todos os
artefatos JSFartefatos JSF
● Até o JSF 2.1 somen...
43 / 49www.4linux.com.br
JSF 2.2 – DI em todos osJSF 2.2 – DI em todos os
artefatos JSFartefatos JSF
@FacesConverter(value...
44 / 49www.4linux.com.br
JSF 2.2 – DI em todos osJSF 2.2 – DI em todos os
artefatos JSFartefatos JSF
@FacesConverter(value...
45 / 49www.4linux.com.br
JSF 2.2 – Vários outrosJSF 2.2 – Vários outros
recursosrecursos
● Gerenciar requisições ajax em u...
46 / 49www.4linux.com.br
JSF 2 – FrameworksJSF 2 – Frameworks
● RichFaces 4 - http://www.jboss.org/richfaces
● PrimeFaces ...
47 / 49www.4linux.com.br
ReferênciasReferências
● http://www.jcp.org/en/jsr/detail?id=314
● http://docs.jboss.org/seam/3/f...
48 / 49www.4linux.com.br
Código fonteCódigo fonte
● https://github.com/gabriel-ozeas/javaone2011
● Para executar é necessá...
49 / 49www.4linux.com.br
ObrigadoObrigado
Gustavo Lira
Gabriel Ozeas
gustavo@4linux.com.br
gabriel.ozeas@4linux.com.br
www...
As grandes novidades do JSF 2.0!
Upcoming SlideShare
Loading in …5
×

As grandes novidades do JSF 2.0!

7,807
-1

Published on

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
7,807
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
147
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

As grandes novidades do JSF 2.0!

  1. 1. 2 / 49www.4linux.com.br  Experiência em missão crítica de missão crítica  Pioneira no ensino de Linux à distância  Parceira de treinamento IBM  Primeira com LPI no Brasil  + de 30.000 alunos satisfeitos  Reconhecimento internacional  Inovação com Hackerteen e Boteconet
  2. 2. 3 / 49www.4linux.com.br As grandesAs grandes novidades do JSFnovidades do JSF 2.0!2.0!
  3. 3. 4 / 49www.4linux.com.br A evoluçãoA evolução ● JSF 1.0 – Lançado em março de 2004, sua especificação é a JSR 127, não faz parte do conjunto de tecnologias padrões do Java EE. Compatível com servlet 2.3 e JSP 1.2 ● JSF 1.1 – Lançado em maio de 2004, bug fixes corrigidos e ganhos de performance, a especificação continua a mesma, continua não fazendo parte do padrão Java EE, possui suporte para a JDK 1.3 ou superior. Compatível com servlet 2.3 e JSP 1.2.
  4. 4. 5 / 49www.4linux.com.br A evoluçãoA evolução ● JSF 1.2 – Lançado em maio de 2006, compatível com servlet 2.5 e JSP 2.1. Segue a JSR 252. Faz parte do Java EE 5. Possui várias vantagens por utilizar JSP 2.1, por exemplo, integração com JSTL e Unified Expression Language, entre outras.
  5. 5. 6 / 49www.4linux.com.br Principais mudanças ePrincipais mudanças e melhorias do JSF 2.0melhorias do JSF 2.0 ● Lançado em Julho de 2009. Desenvolvido seguindo a JSR 314. Faz parte do Java EE 6. Compatível com CDI, Servlet 3, JSP 2.2. ● Inúmeras mudanças foram adotadas na versão 2.0. Para acompanhar todas as mudanças consulte o preface 1 da JSR 314 liberado em julho de 2009 ● As principais mudanças e melhorias adotadas foram: ✔ AJAX nativo ✔ Anotações ✔ Navegação implícita e condicional
  6. 6. 7 / 49www.4linux.com.br Principais mudanças ePrincipais mudanças e melhorias do JSF 2.0melhorias do JSF 2.0 ● Integração nativa com a JSR 303 Bean Validation ✔ View Parameters ✔ Passagem de parâmetros via GET ● View Scope ● Custom Scope ● faces-config opcional ● Facelets como view padrão ● Project Stage ● Resources ● SelectItens mais “usáveis” ✔ Inúmeras outras melhorias
  7. 7. 8 / 49www.4linux.com.br ResourcesResources ● Como era até o JSF 1.2 <link href= "#{facesContext.externalContext.requestContextPath}/css/ estilo.css" rel=”stylesheet”> ● No JSF 2 novas tags foram adicionadas para o carregamento de CSS, Javascript, imagens ● Pode ser utilizado um mecanismo padrão para carregar estes recursos na página, que consiste em criar um diretório chamado resources na raiz da aplicação ● É possível definir se o javascript ou css será carregado no head ou body da página através do atributo targeT
  8. 8. 9 / 49www.4linux.com.br ResourcesResources <h:outputStylesheet library="css" name=”meucss.css"/> <h:outputScript library="js" name="meujs.js" target="head"/> <h:graphicImage library="imagens" name="logo.jpg"/> ● #{resources['images:logo.jpg']} ● Exemplo de estrutura de diretórios:
  9. 9. 10 / 49www.4linux.com.br AnotaçõesAnotações ● Com o JSF 2 é possível criar managed beans e atribuir um escopo, converters e validators com anotações sem utilizar nenhuma linha de XML no faces-config. ● Abaixo algumas anotações incluídas no JSF 2 @ManagedBean, @ManagedProperty @FacesValidator, @FacesConverter @ApplicationScoped, @SessionScoped, @RequestScoped, @ViewScoped, @NoneScoped, @CustomScoped ● O faces-config.xml pode ser utilizado apenas para regras de navegação mais complexas.
  10. 10. 11 / 49www.4linux.com.br AJAX nativoAJAX nativo ● Nas versões 1.x do JSF é necessário a recorrer a frameworks JSF de terceiros, por exemplo, RichFaces, IceFaces, PrimeFaces. ● Abaixo um trecho de código utilizando JSF 1.2 <h:form id="formulario"> <h:panelGrid columns="2"> <h:inputText id="inputNome" value="#{usuarioMB.nome}"> <a4j:support event="onkeyup" reRender="outNome" /> </h:inputText> <h:outputText id="outNome" value="#{usuarioMB.name}" /> </h:panelGrid> </h:form>
  11. 11. 12 / 49www.4linux.com.br AJAX nativoAJAX nativo ● Uma das principais melhorias no JSF 2 é a possibilidade de fazer requisições de forma nativa sem a necessidade de um utilizar um framework visual de terceiros para isso. ● Abaixo o mesmo trecho de código utilizando JSF 2.0 <h:form id="formulario"> <h:panelGrid columns="2"> <h:inputText id="inputNome" value="#{usuarioMB.nome}"> <f:ajax event="keyup" render="outNome"/> </h:inputText> <h:outputText id="outNome" value="#{usuarioMB.nome}" /> </h:panelGrid> </h:form>
  12. 12. 13 / 49www.4linux.com.br Ajax nativoAjax nativo ● Nova API Javascript para requisições Ajax e acesso aos componentes: <h:outputScript name="jsf.js" library="javax.faces" target="head"></h:outputScript> ● jsf.specversion ● jsf.getProjectStage() jsf.ajax.addOnEvent(metodoDeCallback) / addOnError ● <h:commandButton id=”button1” action=”addComment” value=”Comentar” onclick=”jsf.ajax.request(this, event, {execute:'button1', render: 'status', onevent: handleEvent, onError: handleError}); return false;”/>
  13. 13. 14 / 49www.4linux.com.br Ajax NativoAjax Nativo ● @all - Todos os components da página. ● @none – Nenhum componente da página. ● @this – O selemento que disparou o pedido. ● @form – O Formulário e os components desse formulário.
  14. 14. 15 / 49www.4linux.com.br EscoposEscopos ● Com o JSF 2 novos escopos foram adicionados: @ViewScoped e @CustomScoped ● Utilizando CDI em substituição aos Managed Beans podemos utilizar o escopo de conversação: @ConversationScoped ● Para quem já estava acostumado a utilizar o JBoss Seam, o @ViewScoped é similar ao escopo de página e o @ConversationScoped similar ao escopo de conversação, já existentes desde a primeira versão do Seam.
  15. 15. 16 / 49www.4linux.com.br View ScopeView Scope @ManagedBean(name="clienteMB") @ViewScoped public class ClienteMB { … } @Named(value="clienteMB") @ConversationScoped public class ClienteMB { … }
  16. 16. 17 / 49www.4linux.com.br Navegação implícitaNavegação implícita ● No JSF 1.2 as regras de navegação obrigatoriamente precisavam ser configuradas no faces-config.xml <navegation-rule> <from-view-id>/usuario/boasvindas.xhtml</from-view-id> <navegation-case> <from-outcome>new</from-outcome> <to-view-id>/usuario/cadastrousuario.xhtml</to-view-id> </navegation-case> </navegation-rule>
  17. 17. 18 / 49www.4linux.com.br Navegação implícitaNavegação implícita ● Com o JSF 2 basta apenas informar o caminho da view nas actions, eliminando a necessidade de criar todas as vezes regras de navegações no faces-config.xml public String novoUsuario() { usuario = new Usuario(); return "/usuario/cadastrousuario"; } ● Também podemos fazer da seguinte forma: <h:commandButton action="/usuario/cadastrousuario" value="Cadastrar usuário"
  18. 18. 19 / 49www.4linux.com.br Navegação ImplicitaNavegação Implicita ● faces-redirect=true indica um redirecionamento do navegador. – /user/list.xhtml?faces-redirect=true ● Inclui a extensão .xhtml caso não tenha. ● Inclui / caso não tenha. ● Procura por uma view com esse viewId, por exemplo: – user/list => /user/list.xhtml ● Caso não encontre a view, a navegação implicita é encerrada, e torna a string um outcome. ●
  19. 19. 20 / 49www.4linux.com.br Navegação condicionalNavegação condicional ● Diferentemente da navegação implícita, a navegação condicional e definida no faces-config.xml ● Oferece maior poder de controle para a tag <navigation- case> ● Feita através da tag <if> dentro de um <navigation-case> ● Podem ser adicionadas quantas tags <if> forem necessárias ● A tag <if> deve apontar para um método ou expressão que retorne um valor valor booleano. A regra de navegação somente será executada caso todas as tags <if> retornem true.
  20. 20. 21 / 49www.4linux.com.br Navegação condicionalNavegação condicional <navigation-rule> <from-view-id> boasvindas.xhtml </from-view-id> <navigation-case> <from-outcome> edit </from-outcome> <if> #{usuarioBean.isAdmin} </if> <if> #{usuarioBean.idade > 18} </if> <to-view-id> cadastrousuario.xhtml </to-view-id> </navigation-case> </navigation-rule>
  21. 21. 22 / 49www.4linux.com.br Bean ValidationBean Validation ● JSF 2 é compatível com a JSR 303 – Bean Validation ● É necessário que o ambiente ofereça suporte para o Bean Validation ● Possui mecanismos avançados e customizáveis de validação ● Proporciona maior reaproveitamento de código para o JSF pois as regras de validação não ficam vinculadas diretamente nas páginas
  22. 22. 23 / 49www.4linux.com.br Bean ValidationBean Validation public class Cliente implements Serializable { @NotNull private Long id; @NotNull private String nome; @Size(max=30) private String sobrenome; @Past private Date dataNascimento; @Pattern(regexp = ".+@.+.[a-z]+" message="O e-mail informado não é válido") private String email; ...
  23. 23. 24 / 49www.4linux.com.br Bean ValidationBean Validation <h:messages /> <h:form> <h:panelGrid columns="2"> Nome <h:inputText value="#{clienteMB.cliente.nome}" /> Sobrenome <h:inputText value="#{clienteMB.cliente.sobrenome}" > <f:validateBean disabled="true"/> – </h:inputText> – Email <h:inputText value="#{clienteMB.cliente.email}" /> Id <h:inputText value="#{clienteMB.cliente.id}" /> <h:commandButton action="page2" value="Enviar" /> </h:panelGrid> </h:form>
  24. 24. 25 / 49www.4linux.com.br View ParametersView Parameters ● View Parameters servem para atribuir os valores da query string passados por uma requisição GET de forma apropriada para o bean (managed bean ou CDI) ● Utilizamos as tags <f:metadata> e <f:viewParam> para atribuir os valores da query string no bean <f:metadata> <f:viewParam name="id" value="#{clienteMB.cliente.id}"/> </f:metadata> ● ● Http://localhost:8080/client/show.xhtml?id=1
  25. 25. 26 / 49www.4linux.com.br View ParametersView Parameters Utilizamos as tags <h:link> ou <h:button> para requisições GET <h:link outcome="editar" value="Editar"> <f:param name="id" value="#{cliente.id}"></f:param> </h:link> ● View Parameters podem ser utilizados para criar bookmarked links.
  26. 26. 27 / 49www.4linux.com.br SelectItemsSelectItems ● No JSF 1.2 para utilizarmos componentes do tipo select one e select many de forma dinâmica era necessário ou criar uma lista de SelectItems ou um Map public List<SelectItem> getComboStatus(){ List<SelectItem> lista = new ArrayList<SelectItem>(); List<Status> resultado = getBuscaStatus(); for(Status s: resultado) lista.add(new SelectItem(s.id, s.nome)); return lista; }
  27. 27. 28 / 49www.4linux.com.br SelectItemsSelectItems <h:selectOneRadio value="#{produto.status}> <f:selectItems value="#{produto.comboStatus}"/> </h:selectOneRadio> ● Com o JSF 2 não precisamos mais criar uma lista de SelectItems ● É possível passar um List para os componentes do tipo select one e select many ● Novos atributos foram adicionados na tag <f:selectItems> <h:selectOneRadio value="#{produto.status}> <f:selectItems value="#{produto.comboStatus}" var="s" itemLabel="#{s.nome}" itemValue="#{s.id}" /> </h:selectOneRadio>
  28. 28. 29 / 49www.4linux.com.br Project StageProject Stage ● Com o JSF 2 é possível especificar no web.xml em quase fase do ciclo de desenvolvimento a aplicação se encontra <context-param> <param-name> javax.faces.PROJECT_STAGE </param-name> <param-value> Development </param-value> </context-param> ● Essa propriedade de configuração, permite que o JSF emita mensagens de erros mais completas no cliente, faciltando o desenvolvimento.
  29. 29. 30 / 49www.4linux.com.br Project StageProject Stage ● Os valores possíveis são Development, UnitTest, SystemTest, Production, Extension. #{facesContext.application.projectStage} #{initParam['javax.faces.PROJECT_STAGE']} ● //Verificando através do enum de ProjectStage FacesContext facesContext = FacesContext.getCurrentInstance(); if (facesContext.isProjectStage(ProjectStage.Development)) { // executa determinada ação }
  30. 30. 31 / 49www.4linux.com.br Composite ComponentsComposite Components ● Provê meios mais simples de criar um componente customizado, sem a necessidade de criar tlds ou estender Renders. ● Simplesmente utilizando tag é possível criar um componente. <html... xmlns:cc=”http://java.sun.com/jsf/composite/”> <cc:interface> <cc:attribute name="title"/> <cc:attribute name="description" required=”true”/> <cc:attribute name=”actionMethod” method-signature=”java.lang.String adicionar()” /> ● </cc:interface> ..
  31. 31. 32 / 49www.4linux.com.br Composite ComponentsComposite Components <cc:implementation> <h:form> #{cc.attrs.title} - #{cc.attrs.description} <h:commandButton action=”#{cc.attrs.actionMethod}” value=”Confirmar”/> </h:form> </cc:implementation> </html>
  32. 32. 33 / 49www.4linux.com.br Composite ComponentsComposite Components ● Utilizando um componente criado: <html... xmlns:mo=”http://java.sun.com/jsf/composite/moviecomp”> … <mo:moviebox title=”#{movie.title}” actionMethod=””/> </html>
  33. 33. 34 / 49www.4linux.com.br Integração com CDIIntegração com CDI ● Integração com as especificações JSR 299 (CDI) e JSR 330 (DI) ● JSR 299: Provê uma arquitetura com escopes bom definidos. Também traz transiocionalidade a camada web. ● JSR 330: Provê conjunto de anotações para realizar injeção de dependência. ● É possível utilizar diretamente na view qualquer um EJB que utiliza CDI.
  34. 34. 35 / 49www.4linux.com.br Integração com CDIIntegração com CDI @Stateless @LocalBean @Named("movieService") public class MovieManagerSessionBean { @PersistenceContext(unitName = "movie-persistence") private EntityManager entityManager; ….. <h:dataTable value="#{movieService.allMovies}" var="movie" styleClass="tabela" headerClass="header" rowClasses="odd,even">
  35. 35. 36 / 49www.4linux.com.br JSF 2.2JSF 2.2 ● Nova especificação – JSR 344 ● Será lançado antes do Java EE 7 ● Proposed Final Draft Published = Março de 2012
  36. 36. 37 / 49www.4linux.com.br JSF 2.2 – File UploadJSF 2.2 – File Upload ● File Upload nativo. ● Suporte a AJAX. ● Compatível com Portlets ● Será criado um novo componente <h:inputFile /> ● Possuirá atributos que permitirá o desenvolvedor habilitar ou não o uso de ajax, javascript, portlet e entre outros.
  37. 37. 38 / 49www.4linux.com.br JSF 2.2 – viewActionJSF 2.2 – viewAction ComponentComponent ● Com o JSF 2.2 existe um novo componente chamado de viewAction que proporciona uma maneira mais fácil e rápida para fazer determinadas validações no lado do servidor ● Similar ao componente <s:viewAction> do Seam 3 ● <f:viewAction> é declarado como child de <f:metadata> <f:metadata> <f:viewParam name="id" value="#{produto.id}"/> <f:viewAction action="#{produto.verificaProduto}"/> </f:metadata>
  38. 38. 39 / 49www.4linux.com.br JSF 2.2 – viewActionJSF 2.2 – viewAction ComponentComponent public String verificaProduto() { boolean isExists = verificaProduto(produto.id); if(!isExists) facesContext.addMessage(null, new FacesMessage("Produto não encontrado")); return null; } ● Links bookmarkable mais eficientes. Maior controle dos parâmetros GET
  39. 39. 40 / 49www.4linux.com.br JSF 2.2 – viewActionJSF 2.2 – viewAction ComponentComponent ● A especificação do JSF 2 exige pelo menos um view parameter dentro de um view metadata para que ele seja executado, porém, o JSF 2.2 não possui esse pré- requisito ● Pode ser usado em qualquer fase do ciclo de vida do JSF <f:viewAction action="#{catalog.checkItem}" phase="UPDATE_MODEL_VALUES"/> ● Especificamos a fase do ciclo de vida do JSF através da constante da classe javax.faces.event.PhaseID
  40. 40. 41 / 49www.4linux.com.br JSF 2.2 – viewAction eJSF 2.2 – viewAction e Navageção ImplícitaNavageção Implícita ● Compatível com regras de navegação <navigation-rule> <from-view-id>/index.xhtml</from-view-id> <navigation-case> <from-action> #{produdo.verificaProduto} </from-action> <if>#{!produto.isInvalido} </if> <to-view-id>/listaProdutos.xhtml</to-view-id> <redirect/> </navigation-case> </navigation-rule>
  41. 41. 42 / 49www.4linux.com.br JSF 2.2 – DI em todos osJSF 2.2 – DI em todos os artefatos JSFartefatos JSF ● Até o JSF 2.1 somente era possível fazer DI para EJBs (@EJB), CDI (@Inject) e managed beans do JSF ● Mas e os Converters? Validators? Como eu faço DI de um EJB neles? ● JSF 2.0 e 2.1 = lookup ● JSF 2.2 = DI
  42. 42. 43 / 49www.4linux.com.br JSF 2.2 – DI em todos osJSF 2.2 – DI em todos os artefatos JSFartefatos JSF @FacesConverter(value="br.com.fourlinux.videostore.conve rters.Movie") public class MovieConverter implements Converter { @Override public Object getAsObject(FacesContext context, UIComponent component, String value) { MovieManagerSessionBean movies; try { Context jndiContext = new InitialContext(); movies = (MovieManagerSessionBean) jndiContext .lookup("java:module/MovieManagerSessionBean"); ...
  43. 43. 44 / 49www.4linux.com.br JSF 2.2 – DI em todos osJSF 2.2 – DI em todos os artefatos JSFartefatos JSF @FacesConverter(value="br.com.fourlinux.videostore.conve rters.Movie") public class MovieConverter implements Converter { @Override public Object getAsObject(FacesContext context, UIComponent component, String value) { @EJB MovieManagerSessionBean movies; ...
  44. 44. 45 / 49www.4linux.com.br JSF 2.2 – Vários outrosJSF 2.2 – Vários outros recursosrecursos ● Gerenciar requisições ajax em um fila (queue control) ● Suporte a HTML 5 ● Maior integração com portlets
  45. 45. 46 / 49www.4linux.com.br JSF 2 – FrameworksJSF 2 – Frameworks ● RichFaces 4 - http://www.jboss.org/richfaces ● PrimeFaces 2 - http://www.primefaces.org/ ● IceFaces 2 - http://www.icefaces.org/ ● MyFaces Trinidad 2.0 - http://myfaces.apache.org/trinidad
  46. 46. 47 / 49www.4linux.com.br ReferênciasReferências ● http://www.jcp.org/en/jsr/detail?id=314 ● http://docs.jboss.org/seam/3/faces/latest/reference/en-US/html/components.html#viewaction ● http://java.net/jira/secure/IssueNavigator.jspa?mode=hide&requestId=10268 ● http://javaserverfaces-spec-public.java.net/
  47. 47. 48 / 49www.4linux.com.br Código fonteCódigo fonte ● https://github.com/gabriel-ozeas/javaone2011 ● Para executar é necessário o maven ● mvn clean package cargo:run ● localhost:8080 cai direto na aplicação!
  48. 48. 49 / 49www.4linux.com.br ObrigadoObrigado Gustavo Lira Gabriel Ozeas gustavo@4linux.com.br gabriel.ozeas@4linux.com.br www.4linux.com.br www.hackerteen.com twitter.com/4LinuxBR Tel: 55-11-2125-4747

×