October 28, 2026

Cavalero Technology

A place to talk about developer life and career

Usando JSF 2 e Primefaces com Spring ROO

Uma das funcionalidades ainda pendentes no Spring Roo é a utilização de JSF na camada de view. Hoje vou mostrar como colocar, de maneira rápida, o seu projeto Roo para trabalhar com JSF 2 e Primefaces.

Desde que conheci o Primefaces, fiquei bastante interessado em utilizá-lo em algum projeto. O JSF 2 parece ter resolvido boa parte dos problemas existentes no 1.x e sua utilização em projetos parece ser uma idéia bem interessante para novos projetos. Mas também gosto da facilidade do Spring Roo. Vamos então utilizar um projeto de exemplo do Primefaces prime-moviecollector. Ele utiliza Spring 3, Hibernate 3, JSF 2 e Primefaces. Vamos reimplementá-lo utilizando o Roo e retiraremos dele as configurações faltantes. Você vai notar que não mando colocar todas as configurações necessárias para o Spring funcionar com o JSF pois elas já estão parte feitas no prime-moviecollector e no nosso. Só vamos fazer as alterações que ainda faltam.

1) Criando o Projeto Roo com as entidades do Domínio (Movie e Format) e a view em Spring MVC:

project –topLevelPackage org.primefaces.examples.moviecollector –projectName Prime-moviecolletor-roo –java 6
persistence setup –database HYPERSONIC_IN_MEMORY –provider HIBERNATE
entity –class ~.domain.Movie
field string –fieldName title
field string –fieldName description
field number –fieldName discs –type java.lang.Integer
enum type –class ~.domain.Format
enum constant –name DVD
enum constant –name BLURAY
focus –class Movie
field enum –fieldName format –type ~.domain.Format
finder add findMoviesByTitleLike
web mvc setup
security setup

2) Removendo os arquivos gerados pelo web mvc setup. Vamos utilizar apenas a estrutura:
  • Em src/main/webapp as pastas images e styles;
  • Em src/main/webapp/WEB-INF as pastas i18n, layouts, spring, tags e view
3) Copiamos o src/main/webapp/WEB-INF/faces-config.xml do prime-moviecollector para o mesmo caminho no nosso projeto.
4) Vamos adicionar algumas dependências no pom.xml do nosso projeto:
  • Em repositories

prime-repo
Prime Technology Maven Repository
http://repository.prime.com.tr/

  • Em dependencies

org.apache.poi
poi
3.2-FINAL


com.lowagie
itext
2.1.7


org.primefaces
primefaces
3.0-SNAPSHOT


com.sun.faces
jsf-api
2.0.4-b09


com.sun.faces
jsf-impl
2.0.4-b09
No caso estamos usando o Primefaces 3.0 mas poderíamos usar a versão 2.2.1 que é a estável.
5) Em src/main/webapp/WEB-INF/web.xml:
  • Retiramos:

HttpMethodFilter
org.springframework.web.filter.HiddenHttpMethodFilter


HttpMethodFilter
/*


Prime-moviecolletor-roo
org.springframework.web.servlet.DispatcherServlet

contextConfigLocation/WEB-INF/spring/webmvc-config.xml

1


Prime-moviecolletor-roo
/

  • E inserimos:


org.springframework.web.context.request.RequestContextListener



Faces Servlet
javax.faces.webapp.FacesServlet
1



Faces Servlet
*.jsf

Para adicionarmos as configurações para o JSF.
6) Configurações prontas, vamos copiar os já quase prontos Managed Beans (CreateMovie, ManageMovies e ViewMovie) para o nosso projeto no pacote org.primefaces.examples.moviecollector.view. Você irá notar que eles estarão com erros. Por quê? Porque o Spring Roo utiliza os métodos de acesso dentro das entidades (estilo Active Record), logo, nesse caso, não precisamos das classes de Service. Para ajustar nossas classes, basta retirarmos as dependências das classes de Service e utilizarmos os métodos de merge, find e update de dentro da entidade Movie. Fica como treino.
7)  Por último, copiamos todas as telas xhtml e jsp (index, createMovie, manageMovies, source, template, viewMovie) e suas pastas img e style para a pasta webapp do nosso projeto. 
8)  Pronto! Basta rodar sua aplicação que ela já estará funcionando. Executar esse passos deve demorar cerca de 15-20 min. E ainda podemos adicionar novas entidades utilizando o Roo da maneira que já conhecemos, porém agora precisamos criar as telas para cada necessidade. 
Creio que ajude! Comentários são bem-vindos!
Abraços!


16 thoughts on “Usando JSF 2 e Primefaces com Spring ROO”

  1. Olá Pedro.
    Cara, muito legal seu post. Estou estudando sobre Spring, Hibernate e JSF. E esse seu post é muito bom.
    Além disse, fui "apresentado" ao SpringRoo.

    Cara, isso é fantástico.
    Acabei de assistir o vídeo contido na págin do projeto ( http://www.springsource.org/spring-roo ). Meu é incrível o que ele faz, tipo, alta produtividade. Eu fiquei rindo sozinho aqui, todo surpreso e pensando "Não acredito que criaram isso". É muito alta a produtividade, pelo que eu estou vendo.

    E eu não vi isso, do SpringRoo 1.2 estar integrado. Está? Não entendi seu comentário, tipo, não preciso configurar como você fez no post?

    Cara, obrigado mesmo pelo seu post. Por compartilhar seu conhecimento.

    Obrigado!

  2. Olá!
    Sim, no Roo 1.2 o JSF com Primefaces já vai estar integrado, aí não vai mais precisar fazer como eu fiz no post. Eu até já fiz um teste (baixando o código atual deles) e está funcionando mto bem. Eu inclusive sugiro esperar sair a versão nova se quiser colocar alguma coisa em produção.
    Valeu!

  3. Olá Pedro!
    Muito bom seu post.
    Depois de lê-lo resolvi criar minha aplicação usando Spring roo 1.2 e STS 2.8. Seria tudo perfeito se não fosse pelo fato do el não está funcionando.

    Cara, será que você teria alguma ideia pra me ajudar?

    Obrigado.

  4. Hi
    I get this error when use jetty:run

    2012-04-06 12:46:54.592:WARN::/Prime-moviecolletor-roo/createMovie.jsf
    javax.el.ELException: /createMovie.xhtml: The class 'org.primefaces.examples.moviecollector.view.CreateMovie' does not have the property 'save'.

    Whats the problem?

  5. Pedro…I was disappointed with Spring Roo's jsf addon as it didnt produce something like the original primefaces moviecollector example.
    Yes I had to adopt your methodology in using roo just for getting the entities. I hate their usage of Managed bean(of a single entity!) as a controller. Have you used the jsf addon(I see you mentioned scavenging parts using the mvc addon)?

  6. Muito bom teu exemplo Pedro, apesar do meu comentário chegar um pouco atrasado, trabalho aqui no hospital da PM de Pe e estamos pra usar o ROO, este teu exemplo funciona com o security sem problemas?

  7. Com o novo Roo 1.2, o meu exemplo fica deprecated. É melhor usar confore eles indicam no manual deles.
    Funcionar com o security funciona sim, eu to fazendo um agora com a segurança. Mas a que ele configura é muito básica, apenas com o login e senha. Para colocar ROLES e outras coisas vc terá q configurar na mão mesmo.

  8. Com o novo Roo 1.2, o meu exemplo fica deprecated. É melhor usar confore eles indicam no manual deles.
    Funcionar com o security funciona sim, eu to fazendo um agora com a segurança. Mas a que ele configura é muito básica, apenas com o login e senha. Para colocar ROLES e outras coisas vc terá q configurar na mão mesmo.

  9. Pedro, dei uma olhada no seu tutorial e resolvi fazer umas perguntas antes de testar, visto que já "googlei" demais.

    Cara, estou usando a versão 1.2.4 do ROO e não consigo acessar O WEB JSF SETUP … nem pra myfaces, nem pra mojarra… não tentei baixar a versão 1.2.0 pensando que nas versões posteriores a opção deveria estar disponível.

    Estou usando Windows 7, Tomcat 7, última versão do STS, JDK7 32bits…

    Fiz um app com apenas uma tabela e tive problemas com o LOCALE. Como não consegui encontrar o arquivo faces-config.xml, imagino que ele deveria ser criado no WEB JSF SETUP… também não tentei criar o arquivo na mão, pois eu já estava perdendo muito tempo com muitos erros.

    E aí, a versão está correta? Deveria funcionar? Estou ficando desapontado com o ROO, mas imagino que seja falta de conhecimento mesmo.
    Aguardo alguma ajuda. Chegando em casa vou testar seu projeto.
    Abraço!

Leave a Reply

Your email address will not be published. Required fields are marked *

Copyright © All rights reserved. | Newsphere by AF themes.