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
- Em src/main/webapp as pastas images e styles;
- Em src/main/webapp/WEB-INF as pastas i18n, layouts, spring, tags e view
- 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
- 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


Parabéns pela iniciativa! començando estudar Spring Roo e vou tentar utilizar Primefaces
Que horror… não tem como zipar o projeto não?
bem, o ultimo link do artigo eh o do projeto zipado. o roo 1.2 ta vindo com jsf e primefaces nativo, nao vai mais precisar..
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!
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!
Opa, como você fez com o roo 1.2?
A versão 1.2.0.RC1 já tem essa funcionalidade. Dá uma olhada no link: http://blog.springsource.org/2011/11/23/spring-roo-1-2-0-rc1-released/
NO Jira deles tem mais informações: https://jira.springsource.org/browse/ROO-516
Abraços!
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.
Este comentário foi removido pelo autor.
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?
Hi,
I think you need to change all occurences of "http://primefaces.prime.com.tr/ui" with "http://primefaces.org/ui"
See also http://blog.primefaces.org/?p=1431.
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)?
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?
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.
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.
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!