24 de outubro de 2010

JavaEE 5: Configuração do PrimeFaces em páginas JSP

Informações: JSF 1.2, PrimeFaces 1.1: Clique para baixar o PrimeFaces 1.1

Porque não utilizar a versão que está no site do PrimeFaces?
Pois a versão que está no site para baixar é para o JSF 2.0, causando assim uma incompatibilidade de versões, atualmente a versão mais atualizada para o JSF 1.2, realmente é a 1.1.

Configurando..
Nessa configuração estou levando em consideração que já tenha um JSF Project criado, caso não saiba como criar: Clique aqui...
Depois de baixar o .jar do PrimeFaces, coloque o mesmo dentro da pasta lib em WebContent - WEB-INF - lib.
Para utilizar o PrimaFaces é necessário configurar a servlet do mesmo no web.xml, então neste insira o seguinte código:
  <servlet>
   <servlet-name>Resource Servlet</servlet-name>
   <servlet-class>org.primefaces.resource.ResourceServlet</servlet-class>
  </servlet>
  <servlet-mapping>
   <servlet-name>Resource Servlet</servlet-name>
   <url-pattern>/primefaces_resource/*</url-pattern>
  </servlet-mapping> 

Agora dentro do WebContent crie um JSP File com o nome que desejar. Para que o PrimeFaces funcione corretamente, é necessário adicionar a seguinte tagLib:
<%@ taglib uri="http://primefaces.prime.com.tr/ui" prefix="p" %>

Além da tagLib é necessário ter outra configuração básica:
<head>
    <p:resources />
</head>

Enfim... uma página JSP precisa ter a seguinte estrutura para funcionar corretamente:
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://primefaces.prime.com.tr/ui" prefix="p" %>

<html>
<f:view>
    <head>
        <p:resources />
    </head>
    <body>
        
    </body>
</f:view>    
</html>  

Para testar se está tudo funcionando, faça um teste com algum componente do PrimeFaces, por exemplo p:editor. Então, a partir da estrutura acima, coloque o seguinte codigo dentro das tags body e /body
<p:editor />

Resultado no navegador:


Caso não apareça este componente, reveja as configurações, pois pode estar faltando alguma coisa. ;)


Links:
http://www.primefaces.org/

Componentes do PrimeFaces (Obs: alguns componentes mostrados podem não conferir com a versão utilizada nesta postagem)
http://www.primefaces.org/showcase/ui/home.jsf

20 comentários:

  1. Muito bom o post. me ajudou muito esse começo de ano, pois o PrimeFaces é muito bom e bem completo.
    Minha dúvida é o seguinte, não conseguimos usar uma versão mais atual do Prime com o JSF 1.2?

    ResponderExcluir
  2. Olá Wand! Pois é, a ultima versão do PrimeFaces para JSF 1.2 é realmente a 1.1, eles pararam de dar suporte ao JSF 1.2.

    ResponderExcluir
  3. Oi Andréia,
    Pois é. um apena né! bem que o JSF facilita muito a vida.

    Mais para o meu sistema não vai servir. pois irei utilizar muito javascript, jQuery e google maps. já com o JSF 2.0 não consigo trabalhar carregando as paginas dentro de uma div e ainda poder controla ela pelo managerBean.

    Andréia, você sabe algo de incompatibilidade entre o Prime e o jQuery? estou utilizando ambos aqui no inicio do projeto. mais quando faço um "$.ajax" e chamo uma pagina ".jsp" que tem um form montado com o Prime, não funciona os componentes, dando erro no javascript.

    Sabe oq pode ser? segue o erro que o firebug apresenta:
    jQuery(this.jqId).button is not a function
    [Parar neste erro] PrimeFaces.widget.CommandButton=functi....getMenu=function(){return this.menu};

    e

    jQuery(this.jqId).dialog is not a function
    [Parar neste erro] PrimeFaces.widget.Dialog=function(b,a)...ces.ajax.AjaxRequest(e.cfg.url,{},c)};

    Caso consiga me ajudar, ficarei muito agradecido. e parabéns pelo blog, tem me ajudado muito.

    ResponderExcluir
  4. Andréia, obrigado, mais já consegui resolver.
    O problema é que eu mesmo havia feito o import do jQuery na pagina.
    Mais acontece que o jQuery já é nativo do PrimeFaces. então basta usar jQuery("#div").load() ao invés de $("#div").load().
    Abraços e obrigado...

    ResponderExcluir
  5. Desculpa não ter te dado o help antes, tive um dia meio corrido! mas fico feliz por vc ter conseguido achar o erro! :)

    ResponderExcluir
  6. oi, não consigo executar o meu projeto. ele dá o seguinte erro:
    org.apache.jasper.JasperException: java.lang.RuntimeException: Cannot find FacesContext
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:491)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

    ResponderExcluir
  7. Me manda por mensagem privada no GUJ o seu web.xml ... talvez seja alguma coisa lá, e em qual ambiente de trabalho vc está fazendo seu projeto? Eclipse e JBoss?

    ResponderExcluir
  8. oi, eu estou usando o NetBeans com glassfish. já tentei um monte de tutoriais na internet. até o programa gerado pelo netbeans, quando ele prepara o projeto para ser programado, qnd eu rodo, ele não funciona. já troquei de versão duas vezes do netbeans. eu uso o 6.9.1. não sei mexer muito bem no eclipse.
    estou te procurando no GUJ

    ResponderExcluir
  9. Olá "Anônimo"! Como eu vi que vc falou sobre NetBeans e GlassFish, então imagino que esteja querendo aprender o JEE 6... e não o JEE 5... por isso aconselho a ver, de cima para baixo as postagens que estão nesse link: http://javasemcafe.blogspot.com/p/4tads.html

    ResponderExcluir
  10. Obrigado. Já estou lendo as postagens. Deixei anônimo nas duas anteriores pois minha conta do google não estava entrando.

    ResponderExcluir
  11. Obrigado pela dica aí,estava meio enrolado com esse bom Framework de visão que é o prime.

    ResponderExcluir
  12. Salve galera...

    Estou usando o JBoss Seam 2.2.2.Final.....
    Segui alguns tutoriais, o auto-complete do Eclipse ja até reconhece a tag p do prime....
    Mas no momento de renderizar a página, o que foi feito com o prime não é renderizado corretamente.

    Usei como um exemplo um mas renderiza apenas o que eu coloco como um subitem...

    Alguem pode me dar uma força aew?

    ResponderExcluir
  13. Olá JeanAv, vc colocou a tag <p:resources /> dentro da tag head? Na versão 1.2 do JSF, o PrimeFaces precisa dessa tag.

    ResponderExcluir
  14. Uiaaaaaa num é que funcionou... =D

    Muito obrigado andii.brunetta.

    Vc naum tem idéia do quanto me ajudou \o/.

    Agora vou colocar um skin pra ver....no 1.2 eh a mesma forma que é feito no 2.0 para adicionar um skin?

    Obrigado novamente.
    Até breve.

    ResponderExcluir
  15. Olá JeanAv, fico feliz por ter ajudado! Olha, que eu me lembre, não havia temas para a versão 1.1 do PrimeFaces, posso estar errada, mas no momento é isso que eu me recordo. Outro detalhe que eu também não tenho mais certeza (é que faz tempo que não mexo com a versão 1.1 do Prime), mas acho que a versão 1.1 não é baseada em JQuery, então os temas da versão 2.x não serão compatíveis. Tem que pesquisar mais a fundo, mas tenho quase certeza que é isso.

    ResponderExcluir
  16. Vlw andii.brunetta...

    Realmente, não consegui fazer com que os temas do Prime 2.x funcionassem no 1.1.

    De qualquer forma, minha equipe decidiu deixar de lado a versão 1.1 e iniciar estudos sobre o Seam 3... para que no novo projeto q está por vir, possamos usar o Prime 2.x.

    Muito obrigado pela ajuda.

    Até.

    ResponderExcluir
  17. Olá JeanAv! Pois é, eu até ia te aconselhar mesmo a usar o JSF 2.0 e consequentemente o PrimeFaces 2.x pois o pessoal do Prime não está mais dando suporte a versão 1.x

    ResponderExcluir
  18. Muito bom, obrigado pelo tutorial Andreia. Me ajudou muito!

    ResponderExcluir

Deixe seu comentário... ;)