SlideShare une entreprise Scribd logo
1  sur  53
customizando o




  JSP         Portlets
                                                                                                       by


                            http://www.flickr.com/photos/dejay181/460664432/in/set-72157594529615566/        1
Monday, November 16, 2009
2
Monday, November 16, 2009
O Liferay possui diversos níveis de
                        customização

                                                Customização
                                                    Liferay




                                                   Extension    Código
                            Plugins
                                                  Environment   Fonte




    Portlets                Temas     Layouts

                                                                         3
Monday, November 16, 2009
Portlets
                            revisão
Monday, November 16, 2009
Criação do
                             portlet

/liferay/liferay-plugins-sdk-5.2.3/portlets $ ./create.sh hello-liferay "Hello Liferay"
Buildfile: build.xml

create:
   [unzip] Expanding: /Volumes/Data/Documents/sea/edu/liferay/apps/liferay-plugins-sdk-5.2.3/
portlets/portlet.zip into /Volumes/Data/Documents/sea/edu/liferay/apps/liferay-plugins-
sdk-5.2.3/portlets/hello-liferay-portlet
   [mkdir] Created dir: /Volumes/Data/Documents/sea/edu/liferay/apps/liferay-plugins-
sdk-5.2.3/portlets/hello-liferay-portlet/docroot/WEB-INF/tld
    [copy] Copying 6 files to /Volumes/Data/Documents/sea/edu/liferay/apps/liferay-plugins-
sdk-5.2.3/portlets/hello-liferay-portlet/docroot/WEB-INF/tld

BUILD SUCCESSFUL
Total time: 6 seconds




                                                                                                5
Monday, November 16, 2009
/liferay/liferay-plugins-sdk-5.2.3/portlets/hello-liferay-portlet $ ant   deploy
 Buildfile: build.xml

 compile:

 merge:
                                                                           Deploy do
   [javac] Compiling 1 source file to /Volumes/Data/Documents/sea/edu/liferay/apps/liferay-plugins-
 sdk-5.2.3/portlets/hello-liferay-portlet/docroot/WEB-INF/classes             portlet
 merge:

 war:
   [mkdir] Created dir: /Volumes/Data/Documents/sea/edu/liferay/apps/liferay-plugins-sdk-5.2.3/dist

 clean-portal-dependencies:
     [zip] Building zip: /Volumes/Data/Documents/sea/edu/liferay/apps/liferay-plugins-sdk-5.2.3/dist/
 hello-liferay-portlet-5.2.3.1.war

 deploy:
    [copy] Copying 1 file to /liferay/liferay-portal-5.2.3/deploy

 BUILD SUCCESSFUL
 Total time: 24 seconds

                                                                                                        6
Monday, November 16, 2009
Utilização do
                      portlet


                                   7
Monday, November 16, 2009
Importação do
                              projeto do
                                portlet




                                            8
Monday, November 16, 2009
um pacote WAR de portlets contém...




                                    my-portlet.war


Classes + Recursos + Descritor
                                                                  9
Monday, November 16, 2009
Descritores podem ser...

                                Padrões
                                 web.xml
                                portlet.xml



           my-portlet.war   Proprietários
                            liferay-portlet.xml
                            liferay-display.xml
                                                       10
Monday, November 16, 2009
Portlets têm

                            modos
                            definem a função do portlet no instante

                                                                     11
Monday, November 16, 2009
Portlets têm

               estados      definem o tamanho da tela que estão ocupando

                                                                          12
Monday, November 16, 2009
Portlet
           API



                            13
Monday, November 16, 2009
O mais comum, entretanto, é
          o uso da classe
      GenericPortlet, que
   ‘substitui’ o método render
      por outros 3 métódos
     doView, doEdit e doHelp




                                 14
Monday, November 16, 2009
O mais comum, entretanto, é
          o uso da classe
      GenericPortlet, que
   ‘substitui’ o método render
      por outros 3 métódos
     doView, doEdit e doHelp

       Invocado para
      renderização do
      portlet no modo
           View
                                 14
Monday, November 16, 2009
O mais comum, entretanto, é
          o uso da classe
      GenericPortlet, que
   ‘substitui’ o método render
      por outros 3 métódos
     doView, doEdit e doHelp

                             Invocado para
                            renderização do
                            portlet no modo
                                  Edit
                                              14
Monday, November 16, 2009
O mais comum, entretanto, é
          o uso da classe
      GenericPortlet, que
   ‘substitui’ o método render
      por outros 3 métódos
     doView, doEdit e doHelp

                             Invocado para
                            renderização do
                            portlet no modo
                                 Help
                                              14
Monday, November 16, 2009
JSP Portlets
           a forma de portlet mais simples



Monday, November 16, 2009
Nosso portlet...


                             16
Monday, November 16, 2009
...suporta apenas
                             o modo View,
                            através da página
                                  view.jsp




                                                17
Monday, November 16, 2009
Fragmento de
       HTML gerado por
          view.jsp

                            18
Monday, November 16, 2009
19
Monday, November 16, 2009
<portlet>
   <portlet-name>hello-liferay</portlet-name>
   <display-name>Hello Liferay</display-name>
   <portlet-class>com.sample.jsp.portlet.JSPPortlet</portlet-class>
   <init-param>
   	 	 	 <name>view-jsp</name>
   	 	 	 <value>/view.jsp</value>
   </init-param>
   <init-param>
   	 	 	 <name>edit-jsp</name>
   	 	 	 <value>/edit.jsp</value>
   </init-param>
   (...)
   <supports>                                    Vamos
      <mime-type>text/html</mime-type>        acrescentar
      <portlet-mode>view</portlet-mode>        também o
      <portlet-mode>edit</portlet-mode>     suporte o modo
   </supports>
   (...)
                                                  Edit
                                                                 20
Monday, November 16, 2009
<portlet>
   <portlet-name>hello-liferay</portlet-name>
   <display-name>Hello Liferay</display-name>
   <portlet-class>com.sample.jsp.portlet.JSPPortlet</portlet-class>
   <init-param>
   	 	 	 <name>view-jsp</name>
   	 	 	 <value>/view.jsp</value>           Quando mais de
   </init-param>                               um modo é
   <init-param>                              suportado pelo
   	 	 	 <name>edit-jsp</name>              portlet, é preciso
   	 	 	 <value>/edit.jsp</value>             especificá-los
   </init-param>
   (...)
   <supports>
      <mime-type>text/html</mime-type>
      <portlet-mode>view</portlet-mode>
      <portlet-mode>edit</portlet-mode>
   </supports>
   (...)
                                                                 21
Monday, November 16, 2009
Criamos a página
                            edit.jsp para o
                             modo Edit do
                                portlet


                                               22
Monday, November 16, 2009
Fazemos o
                            deploy do
                             portlet...




                                          23
Monday, November 16, 2009
Modo Edit
                            habilitado...
                                            24
Monday, November 16, 2009
...e
                            funcionando

                                          25
Monday, November 16, 2009
Geralmente, o modo Edit é utilizado
para se fazer configurações do portlet.
   Logo, façamos algo interessante.



                                     26
Monday, November 16, 2009
Vamos modificar a página
                             edit.jsp para simular um
                              formulário simples de
                                    configuração
                                                        27
Monday, November 16, 2009
Nosso formulário
                            de configurações



                                               28
Monday, November 16, 2009
Evita o conflito de nomes
                               na página do portal
                             (lembre-se que este é apenas um
                                  fragmento de HTML)




                                                               29
Monday, November 16, 2009
Qual URL deverá ser
                            chamada no submit do
                                 formulário?




                                                   29
Monday, November 16, 2009
De fato, não sabemos.
              o portlet é quem tem que nos dizer




                                                   30
Monday, November 16, 2009
A classe GenericPortlet
                            disponibiliza 3 métódos de
                             renderização de portlet
                             doView, doEdit, doHelp
                                ...que são chamados antes do
                                 portlet entrar em um modo
                                          específico



                                                               31
Monday, November 16, 2009
Portanto, vamos modificar o
                            método doEdit para que a
                              URL a ser utilizada pelo
                            formulário de edit.jsp seja
                            previamente disponibilizada
                                                          32
Monday, November 16, 2009
E modificar a página
                            edit.jsp para que a action
                                do formulário seja
                            corretamente configurada

                                                         33
Monday, November 16, 2009
Visualmente,
                nada mudou...


                                34
Monday, November 16, 2009
<form
id="_helloliferay_WAR_helloliferayportlet_INSTANC
E_S6Et_helloForm" 	
action="http://localhost:8080/web/guest/home?
p_p_id=helloliferay_WAR_helloliferayportlet_INSTA
NCE_S6Et&p_p_lifecycle=1&p_p_state=normal&p_p_mod
e=edit&p_p_col_id=column-2&p_p_col_pos=1&p_p_col_
count=2”
method="post">	

Nome: <input type="text" name="username" />	
<input type="submit" value="Salvar" />
                               ...mas a action do
                                  formulário foi
</form>
                                   configurada
                                  corretamente.
                                                    35
Monday, November 16, 2009
Já temos um portlet com
              suporte ao modo Edit.
           Temos um formulário para
             configuração do portlet.
               Só nos resta tratar a
            submissão do formulário
                                       36
Monday, November 16, 2009
Em portlets,
        submit de dados
       são tratados pelo
            método
         processAction()


                            37
Monday, November 16, 2009
Vamos criar alguma
                   lógica no
               processAction()

                                    38
Monday, November 16, 2009
Captura
                            parâmetros da
                              requisição


                                            38
Monday, November 16, 2009
Guarda valor
                              enviado
                                           38
Monday, November 16, 2009
Redireciona
                            portlet para seu
                              modo View
                                               38
Monday, November 16, 2009
39
Monday, November 16, 2009
No método doView, vamos
                               recuperar o valor salvo nas
                            preferências do portlet, e enviá-lo
                                    ao JSP view.jsp
                                                                  40
Monday, November 16, 2009
No JSP do modo View
                            (view.jsp), recuperamos o
                             valor disponibilizado pelo
                                 método doView.
                                                          41
Monday, November 16, 2009
42
Monday, November 16, 2009
Existem técnicas mais avançadas mas,
   com isso, 80% das portlets existentes
   (cadastros) podem ser desenvolvidos
                            http://www.flickr.com/photos/dejay181/395737393/in/set-72157594529615566/   43
Monday, November 16, 2009
It’s up to you!

                            http://www.flickr.com/photos/shutter/105497713/   44
Monday, November 16, 2009
Quer ajuda?
                             o/




                  sea@seatecnologia.com.br
                                             45
Monday, November 16, 2009
Q&A
Monday, November 16, 2009

Contenu connexe

En vedette

Introdução à Servlets e JSP
Introdução à Servlets e JSPIntrodução à Servlets e JSP
Introdução à Servlets e JSPledsifes
 
Curso de Liferay 6.2: Unidad Didáctica 00 Introducción
Curso de Liferay 6.2: Unidad Didáctica 00 IntroducciónCurso de Liferay 6.2: Unidad Didáctica 00 Introducción
Curso de Liferay 6.2: Unidad Didáctica 00 IntroducciónDavid Vaquero
 
Curso Liferay 6.2: Unidad Didáctica 07 Colaboración
Curso Liferay 6.2: Unidad Didáctica 07 ColaboraciónCurso Liferay 6.2: Unidad Didáctica 07 Colaboración
Curso Liferay 6.2: Unidad Didáctica 07 ColaboraciónDavid Vaquero
 
Curso Liferay 6.2: Unidad Didáctica 06 Gestion de Documentos
Curso Liferay 6.2: Unidad Didáctica 06 Gestion de DocumentosCurso Liferay 6.2: Unidad Didáctica 06 Gestion de Documentos
Curso Liferay 6.2: Unidad Didáctica 06 Gestion de DocumentosDavid Vaquero
 
Curso de liferay 6.2: Unidad didáctica 02 Funcionalidades Principales
Curso de liferay 6.2: Unidad didáctica 02 Funcionalidades PrincipalesCurso de liferay 6.2: Unidad didáctica 02 Funcionalidades Principales
Curso de liferay 6.2: Unidad didáctica 02 Funcionalidades PrincipalesDavid Vaquero
 
Curso de Liferay 6.2: Unidad didáctica 01 Instalación
Curso de Liferay 6.2: Unidad didáctica 01 InstalaciónCurso de Liferay 6.2: Unidad didáctica 01 Instalación
Curso de Liferay 6.2: Unidad didáctica 01 InstalaciónDavid Vaquero
 
Desenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsDesenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsIgo Coelho
 
Introdução ao Desenvolvimento de aplicações WEB com JSP
Introdução ao Desenvolvimento de aplicações WEB com JSPIntrodução ao Desenvolvimento de aplicações WEB com JSP
Introdução ao Desenvolvimento de aplicações WEB com JSPManoel Afonso
 
Java Web 5 - JSP, Expression Language e Taglibs
Java Web 5 - JSP, Expression Language e TaglibsJava Web 5 - JSP, Expression Language e Taglibs
Java Web 5 - JSP, Expression Language e TaglibsEduardo Mendes
 
Java Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsJava Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsEduardo Mendes
 
Lighthouses-Farois-Phares
Lighthouses-Farois-PharesLighthouses-Farois-Phares
Lighthouses-Farois-PharesHelga
 
Preço ines soares
Preço   ines soaresPreço   ines soares
Preço ines soaresInes Soares
 
Phase IV
Phase IVPhase IV
Phase IVjorgepo
 

En vedette (20)

Introdução à Servlets e JSP
Introdução à Servlets e JSPIntrodução à Servlets e JSP
Introdução à Servlets e JSP
 
Servlets e jsp
Servlets e jspServlets e jsp
Servlets e jsp
 
Apresentação JSF
Apresentação JSFApresentação JSF
Apresentação JSF
 
jsp-intro
jsp-introjsp-intro
jsp-intro
 
JSP: Etiquetas
JSP: EtiquetasJSP: Etiquetas
JSP: Etiquetas
 
JSP: Introdução Parte 1
JSP: Introdução Parte 1JSP: Introdução Parte 1
JSP: Introdução Parte 1
 
Curso de JSP
Curso de JSPCurso de JSP
Curso de JSP
 
Curso de Liferay 6.2: Unidad Didáctica 00 Introducción
Curso de Liferay 6.2: Unidad Didáctica 00 IntroducciónCurso de Liferay 6.2: Unidad Didáctica 00 Introducción
Curso de Liferay 6.2: Unidad Didáctica 00 Introducción
 
Curso Liferay 6.2: Unidad Didáctica 07 Colaboración
Curso Liferay 6.2: Unidad Didáctica 07 ColaboraciónCurso Liferay 6.2: Unidad Didáctica 07 Colaboración
Curso Liferay 6.2: Unidad Didáctica 07 Colaboración
 
Curso Liferay 6.2: Unidad Didáctica 06 Gestion de Documentos
Curso Liferay 6.2: Unidad Didáctica 06 Gestion de DocumentosCurso Liferay 6.2: Unidad Didáctica 06 Gestion de Documentos
Curso Liferay 6.2: Unidad Didáctica 06 Gestion de Documentos
 
Curso de liferay 6.2: Unidad didáctica 02 Funcionalidades Principales
Curso de liferay 6.2: Unidad didáctica 02 Funcionalidades PrincipalesCurso de liferay 6.2: Unidad didáctica 02 Funcionalidades Principales
Curso de liferay 6.2: Unidad didáctica 02 Funcionalidades Principales
 
Curso de Liferay 6.2: Unidad didáctica 01 Instalación
Curso de Liferay 6.2: Unidad didáctica 01 InstalaciónCurso de Liferay 6.2: Unidad didáctica 01 Instalación
Curso de Liferay 6.2: Unidad didáctica 01 Instalación
 
Desenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsDesenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e Servlets
 
Introdução ao Desenvolvimento de aplicações WEB com JSP
Introdução ao Desenvolvimento de aplicações WEB com JSPIntrodução ao Desenvolvimento de aplicações WEB com JSP
Introdução ao Desenvolvimento de aplicações WEB com JSP
 
Java Web 5 - JSP, Expression Language e Taglibs
Java Web 5 - JSP, Expression Language e TaglibsJava Web 5 - JSP, Expression Language e Taglibs
Java Web 5 - JSP, Expression Language e Taglibs
 
Java Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsJava Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e Servlets
 
Lighthouses-Farois-Phares
Lighthouses-Farois-PharesLighthouses-Farois-Phares
Lighthouses-Farois-Phares
 
Preço ines soares
Preço   ines soaresPreço   ines soares
Preço ines soares
 
Social Media Workshop
Social Media WorkshopSocial Media Workshop
Social Media Workshop
 
Phase IV
Phase IVPhase IV
Phase IV
 

Similaire à 4. Liferay JSP Portlets

Construindo portlets para IBM WebSphere Portal – Parte 2
Construindo portlets para IBM WebSphere Portal – Parte 2Construindo portlets para IBM WebSphere Portal – Parte 2
Construindo portlets para IBM WebSphere Portal – Parte 2rodrigoareis
 
Construindo portlets para IBM WebSphere Portal – Parte 1
Construindo portlets para IBM WebSphere Portal – Parte 1Construindo portlets para IBM WebSphere Portal – Parte 1
Construindo portlets para IBM WebSphere Portal – Parte 1rodrigoareis
 
TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...
TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...
TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...tdc-globalcode
 
XML Free Programming - Brazil
XML Free Programming - BrazilXML Free Programming - Brazil
XML Free Programming - BrazilStephen Chin
 
Heroku escalabilidade
Heroku escalabilidadeHeroku escalabilidade
Heroku escalabilidadeBruno Andrade
 
Como alterar o dock do elementary os luna
Como alterar o dock do elementary os lunaComo alterar o dock do elementary os luna
Como alterar o dock do elementary os lunaDw Dicas
 
Docker na vida real
Docker na vida realDocker na vida real
Docker na vida realFernando Ike
 
JasperReports Tecnicas de geracao_de_relatorios1
JasperReports  Tecnicas de geracao_de_relatorios1JasperReports  Tecnicas de geracao_de_relatorios1
JasperReports Tecnicas de geracao_de_relatorios1Sliedesharessbarbosa
 
Introdução ao JBoss Fuse 6.x: criação e implantação de um serviço CXF
Introdução ao JBoss Fuse 6.x: criação e implantação de um serviço CXFIntrodução ao JBoss Fuse 6.x: criação e implantação de um serviço CXF
Introdução ao JBoss Fuse 6.x: criação e implantação de um serviço CXFRafael T. C. Soares (tuelho)
 
Deploy completo de uma aplicação Django
Deploy completo de uma aplicação DjangoDeploy completo de uma aplicação Django
Deploy completo de uma aplicação DjangoAllisson Azevedo
 
Composer dependency manager
Composer   dependency managerComposer   dependency manager
Composer dependency managerVitor Mattos
 
Pyramid - O Framework Web para Todos
Pyramid - O Framework Web para TodosPyramid - O Framework Web para Todos
Pyramid - O Framework Web para TodosRuda Filgueiras
 

Similaire à 4. Liferay JSP Portlets (20)

Construindo portlets para IBM WebSphere Portal – Parte 2
Construindo portlets para IBM WebSphere Portal – Parte 2Construindo portlets para IBM WebSphere Portal – Parte 2
Construindo portlets para IBM WebSphere Portal – Parte 2
 
Construindo portlets para IBM WebSphere Portal – Parte 1
Construindo portlets para IBM WebSphere Portal – Parte 1Construindo portlets para IBM WebSphere Portal – Parte 1
Construindo portlets para IBM WebSphere Portal – Parte 1
 
TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...
TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...
TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...
 
XML Free Programming - Brazil
XML Free Programming - BrazilXML Free Programming - Brazil
XML Free Programming - Brazil
 
SEA Rails Portlet
SEA Rails PortletSEA Rails Portlet
SEA Rails Portlet
 
Atech talks - Docker
Atech talks - DockerAtech talks - Docker
Atech talks - Docker
 
XPCE 2010
XPCE 2010XPCE 2010
XPCE 2010
 
Ambiente de desenvolvimento com docker e ruby on rails
Ambiente de desenvolvimento com  docker e ruby on railsAmbiente de desenvolvimento com  docker e ruby on rails
Ambiente de desenvolvimento com docker e ruby on rails
 
Bricklayer
BricklayerBricklayer
Bricklayer
 
Heroku escalabilidade
Heroku escalabilidadeHeroku escalabilidade
Heroku escalabilidade
 
Como alterar o dock do elementary os luna
Como alterar o dock do elementary os lunaComo alterar o dock do elementary os luna
Como alterar o dock do elementary os luna
 
Docker na vida real
Docker na vida realDocker na vida real
Docker na vida real
 
JasperReports Tecnicas de geracao_de_relatorios1
JasperReports  Tecnicas de geracao_de_relatorios1JasperReports  Tecnicas de geracao_de_relatorios1
JasperReports Tecnicas de geracao_de_relatorios1
 
Introdução ao JBoss Fuse 6.x: criação e implantação de um serviço CXF
Introdução ao JBoss Fuse 6.x: criação e implantação de um serviço CXFIntrodução ao JBoss Fuse 6.x: criação e implantação de um serviço CXF
Introdução ao JBoss Fuse 6.x: criação e implantação de um serviço CXF
 
Iniciando com django
Iniciando com djangoIniciando com django
Iniciando com django
 
Deploy completo de uma aplicação Django
Deploy completo de uma aplicação DjangoDeploy completo de uma aplicação Django
Deploy completo de uma aplicação Django
 
Composer dependency manager
Composer   dependency managerComposer   dependency manager
Composer dependency manager
 
Introducao rubyonrails
Introducao rubyonrailsIntroducao rubyonrails
Introducao rubyonrails
 
Aula Ruby
Aula RubyAula Ruby
Aula Ruby
 
Pyramid - O Framework Web para Todos
Pyramid - O Framework Web para TodosPyramid - O Framework Web para Todos
Pyramid - O Framework Web para Todos
 

Plus de SEA Tecnologia

Loomio how to Series - Working on a Discussion
Loomio how to Series - Working on a DiscussionLoomio how to Series - Working on a Discussion
Loomio how to Series - Working on a DiscussionSEA Tecnologia
 
Loomio how to Series - Creating a new Group of People
Loomio how to Series - Creating a new Group of PeopleLoomio how to Series - Creating a new Group of People
Loomio how to Series - Creating a new Group of PeopleSEA Tecnologia
 
Loomio how to Series - Creating a new Discussion
Loomio how to Series - Creating a new DiscussionLoomio how to Series - Creating a new Discussion
Loomio how to Series - Creating a new DiscussionSEA Tecnologia
 
Gerentes em Crise existencial - Existimos no Universo Ágil?
Gerentes em Crise existencial - Existimos no Universo Ágil?Gerentes em Crise existencial - Existimos no Universo Ágil?
Gerentes em Crise existencial - Existimos no Universo Ágil?SEA Tecnologia
 
O curioso caso de Náutilus Button
O curioso caso de Náutilus ButtonO curioso caso de Náutilus Button
O curioso caso de Náutilus ButtonSEA Tecnologia
 
Contratos de desenvolvimento de software para governo blue pill or red pill?
Contratos de desenvolvimento de software para governo  blue pill or red pill?Contratos de desenvolvimento de software para governo  blue pill or red pill?
Contratos de desenvolvimento de software para governo blue pill or red pill?SEA Tecnologia
 
Os benefícios e desafios da participação pública digital
Os benefícios e desafios da participação pública digitalOs benefícios e desafios da participação pública digital
Os benefícios e desafios da participação pública digitalSEA Tecnologia
 
A escola do século XXI deve ser ágil, enxuta e empreendedora.
A escola do século XXI deve ser ágil, enxuta e empreendedora.A escola do século XXI deve ser ágil, enxuta e empreendedora.
A escola do século XXI deve ser ágil, enxuta e empreendedora.SEA Tecnologia
 
Open data, scraping e thacks com Software Livre
Open data, scraping e thacks com Software LivreOpen data, scraping e thacks com Software Livre
Open data, scraping e thacks com Software LivreSEA Tecnologia
 
Agilidade dos projetos à empresa, uma história de Intracontágio
Agilidade dos projetos à empresa, uma história de IntracontágioAgilidade dos projetos à empresa, uma história de Intracontágio
Agilidade dos projetos à empresa, uma história de IntracontágioSEA Tecnologia
 
Roadshow Brasília Novas funcionalidades Liferay 6
Roadshow Brasília Novas funcionalidades Liferay 6Roadshow Brasília Novas funcionalidades Liferay 6
Roadshow Brasília Novas funcionalidades Liferay 6SEA Tecnologia
 
Roadshow Liferay no Brasil 2010
Roadshow Liferay no Brasil 2010Roadshow Liferay no Brasil 2010
Roadshow Liferay no Brasil 2010SEA Tecnologia
 
Sem tesão não há solução
Sem tesão não há soluçãoSem tesão não há solução
Sem tesão não há soluçãoSEA Tecnologia
 
Empreendimentos em Rede
Empreendimentos em RedeEmpreendimentos em Rede
Empreendimentos em RedeSEA Tecnologia
 

Plus de SEA Tecnologia (20)

Loomio how to Series - Working on a Discussion
Loomio how to Series - Working on a DiscussionLoomio how to Series - Working on a Discussion
Loomio how to Series - Working on a Discussion
 
Loomio how to Series - Creating a new Group of People
Loomio how to Series - Creating a new Group of PeopleLoomio how to Series - Creating a new Group of People
Loomio how to Series - Creating a new Group of People
 
Loomio how to Series - Creating a new Discussion
Loomio how to Series - Creating a new DiscussionLoomio how to Series - Creating a new Discussion
Loomio how to Series - Creating a new Discussion
 
Gerentes em Crise existencial - Existimos no Universo Ágil?
Gerentes em Crise existencial - Existimos no Universo Ágil?Gerentes em Crise existencial - Existimos no Universo Ágil?
Gerentes em Crise existencial - Existimos no Universo Ágil?
 
O curioso caso de Náutilus Button
O curioso caso de Náutilus ButtonO curioso caso de Náutilus Button
O curioso caso de Náutilus Button
 
Contratos de desenvolvimento de software para governo blue pill or red pill?
Contratos de desenvolvimento de software para governo  blue pill or red pill?Contratos de desenvolvimento de software para governo  blue pill or red pill?
Contratos de desenvolvimento de software para governo blue pill or red pill?
 
#Fail
#Fail#Fail
#Fail
 
Agilidade no Governo
Agilidade no GovernoAgilidade no Governo
Agilidade no Governo
 
Os benefícios e desafios da participação pública digital
Os benefícios e desafios da participação pública digitalOs benefícios e desafios da participação pública digital
Os benefícios e desafios da participação pública digital
 
A escola do século XXI deve ser ágil, enxuta e empreendedora.
A escola do século XXI deve ser ágil, enxuta e empreendedora.A escola do século XXI deve ser ágil, enxuta e empreendedora.
A escola do século XXI deve ser ágil, enxuta e empreendedora.
 
Lean Startup
Lean StartupLean Startup
Lean Startup
 
Open Data
Open DataOpen Data
Open Data
 
Open data, scraping e thacks com Software Livre
Open data, scraping e thacks com Software LivreOpen data, scraping e thacks com Software Livre
Open data, scraping e thacks com Software Livre
 
Agilidade dos projetos à empresa, uma história de Intracontágio
Agilidade dos projetos à empresa, uma história de IntracontágioAgilidade dos projetos à empresa, uma história de Intracontágio
Agilidade dos projetos à empresa, uma história de Intracontágio
 
Roadshow Brasília Novas funcionalidades Liferay 6
Roadshow Brasília Novas funcionalidades Liferay 6Roadshow Brasília Novas funcionalidades Liferay 6
Roadshow Brasília Novas funcionalidades Liferay 6
 
Roadshow Liferay no Brasil 2010
Roadshow Liferay no Brasil 2010Roadshow Liferay no Brasil 2010
Roadshow Liferay no Brasil 2010
 
Sem tesão não há solução
Sem tesão não há soluçãoSem tesão não há solução
Sem tesão não há solução
 
Empreendimentos em Rede
Empreendimentos em RedeEmpreendimentos em Rede
Empreendimentos em Rede
 
Java Profiling Tools
Java Profiling ToolsJava Profiling Tools
Java Profiling Tools
 
Misc Monitoring Tools
Misc Monitoring ToolsMisc Monitoring Tools
Misc Monitoring Tools
 

4. Liferay JSP Portlets

  • 1. customizando o JSP Portlets by http://www.flickr.com/photos/dejay181/460664432/in/set-72157594529615566/ 1 Monday, November 16, 2009
  • 3. O Liferay possui diversos níveis de customização Customização Liferay Extension Código Plugins Environment Fonte Portlets Temas Layouts 3 Monday, November 16, 2009
  • 4. Portlets revisão Monday, November 16, 2009
  • 5. Criação do portlet /liferay/liferay-plugins-sdk-5.2.3/portlets $ ./create.sh hello-liferay "Hello Liferay" Buildfile: build.xml create: [unzip] Expanding: /Volumes/Data/Documents/sea/edu/liferay/apps/liferay-plugins-sdk-5.2.3/ portlets/portlet.zip into /Volumes/Data/Documents/sea/edu/liferay/apps/liferay-plugins- sdk-5.2.3/portlets/hello-liferay-portlet [mkdir] Created dir: /Volumes/Data/Documents/sea/edu/liferay/apps/liferay-plugins- sdk-5.2.3/portlets/hello-liferay-portlet/docroot/WEB-INF/tld [copy] Copying 6 files to /Volumes/Data/Documents/sea/edu/liferay/apps/liferay-plugins- sdk-5.2.3/portlets/hello-liferay-portlet/docroot/WEB-INF/tld BUILD SUCCESSFUL Total time: 6 seconds 5 Monday, November 16, 2009
  • 6. /liferay/liferay-plugins-sdk-5.2.3/portlets/hello-liferay-portlet $ ant deploy Buildfile: build.xml compile: merge: Deploy do [javac] Compiling 1 source file to /Volumes/Data/Documents/sea/edu/liferay/apps/liferay-plugins- sdk-5.2.3/portlets/hello-liferay-portlet/docroot/WEB-INF/classes portlet merge: war: [mkdir] Created dir: /Volumes/Data/Documents/sea/edu/liferay/apps/liferay-plugins-sdk-5.2.3/dist clean-portal-dependencies: [zip] Building zip: /Volumes/Data/Documents/sea/edu/liferay/apps/liferay-plugins-sdk-5.2.3/dist/ hello-liferay-portlet-5.2.3.1.war deploy: [copy] Copying 1 file to /liferay/liferay-portal-5.2.3/deploy BUILD SUCCESSFUL Total time: 24 seconds 6 Monday, November 16, 2009
  • 7. Utilização do portlet 7 Monday, November 16, 2009
  • 8. Importação do projeto do portlet 8 Monday, November 16, 2009
  • 9. um pacote WAR de portlets contém... my-portlet.war Classes + Recursos + Descritor 9 Monday, November 16, 2009
  • 10. Descritores podem ser... Padrões web.xml portlet.xml my-portlet.war Proprietários liferay-portlet.xml liferay-display.xml 10 Monday, November 16, 2009
  • 11. Portlets têm modos definem a função do portlet no instante 11 Monday, November 16, 2009
  • 12. Portlets têm estados definem o tamanho da tela que estão ocupando 12 Monday, November 16, 2009
  • 13. Portlet API 13 Monday, November 16, 2009
  • 14. O mais comum, entretanto, é o uso da classe GenericPortlet, que ‘substitui’ o método render por outros 3 métódos doView, doEdit e doHelp 14 Monday, November 16, 2009
  • 15. O mais comum, entretanto, é o uso da classe GenericPortlet, que ‘substitui’ o método render por outros 3 métódos doView, doEdit e doHelp Invocado para renderização do portlet no modo View 14 Monday, November 16, 2009
  • 16. O mais comum, entretanto, é o uso da classe GenericPortlet, que ‘substitui’ o método render por outros 3 métódos doView, doEdit e doHelp Invocado para renderização do portlet no modo Edit 14 Monday, November 16, 2009
  • 17. O mais comum, entretanto, é o uso da classe GenericPortlet, que ‘substitui’ o método render por outros 3 métódos doView, doEdit e doHelp Invocado para renderização do portlet no modo Help 14 Monday, November 16, 2009
  • 18. JSP Portlets a forma de portlet mais simples Monday, November 16, 2009
  • 19. Nosso portlet... 16 Monday, November 16, 2009
  • 20. ...suporta apenas o modo View, através da página view.jsp 17 Monday, November 16, 2009
  • 21. Fragmento de HTML gerado por view.jsp 18 Monday, November 16, 2009
  • 23. <portlet> <portlet-name>hello-liferay</portlet-name> <display-name>Hello Liferay</display-name> <portlet-class>com.sample.jsp.portlet.JSPPortlet</portlet-class> <init-param> <name>view-jsp</name> <value>/view.jsp</value> </init-param> <init-param> <name>edit-jsp</name> <value>/edit.jsp</value> </init-param> (...) <supports> Vamos <mime-type>text/html</mime-type> acrescentar <portlet-mode>view</portlet-mode> também o <portlet-mode>edit</portlet-mode> suporte o modo </supports> (...) Edit 20 Monday, November 16, 2009
  • 24. <portlet> <portlet-name>hello-liferay</portlet-name> <display-name>Hello Liferay</display-name> <portlet-class>com.sample.jsp.portlet.JSPPortlet</portlet-class> <init-param> <name>view-jsp</name> <value>/view.jsp</value> Quando mais de </init-param> um modo é <init-param> suportado pelo <name>edit-jsp</name> portlet, é preciso <value>/edit.jsp</value> especificá-los </init-param> (...) <supports> <mime-type>text/html</mime-type> <portlet-mode>view</portlet-mode> <portlet-mode>edit</portlet-mode> </supports> (...) 21 Monday, November 16, 2009
  • 25. Criamos a página edit.jsp para o modo Edit do portlet 22 Monday, November 16, 2009
  • 26. Fazemos o deploy do portlet... 23 Monday, November 16, 2009
  • 27. Modo Edit habilitado... 24 Monday, November 16, 2009
  • 28. ...e funcionando 25 Monday, November 16, 2009
  • 29. Geralmente, o modo Edit é utilizado para se fazer configurações do portlet. Logo, façamos algo interessante. 26 Monday, November 16, 2009
  • 30. Vamos modificar a página edit.jsp para simular um formulário simples de configuração 27 Monday, November 16, 2009
  • 31. Nosso formulário de configurações 28 Monday, November 16, 2009
  • 32. Evita o conflito de nomes na página do portal (lembre-se que este é apenas um fragmento de HTML) 29 Monday, November 16, 2009
  • 33. Qual URL deverá ser chamada no submit do formulário? 29 Monday, November 16, 2009
  • 34. De fato, não sabemos. o portlet é quem tem que nos dizer 30 Monday, November 16, 2009
  • 35. A classe GenericPortlet disponibiliza 3 métódos de renderização de portlet doView, doEdit, doHelp ...que são chamados antes do portlet entrar em um modo específico 31 Monday, November 16, 2009
  • 36. Portanto, vamos modificar o método doEdit para que a URL a ser utilizada pelo formulário de edit.jsp seja previamente disponibilizada 32 Monday, November 16, 2009
  • 37. E modificar a página edit.jsp para que a action do formulário seja corretamente configurada 33 Monday, November 16, 2009
  • 38. Visualmente, nada mudou... 34 Monday, November 16, 2009
  • 40. Já temos um portlet com suporte ao modo Edit. Temos um formulário para configuração do portlet. Só nos resta tratar a submissão do formulário 36 Monday, November 16, 2009
  • 41. Em portlets, submit de dados são tratados pelo método processAction() 37 Monday, November 16, 2009
  • 42. Vamos criar alguma lógica no processAction() 38 Monday, November 16, 2009
  • 43. Captura parâmetros da requisição 38 Monday, November 16, 2009
  • 44. Guarda valor enviado 38 Monday, November 16, 2009
  • 45. Redireciona portlet para seu modo View 38 Monday, November 16, 2009
  • 47. No método doView, vamos recuperar o valor salvo nas preferências do portlet, e enviá-lo ao JSP view.jsp 40 Monday, November 16, 2009
  • 48. No JSP do modo View (view.jsp), recuperamos o valor disponibilizado pelo método doView. 41 Monday, November 16, 2009
  • 50. Existem técnicas mais avançadas mas, com isso, 80% das portlets existentes (cadastros) podem ser desenvolvidos http://www.flickr.com/photos/dejay181/395737393/in/set-72157594529615566/ 43 Monday, November 16, 2009
  • 51. It’s up to you! http://www.flickr.com/photos/shutter/105497713/ 44 Monday, November 16, 2009
  • 52. Quer ajuda? o/ sea@seatecnologia.com.br 45 Monday, November 16, 2009