Primefaces com site ecommerce

Bom dia amigos. Favor ajudem em uma duvida que eu tenho. É que em livros didaticos reparei que tem alguns exemplos de ecommerce com jsf. E em alguns lugares dizem que jsf e mais para aplicações corporativas. Minha pergunta é se é possivel usar um site ecommerce feito com primeFaces+jsf2.2+css+javascript. Ja vi comentarios na internet que tem outras opções que dizem ser mais rapidas que prime faces. Mas eu quero saber mesmo é se é possivel o usuario usar um site ecommerce feito com prime faces sem problemas. Porque eu mau sei de fsf+primefaces imagina ter que começar tudo do zero com outra framework que nem conheço.

Esta postagem foi sinalizada pela comunidade e está oculta temporariamente.

1 curtida

Eu entendo q tem inumeras outras solucoes mais ja estou a um bom tempro aprendendo primefaces e jsf e ja tenho muita coisa adiantada feita com essa framework. dizem q aplicacoes prime faces tambem é um pouco + rapido com jsf. Talvez alguem ja usou primefaces em ecomerce ou saiba de algum site ecomerce feito com ele. Minha intencao e usar prime faces mesmo eu só desistiria se nao fosse possivel usar ele em ecomerce. Por isso estou perguntando. Obrigado pela dica @Java.Hacker

Sim é.
Primefaces é um framework JSF, não tem finalidade, vc desenvolve oq quiser com ele.
Em questão de escalabilidade, desempenho… ai já é outra história, difícil dizer se vai atender ou não nesta questão.

Quando estiver no ar, posta aqui e me marca, eu gostaria de ver como ficou. :wink:

Blz@Rodrigo_Void se Deus quiser vai estar no ar. Ai te procuro. Mais ainda vou batalhar um pouco.
Pois é vc falou bem é na questao de desempenho que esta minha. Duvida. Mas pra mim é o seguinte se der para o usuario usar o site sem problemas esta bom. Sei q nao e a melhor solucao ate porque em programacao existem varias solucoes so gostaria de saber se vai dar para o usuario usar de boa sem problemas inclusive via celular. O site do primefaces por exemplo roda web e no celular. Se puder me passa seu zap pra eu anotar aqui @Rodrigo_Void

Esta postagem foi sinalizada pela comunidade e está oculta temporariamente.

Como experiência posso te dizer que desenvolvemos aqui um sistema bem simples com Prime e a performance não ficou la aquelas coisa, n paramos ainda pra vr oq é, mas tem um delay bem alto nas requisições. Foi um protótipo, mas optamos posteriormente por Spring Boot. Sei q é bem mais fácil com JSF e Prime mas suas limitações deixam o projeto tenso.

Se o objetivo for abrir um negócio online, vai gastar uma infinidade de tempo até ter algo concreto competitivo ou morrer na praia. Tem várias soluções prontas, como a já citada Magento ou Woocomerce. Se o objetivo for estudo mercado de trabalho, vale o que as oportunidades pedirem.

Favor esse springBoot da para usar conexão via jdbc nele? ele é feito em que javaScript ou oque. vc acha que ele da para usar com java e com performance em um site ecomerce voltado ao publico ? e esse springBoot é obrigatório persistir os dados com spring para usar ele

Boa tarde @javaflex. @Java.Hacker @Rodrigo_Void Obrigado pelas dicas e respostas. deu a entender pelas respostas de vcs que o primefaces não é viável para desenvolver e-comerce por causa da lentidão etc . Mas no caso para eu abandonar o prime faces. As soluções das plataformas Magento e Woocomerce parecem ser boas ,mas são amarradas a esssa plataforma e tem que entender de php. e eu perderia tudo que já fiz. e começaria do zero. ai no caso eu procuro algo que de para desenhar as telas e usar em ecomerce mais que eu possa usar os código java que já tenho e aproveitar o banco tudo. vou dizer uma coisa eu já usei richfaces e abandonei por lentidão e descontinuidade, agora pelo jeito vou ter q abandonar o prime faces também. eu estou com receio de começar outra coisa. e no final descobrir que não server. será que não seria viável eu usar java com html puro. ou estou viajando oque vcs dizem

Dá uma olhada aqui e confere lá o que tem.
É muito mais fácil que usar JPA (salvo se forem coisas muito complexas). Se JDBC é teu lugar, tem o JDBCTemplate que torna tudo mais tranquilo.

Sobre JSF para e-commerce, sim e não.
Sobre ter coisas mais leves, menos dispendiosas e mais fáceis: várias.

Dá pra usar JSF sem **faces, não sei vale a pena, quem pode te responder melhor isso é o @Mike.

Web em Java eu recomendo Spring MVC. No geral particularmente nao faria em Java, usaria PHP ou ASP.NET Core.

Evitaria JPA/Hibernate, JDBC Template é bem mais leve.

Normalmente um site e-commerce requer bastante customização, o PrimeFaces ta com um tema MUITO BACANA disponíveis nas versão 6.11+, além de que mudaram o comportamento de alguns componentes e ai ficou top mesmo.

Sobre performance:
Boa parte dos problemas que eu vejo é sobre mal uso do JSF mesmo, sobre não entender o ciclo de vida do JSF e começar a fazer gambiarra…

No geral, para você ter uma performance boa é só seguir o que esta abaixo:

  • Usar a anotação @Named do CDI no lugar de @ManagedBean
  • Escolher direito os seus escopos, pois o que se ve normalmente é @SessionScope em tudo. 90%+ dos meus escopos são ViewScoped (pacote javax.enterprise.context.ViewScoped). Eu só uso SessionScoped para Login, e para bean que faz o direcionamento para x página e que cuida do breadCrumb do sistema.
  • De maneira alguma você pode colocar lógica pesada ou acesso ao banco em métodos get e set sem ter um if nele, pois durante o ciclo de vida de uma requisição, os métodos set e get podem ser executados x vezes. Vale lembrar também que quando você da update em um componente, você acaba chamando o get dele
  • SEMPRE que você for fazer uma requisição, seja ela chamada pelo p:ajax ou click de um botão/link, você deve processar apenas os componentes necessários e setar partialSubmit para true. O process é responsável por dizer qual componente vai ter o seu valor inserido no atributo que faz o binding com ele e o partialSubmit só envia para a requisição o que você passar no process
  • De update só no que é necessário
  • Cuidado ao utilizar Phase Listener, pois ele é executado sempre que há uma requisição.
  • Reforçando, use partialSubmit pra tudo.

Eu nunca desenvolvi um site e-commerce, geralmente é sistema administrativo, mas uma vez fiz um de Agendamento Online para clínicas médicas.
A empresa onde eu trabalhava tinha um sistema Desktop feito em Swing e as clínicas estavam querendo um Agendamento Online. Ai eu fiz em JSF mesmo, apliquei o conceito de SPA e foi tranquilo…

O que eu vejo muito também, é o uso desnecessário de componentes do JSF, a pessoa quer apenas um painelzinho e ai ao invés de colocar uma div, coloca um p:outputPanel ou h:panelGroup.

A partir do JSF 2.2 foi introduzido a possibilidade de fazer componentes HTML se comportarem como componentes JSF (Composite Component), caso queira saber mais, pesquise por JSF Pass Through ou de uma olhada aqui: https://www.primefaces.org/jsf-is-not-what-youve-been-told-anymore/ Esse seria o JSF sem faces. A aplicação fica mais leve, pois os componentes vão ter menos coisas. É uma coisa a se tentar.

A parte de login do site da oakley é feito em JSF e a “vitrine” não, você pode tentar algo desse jeito caso queira

https://cart.oakley.com.br/sserv/login.xhtml

Para saber se um sistema é feito em JSF, você só precisa inspecionar a página, ir na aba elements, selecionar um componente, dar CTRL F e digitar javax.faces, se você achar é pq é em JSF.

No link abaixo tem algumas empresas que utilizam JSF, você pode checar o site para ver como é o desempenho
https://www.primefaces.org/whouses/

Mas eu acho que boa parte é para a área administrativa

O JSF podia sim ser bem lento em versões anteriores (2.1-), mas hoje eu não vejo isso (desde que desenvolva direito). Se você esta com o pé meio atrás e se não conhece JS e Spring, faz em JSF mesmo que é o que conhece, pois até aprender outra tecnologia pode levar um certo tempo.

Aqui você pode baixar a versão mais recente do JSF (aproveita os lindos temas :slight_smile: ) https://repository.primefaces.org/org/primefaces/primefaces/7.0.RC2/

Ela esta em beta ainda, mas logo sai a 7.0 Final

Como esta a performance do seu sistema? Ta devagar para estar preocupado? Caso você não tenha aplicado o que eu disse acima, tente :slight_smile:

Caso o sistema esteja lento por algum motivo, você pode utilizar o componente p:lifecycle para ver em que fase do ciclo de vida esta demorando.
https://www.primefaces.org/showcase/ui/misc/lifecycle.xhtml

Para ter mais informações sobre o que esta sendo executado, você pode utilizar o component p:log (as vezes ele é útil)
https://www.primefaces.org/showcase/ui/misc/log.xhtml

E para conseguir utilizar o p:lifecycle com eficiência, de uma lida nesse post

Assim você saberá se a lentidão é no bean ou na renderização dos componentes

2 curtidas

Não aconselho, para ecommerce é muito engessado.

Ja teve problema? Se sim, pode citar?

1 curtida

Vale ai. obrigado pela ajuda. @darlan_machado

obrigado pela força

1 curtida

Obrigado @Mike pelas dicas de como usa jsf como essa de
Usar a anotação @Named do CDI no lugar de @ManagedBean. Ai no caso é só eu configurar o CDI no projeto e fazer oque vc falou nos beans certo!.
Dos escopos vou cuidar para evitar sessionScoped como vc falou. O termo breadCrumb é a primeira vez que vejo, não sei oque é. *Vou procurar usar o partialSubmit também quando necessário, tambem nao conhecia.
Esse Phase Listener tambem é novo pra mim.
Favor! oque e conceito SPA?
*Eu vou me atentar para usar jsf o menos possivel como seu exemplo do p:outputPanel.

  • obrigado tambem pela dica e o link do JSF sem faces, vou estudar isso.
    Eu visitei o site da oakley. Vi no login em jsf, ñ sei se vc chegou a ver sem abuzar confirma pra mim se, a tela de cadastro do usuario é jsf tambem. pelo teste que fiz é mais fiquei com duvida.
    *Favor ainda sobre o site da oakley é jsf em algun lugares e na 'vitrine" que é a listagen de produtos e nas galeria de miniaturas de imagens do produto. essa parte vc sabe dizer em que foi feita. esta parecendo que é html e javaScript é isso mesmo?
    porque se for, vou estudar tambem.
    Vou aplicar oq vc disse amigo. a performance do sistema no meu teste aqui esta de boa. mas a performance nao da para testar porque nao esta em produção. com muita gente usando ai é q é o negocio.
    mas como vejo muitos comentarios na internet que jsf é pesado e nao é geralmente bem recomendado para sites voltados ao publico. Eu estou me informando
    se é viavel antes de implementar. Pelo que vi tenho q ter cuidado ao usar jsf. mas estou animado com as dicas q deu. e com o site da aokley que tambem usa jsf.
    Mas se deus permitir eu concluir o site. prentendo usar muito css, html javaScript onde der e o minimo d jsf para ganhar performance junto com suas dicas.
    obrigado pela dica do p:lifecycle tambem e pela grande ajuda sua e de todos os amigos da comunidade

Não sei se você usa um container (como Tomcat por exemplo) ou um servidor de aplicação, se for um container você vai ter que fazer umas configurações extras como por exemplo: configurar o WELD.
Os servidores de aplicação já vem com o CDI embutido, no máximo você tem que criar um arquivo chamado beans.xml com esse conteúdo:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="
      http://java.sun.com/xml/ns/javaee 
      http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
      
</beans>

O beans.xml deve ficar dentro de WEB-INF

BreadCrumb é isso:
https://www.primefaces.org/showcase/ui/menu/breadcrumb.xhtml

Tem sistema que todas as páginas tem um desse, ai eu deixo um bean de sessão controlando ele

SPA significa Single Page Application, ou seja, aplicação de apenas uma página. Na prática é um sistema que possui apenas uma url e ao invés de fazer uma navegação, você apenas troca o conteúdo da página.

É sim, se procurar por javax.faces você irá achar, e outra, os componentes tem j_idt no id

Todo site é feito usando HTML, CSS e JS. Não tem como fugir disso e se eu fosse você não tentaria fugir. Se você dominar eles, você consegue fazer qualquer coisa e aprenderá frameworks muito mais rápido.

:+1:

PhaseListener é uma interface do JSF, que possui 3 métodos para serem sobrescrito, basicamente ela serve para executar X coisa sempre que uma requisição é feita. Você não precisa chamar o PhaseListener, ele é gerenciado automaticamente pelo JSF.
O PhaseListener é geralmente usado para controle de acesso, ou seja, permitir o acesso de determinado usuário em determinada página.
Assim que a requisição para uma página for feita, o PhaseListener é chamado automaticamente e então valida se o usuário da sessão tem permissão ou não.

Normalmente os comentários são de um tempo atrás de quando o JSF era ruinzinho. Principalmente nas versões 1.x (Eu não cheguei a desenvolver nessa versão, mas ja vi e li sobre ela)

Eu nunca desenvolvi um e-commerce, ai quem vai poder me dizer se ficou pesado ou não, é você :slight_smile:

Eu não vejo necessidade de desenvolver um e-commerce em JSF, pelo menos não na vitrine, na parte administrativa ele cai muito bem

1 curtida