POPUP JSF ou PrimeFaces

15 respostas
L

Caríssimos, eu andei vasculhando aqui no forum e não achei nada, então vamos ver se derrepente alguém tem alguma solução.

Eu estou dando manutenção em um projeto WEB feito em primefaces e surgiu a seguinte demanda. Implementar um pop up que vai reinderizar/exportar um PDF.

Oque eu estou tentando fazer:

Eu fiz um pop up usando um javascript. O problema é que eu não sei como passar os dados do bean do formulário pai para dentro do popup. Me sugeriram usar uma servlet para reinderizar o pdf no popup mas eu acho que é como se eu estivesse usando VB na minha aplicação, ou seja, acho q vai ficar porco.

Eu queria saber se tem algum jeito de passar um bean para um popup e sem usar javascript(window.open), tudo com componentes jsf ou prime?! Eu vi um componente do primefaces que se chama ligthbox, mas ele não parece funcionar na minha aplicação. Não sei se é biblioteca ou outra coisa, mas qndo eu chamo o ligthbox a tela fica toda preta e não faz mais nada. Já tentei debugar mas não cheguei a conclusão nenhuma de erro.

Se alguém souber de alguma coisa, eu ficaria extremamente grato!

15 Respostas

J

Procure o componente dialog do primefaces, deve atender a sua necessidade.

L

Opa!
Valeu carinha, é que eu me esqueci de dizer uma coisa. Eu estou tentando acessar o PDF reinderizado via iframe, e o ligthbox me provê exatamente isso.

Ele tem uma propriedade chamada iframe=“true/false” que permite usar o componente anexando um iframe ou não, e no meu caso, eu quero usar justamente o iframe!

Mas vou tentar usar esse componente.

Valeu!

F

Você tentou usar também o primefaces dataexporter?

ele é bem facil de manipular:

http://www.primefaces.org/showcase-labs/ui/exporterHome.jsf

L

Opa fabiozanardi, valeu mesmo, mas a solicitação não se aplica a tabelas, são informações soltas da tela(parece bizarro, mas é isso mesmo).

Na verdade, eu já até consegui reinderizar um PDF do jeito que eu preciso(usando session e javascript), mas o que eu queria mesmo era usar o ligthbox para deixar mais padronizado, afinal eu estou usando componentes do prime e acho meio “feio” usar js no meio enquanto eu tenho disponível o uso dos componentes do prime.

Mas valeu essa informação. O DataExporter é bem bacana mesmo, mas não vai me ajudar pq dentro dessa demanda o pessoal tb pediu para apresentar um “preview” em PDF e depois de apresentar o preview a pessoa teria a opção de exportar o conteúdo para PDF ou Excel ou CSV, por isso a necessidade de um “PopUp”, entendeu!? Caso vc tenha alguma solução para toda essa solicitação, eu agradeço.

Valeu!

C

Se voce consegue gerar o arquivo do pdf no servidor, pode demonstrar ele como uma imagem através do ligthbox, acredito eu que seja relativamente simples de fazer isso com o prime, mas em ultimo caso, voce pode criar um código customizado como faria com html e colocar em uma dialog que lhe dá mais liberdade que o lightbox

L

Joinha cleciusjm, valeu a dica.

Mas como eu disse, eu tentei usar o lightbox. O problema é que ele parece estar com algum bug q eu não estou conseguindo resolver. Quando eu chamo o evento dele, a tela fica toda preta e não carrega o iframe que eu estou tentando chamar, e pior de tudo, ele não estoura erro nem nada!

Eu não manjo muito de componentes visuais para web, por isso que se alguém souber de uma outra solução parecida com o lightbox, e pudesse me dizer, iria me ajudar pra caramba!

Valeu carinhas!

C

Como este conteudo é setado no lightbox? Poderia mostrar um pouco de código?

L

Oi cleciusjm, boa noite.
Segue exatamente o código que eu estou tentando executar.

<p:lightBox iframe="true">  
    <h:outputLink value="http://www.google.com.br" title="Google HomePage">  
        <h:outputText value="Google HomePage"/>  
    </h:outputLink>  
</p:lightBox>

Ps: eu coloquei tudo do google mais para ilustrar, pq eu estou na verdade tentando chamar um xhtml do meu projeto. Afinal, se der certo com o site do google, fatalmente vai dar certo chamando minha xhtml

Obrigado.

E

Está colocando como link .jsf ou .xhtml?

L

Olá ErickRAR

Eu até vou usar XHTML como eu falei, mas eu estou tentando colocar qualquer domínio e nao está funcionando. Agora a pergunta: Faz diferença colocar jsf ou xhtml ou do ou html?!

<p:lightBox iframe="true">    
    <h:outputLink value="http://www.google.com.br" title="Google HomePage">    
        <h:outputText value="Google HomePage"/>    
    </h:outputLink>    
</p:lightBox>

Valeu!

E

Eu experimentei aqui, pois nunca usei lightBox

-Usando “http://www.google.com.br”, o box abriu, porém a pagina não(o endereço alterava para https e abria uma página de erro. Em nenhum navegador abriu.
-Usando “teste.jsf” abriu normalmente.
-Usando “teste.xhtml” apenas apareceu escrito “teste”.

Está dentro de um form? Eu só criei um form e colei o código que você postou.

L

Opa…, agora sim tá me ajudando.

Será q é biblioteca?

Eu estou usando essas:
antlr-2.7.6.jar
c3p0-0.9.1.jar
commons-collections-3.1.jar
dom4j-1.6.1.jar
hibernate3.jar
hibernate-commons-annotations-3.2.0.Final.jar
hibernate-core-3.6.0.Final.jar
hibernate-jpa-2.0-api-1.0.0.Final.jar
hibernate-validator-4.1.0.Final.jar
javassist-3.12.0.GA.jar
jsf-api.jar
jsf-impl.jar
jta-1.1.jar
log4j-1.2.16.jar
mysql-connector-java-5.1.13-bin.jar
primefaces-2.0.1.jar
slf4j-api-1.6.1.jar
slf4j-log4j12-1.6.1.jar
validation-api-1.0.0.GA.jar

vc poderia me dizer as que vocë está usando?

E

Minha lista:

antlr-2.7.6
commons-beanutils-1.7
commons-collections-3.1
commons-logging-1.0.2
dom4j-1.6.1
hibernate3
hibernate-testing
itext-1.3.1
jasperreports-3.0.0
javassist-3.4.GA
javax.faces-2.1.7
jstl
jta-1.1
log4j-1.2.15
postgresql-8.3-603.jdbc3
primefaces-3.2
slf4j-api-1.5.3
slf4j-log4j12-1.5.3
standard

G

Sei que tópico é antigo mas estou com o mesmo problema, aparece uma tela preta quando chama a página pelo p:lightbox.
Você conseguiu resolver?
Ou se alguém puder ajudar.

Obrigado.

L

Olá gomarin, boa tarde.

Eu acabei limpando algumas libs que estavam em conflito, e como faz tempo e eu já mudei de projeto não sei de cabeça quais foram.

Tenta usar uma a uma para ver se te ajuda.

Me desculpa não detalhar a solução.

Abs();

Criado 8 de junho de 2012
Ultima resposta 31 de ago. de 2015
Respostas 15
Participantes 6