webcast portlets-jsf

19
Desenvolvendo Desenvolvendo Portlets utilizando Portlets utilizando JSF, Ajax, Richfaces JSF, Ajax, Richfaces Gustavo Lira Consultor – 4Linux [email protected]

Upload: gustavo-lira-e-silva

Post on 05-Jul-2015

184 views

Category:

Technology


0 download

DESCRIPTION

Desenvolvendo portlets utilizando jsf, facelets, ajax e richfaces

TRANSCRIPT

Page 1: Webcast portlets-jsf

Desenvolvendo Desenvolvendo Portlets utilizando Portlets utilizando

JSF, Ajax, RichfacesJSF, Ajax, RichfacesGustavo Lira

Consultor – [email protected]

Page 2: Webcast portlets-jsf

Desenvolvendo Portlets utilizando JSF, Ajax, Richfaces

● O que será apresentado é uma continuação do WebCast “Escrevendo meu primeiro portlet”, cujo audio e slides podem ser baixados através do link http://www.4linux.com.br/podcasts/podcast-download-escrevendo-meu-primeiro-portlet.html

Page 3: Webcast portlets-jsf

JSF Portlet Bridge

● Permite usar um framework criado para um ambiente

de Servlets dentro de um Container de Portlets

● JSR-301 (JSF 1.2 x Portlet 1.0)

● JSR-329 (JSF 1.2 x Portlet 2.0)

● RIs no projeto Apache MyFaces, porém compatíveis com

outras implementações do JSF

Page 4: Webcast portlets-jsf

Bridge x Servidor de Aplicação

● Os JARs do Portlet Bridge devem ser inclusos na

aplicação ou copiados para o diretório de bibliotecas do

servidor

● Alguns servidores já possuem as bibliotecas do JSF e do

JSTL

● Cuidado com as dependências, ex: Jakarta Commons

Page 5: Webcast portlets-jsf

Projeto JSF Tradicional x Portlets

● Arquivos JAR do Portlet Bridge

● portlet.xml referencia o GenericFacesPortlet fornecido

pelo Bridge

● Configure views padrões para View (obrigatória), Edit e

Help

● Você poderá continuar usando o taglib de portlets

● Algumas extensões do JSF podem não ser compatíveis

com o Portlet Bridge!

Page 6: Webcast portlets-jsf

portlet.xml

<portlet> <description>Hora Mundial JSF</description> <portlet-name>hora-mundo-jsf</portlet-name> <display-name>Hora Mundial JSF</display-name> <portlet-class> javax.portlet.faces.GenericFacesPortlet</portlet-class>

<init-param> <name>javax.portlet.faces.defaultViewId.view</name> <value>/view.faces</value> </init-param> <init-param> <name>javax.portlet.faces.defaultViewId.help</name> <value>/help.faces</value> </init-param> <init-param> <name>javax.portlet.faces.defaultViewId.edit</name> <value>/edit.faces</value> </init-param>

Page 7: Webcast portlets-jsf

Como Funciona?

● O Portlet Bridge quebra o ciclo de processamento do JSF

nas fases action e render do portlet

● Como o JSF sempre faz POST, todas as requisições

serão actions (seguidas por renders)

● O portlet bridge não é um portlet!

● Ele é apenas um intermediador entre o JSF e o

container de portlets

Page 8: Webcast portlets-jsf

Como funciona?

Page 9: Webcast portlets-jsf

Namespaces x JSF

● Espera-se que a implementação do JSF utilize o

getPortletNamespace() sempre que necessário no

código Javascript e CSS gerado pelo render kit

● Componentes extras podem não ter esta inteligência, e

serem incompatíveis com o ambiente de Portlet

Page 10: Webcast portlets-jsf

JBoss Portlet Bridge

● É uma implementação da JSR-329 que utiliza a API 2.0

de portlets e JSF, com melhorias adicionadas ao suporte

a outros frameworks web (RichFaces e JBoss Seam)

● Neste momento, o JBoss Portlet Bridge é suportado

apenas para o GateIn, JBoss Portal ou eXo Platform

Page 11: Webcast portlets-jsf

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>

<!-- Cria-se dependência com o facelets-->

<context-param>

<param-name>javax.portlet.faces.RENDER_POLICY</param-name>

<param-value>ALWAYS_DELEGATE</param-value>

</context-param>

<!-- continua... -->

Page 12: Webcast portlets-jsf

web.xml

<!-- ...continuação -->

<filter>

<display-name>Ajax4jsf Filter</display-name>

<filter-name>ajax4jsf</filter-name>

<filter-class>org.ajax4jsf.Filter</filter-class>

</filter>

<filter-mapping>

<filter-name>ajax4jsf</filter-name>

<servlet-name>Faces Servlet</servlet-name>

<dispatcher>FORWARD</dispatcher>

<dispatcher>REQUEST</dispatcher>

<dispatcher>INCLUDE</dispatcher>

</filter-mapping>

<!-- continua... -->

Page 13: Webcast portlets-jsf

web.xml

<!-- ...continuação →

<!-- Pode-se usar xhtml ou jsp normalmente -->

<context-param>

<param-name>javax.faces.DEFAULT_SUFFIX</param-name>

<param-value>.xhtml</param-value>

</context-param>

<!-- Pode-se usar outras configurações opcionais --->

<context-param>

<param-name>org.richfaces.LoadStyleStrategy</param-name>

<param-value>ALL</param-value>

</context-param>

</web-app>

Page 14: Webcast portlets-jsf

faces-config.xml

Page 15: Webcast portlets-jsf

cadastraTarefas.xhtml

Page 16: Webcast portlets-jsf

cadastraTarefas.xhtml

Page 17: Webcast portlets-jsf

listaTarefas.xhtml

Page 18: Webcast portlets-jsf

listaTarefas.xhtml

Page 19: Webcast portlets-jsf

Obrigado

[email protected]

www.4linux.com.br

twitter.com/4LinuxBR

Tel: 55-11-2125-4747