Solucionado (ver solução)
Solucionado
(ver solução)
10
respostas

O que é necessário fazer para usar Primefaces neste projeto?

Boa noite

Gostei muito da arquitetura ensinada neste curso e estou utilizando para um projeto pessoal meu para estudo que precisa ter Primefaces e Maven (além de outras coisas).

O curso que ensina o Primefaces não usa Maven e quando tento aplicar o Maven com o que é ensinado lá, estou tendo problemas pois não sei as dependências corretas para tudo o que é usado.

Quando tento adicionar o Primefaces neste projeto, as taglibs não são reconhecidas. Olhando online, parece que o formato de taglib desse curso não é mais aceito (<%@ taglib uri="...">), mas se tento fazer da outra forma (<html xmlns:h="...">), também não funciona.

Quero transformar as páginas que fizemos como o form e a lista com os ricos componentes do Primefaces.

Obrigado

10 respostas

Para utilizar o primefaces primeiramente você deve adicionar a dependência no pom.xml:

<dependency>
    <groupId>org.primefaces</groupId>
    <artifactId>primefaces</artifactId>
    <version>6.1</version>
</dependency>

Após adicionar a dependência e o jar for adicionado ao projeto você deverá nas páginas xhtml declarar um namespace:

xmlns:p="http://primefaces.org/ui"

A partir daí você deverá adicionar os componentes primefaces utilizando este namespace assim como mostra o showcase do site:

https://www.primefaces.org/showcase/

hm... Então precisa ser xhtml. Talvez esteja aí meu erro, porque eu adicionei a dependência.

Bastaria renomear o form.jsp, por exemplo, para form.xhtml e mudar o formato das taglibs? Ou preciso realizar mais alguma configuração no sistema para ele entender que precisa buscar por xhtmls ao invés de jsps?

Obrigado

Edit: não tenho acesso ao projeto agora, então não tenho como testar se só isso já resolveria

Existem uma diferença temporal no uso de JSP e xhtml. A primeira especificação do (JSF 1.x.) utiliza JSP como "extensão".

O JSF 2.x. aceita o xhtml como extensão, mas falando de uma forma bem prática, na sua utilização não tem muitas diferenças.

Por ter testado anteriormente recomendo sim que você busque criar páginas xhtml, pois ao declarar namespaces como fiz no post anterior é funcional.

Já utilizei varias vezes

Hm... mais um curso então com recursos descontinuados... Vou sugerir a remodelagem do curso para eles.

Espero que não tenha mais coisas descontinuadas, pois vou usar esse projeto pessoal que estou fazendo como comprovação de conhecimento em desenvolvimento web.

Assim que puder, vou testar as alterações sugeridas e marcar a tua resposta como sendo a solução.

Obrigado!

Edit: até lá, se mais alguém quiser adicionar alguma informação pertinente, sou todo olhos

Boa noite

A alteração não foi suficiente. Além de ele não reconhecer as taglibs durante a digitação e não resolver as tags relacionadas as taglibs, ao tentar acessar a página /form, ele está dando erro 404.

O que fiz, foi mudar o form.jsp para form.xhtml e mudar o conteúdo das taglibs para este formato (as duas primeiras linhas peguei do xhtml criado no curso que fala de Primefaces):

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:c="http://java.sun.com/jsp/jstl/core"
      xmlns:f="http://www.springframework.org/tags/form"
      xmlns:s="http://www.springframework.org/tags"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui">

Como podes ver, mantive as taglibs originais do curso e adicionei as duas taglibs iniciais usadas no curso que trata do Primefaces.

A dependência do Primefaces está no pom.xml e alterei mais um ponto que lembrei que ele atribui ".jsp" como sendo o sufixo e troquei para ".xhtml" na classe AppWebConfigurator.

No aguardo

solução!

Boa noite pessoal.

Acho que esta havendo um desentendimento aqui. O primefaces é uma biblioteca de componentes feita para o JSF. O próprio site do primefaces diz isso, que são componentes para JEE, da qual o JSF faz parte como framework web.

O spring (spring-mvc) é um contexto meio diferente do JSF. O JSF por exemplo, é component-based, já o spring é action-based. São formas diferentes de se trabalhar na web.

Não adianta apenas mudar o formato da página de jsp para xhtml. O modelo de se trabalhar é meio diferente. O ciclo da requisição e tudo mais.

Minha dica: Use primefaces com JSF((. Tem cursos aqui no Alura sobre esta stack (maven, jsf e primefaces).

Com Spring-mvc eu usaria ou o bom e velho jsp ou thymeleaf, que é outra engine para front-end.

Ou então, fazer uma arquitetura rest com o front-end em Angular, que também é bacana.

Claro, também da pra usar o JSF com Spring, mas usando o Spring como injeção de dependências e o JSF como framework web, mas ai é mais complicado e não tão usual.

Se algo não ficou claro, da um toque.

Abraços

Bah

Joguei fora tempo e conhecimento nesse curso. Não encontrei este curso que falas que tem Maven, JSF e Primefaces. Poderias me passar o link?

Estou com um prazo extremamente apertado e quase certamente não vou conseguir fazer o curso, mas quero pegar o resultado final dele pra usar de base no meu projeto.

Obrigado!

Bom dia Guilherme,

Me desculpe descordar de você um pouco. Este curso não é uma perca de tempo, ele ensina o que propõem, que é o Spring Mvc. Você pode criar uma aplicação com o que conheceu aqui tranquilamente, apenas não pode usar o Primefaces, mas isso não significa que a tecnologia ou o curso estão errados.

Os cursos para te ajudarem no que voce quer, são esses:

https://cursos.alura.com.br/course/jsf https://cursos.alura.com.br/course/jsf-primefaces

Existem mais, mas estes 2 já ajudam bastante.

Se deseja trabalhar com JEE, da uma olhada nesta trilha:

https://cursos.alura.com.br/career/desenvolvedor-java-web-enterprise

Qualquer dúvida da um toque.

Abraços.

Eduardo, desculpa. Acho que me expressei mal.

Estava me referindo ao meu objetivo pessoal e não ao objetivo do curso.

Em outras palavras, eu perdi tempo, mas o curso não é uma perda de tempo. Tanto, que até comentei que gostei muito da arquitetura utilizada nele.

Muito obrigado pelos links!

Abraço!

Tranquilo Guilherme,

Boa sorte ai no seu projeto, e qualquer dúvida ja sabe, o forum está ai para ajudarmos :)