Srs.
Esse cenário é enviar dados para uma popup exceto pela URL (GET)… o usuário clica no botão e envio os dados para uma popup chamada através do window.open().
Tendo em vista que são dois request’s distintos, é um tremendo desafio!!
a4j:keepAlive ? Não deu certo!
Session ? Nem precisa falar o pq!
Facelet’s ? Não há nesse projeto.
Lembrando que por motivos intrínsecos ao resultado final, existe um pequeno trecho de java na JSP… é isso mesmo, um “horrível” mais necessário scriplet =D
Você não pode substituir seu popup por um rich:modalPanel ???
[]'s
neeryck
Tentei isso hoje meu brother…
Mais infelismente não dá certo. Primeiro que temos outro modalPanel (genérico) Que captura todas as msgs no context e é exibido de acordo com a respectiva Serverity e esse mesmo modal dá conflito para ser fechado com outro modalPanel incluso…mais isso é uma outra história rs
O fato é que utilizamos muito o modalPanel do richfaces, mas para essa necessidade não dá!
Desculpa! Mas eu não entendi como passarei os parâmetros para a popup dessa forma?!?
Mais é um cenário teoricamente idêntico ao meu rs
[]'s
P
plic_ploc
Se o botão estiver dentro de um form, adicione esses dados ao form. Se não, coloque o botão dentro de um form com esses dados.
neeryck
E como eu posso obter esses dados na popup/scriplet??
Olhando no filtro, tenho receio que continue sendo dois request’s distintos e não consigo obter os dados!
Por isso a pergunta.
Muito obrigado novamente!
[]'s
P
plic_ploc
Não são dois requests! Quando você faz um post e omite o target, o resultado do post é exibido na janela que o enviou. Se informado, o resultado é exibido na janela informada e a janela que o enviou não é atualizada.
neeryck
Excelente! Mais uma que aprendo! rs
Mais como eu pego esses dados na popup??
COnsiderando que é um POST, tentei pelo request.getParameter, mas sem sucesso!!
[]'s
neeryck
Tenho uma dúvida…
Se não são dois request’s porque que quando eu faço isso:
FacesContext.getCurrentInstance().getExternalContext().getRequestMap().put("teste","123")// No bean
FacesContext.getCurrentInstance().getExternalContext().getRequestMap().get("teste")// Na popup
O resultado disso é null, quando deveria ser “123” ???
[]'s
neeryck
Acho que fiz besteira rs
Olhe a manobra:
Quando o usuário clica no h:commandButton no action dele coloco o método do bean. Nesse método é feito uma série de verificações de acordo com as regras de negócio!
Aí que vem o POG rs
No meu bean eu seto um valor no hidden da página, e no onload da página eu chamo uma function que verifica o valor desse hidden para só então fazer isso que vc me sugeriu rs ou seja, não há POST rsrs
Agora que descobri isso, surge outra dúvida…
Dá pra continuar com essa linha de raciocínio que estamos agora, vindo de uma validação do bean???
Desculpe meu equivoco plic_ploc !
Ficarei muito agradecido se poder continuar me ajudando!! Está sendo de grande valia !
[]'s
P
plic_ploc
Você está usando <h:form/>?
Se sim, informe a id ( <h:form id=“fr” …> ) e no getParameter inclua “fr:”.
Ex:
pagina:
<h:formid="fr"><h:inputTextid="nome"/></h:form>
servlet:
Stringname=request.getParameter("fr:nome");
neeryck
Então… mudei o código p testar, fiz exatamente como vc sugeriu mas o valor do meu h:inputText não é obtido na popup : request.getParameter(“idForm:idInput”).
Claro que para popup ao menos ser exibida, tive que “ingessar” os valores dentro dela!
Só que os print’s dos request.getParameter são null
[]'s
P
plic_ploc
Sem o trecho do código que envia os dados e o do que exibi fica difícil visualizar o problema!
Ele abre a Principal.jsf em uma nova guia e não a MinhaPopup.jsf !!
A sugestão é essa mesmo brother?
[]'s
P
plic_ploc
Agora você terá que usar o
Exemplo:
Página principal (welcomeJSF.jsp):
<%@pagecontentType="text/html"pageEncoding="UTF-8"%><%@taglibprefix="f"uri="http://java.sun.com/jsf/core"%><%@taglibprefix="h"uri="http://java.sun.com/jsf/html"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><%--ThisfileisanentrypointforJavaServerFacesapplication.--%><f:view><html><head><metahttp-equiv="Content-Type"content="text/html; charset=UTF-8"/><title>JSP Page</title><script>functioncheck(f){if(f.elements['fr:popup'].checked){f.target="jan";varfeatures="height=600,width=800,status=no,toolbar=no,menubar=no,location=no,scrollbars=no,resizable=no,directories=no";window.open('','jan',features);}else{f.target='';}}</script></head><body><h1><h:outputTextvalue="JavaServer Faces"/></h1><h:formid="fr"><h:selectBooleanCheckboxid="popup"/><h:commandButtonaction="#{bean.myAction}"onclick="javascript:check(this.form)"value="result"/></h:form></body></html></f:view>
Página contendo o resultado (result.jsp):
<%@pagecontentType="text/html"pageEncoding="UTF-8"%><%@taglibprefix="f"uri="http://java.sun.com/jsf/core"%><%@taglibprefix="h"uri="http://java.sun.com/jsf/html"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><%--ThisfileisanentrypointforJavaServerFacesapplication.--%><f:view><html><head><metahttp-equiv="Content-Type"content="text/html; charset=UTF-8"/><title>JSP Page</title></head><body><h1><h:outputTextvalue="Resultado"/></h1></body></html></f:view>
<?xml version='1.0' encoding='UTF-8'?><!-- =========== FULL CONFIGURATION FILE ================================== --><faces-configversion="1.2"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/web-facesconfig_1_2.xsd"><managed-bean><managed-bean-name>bean</managed-bean-name><managed-bean-class>beans.Bean</managed-bean-class><managed-bean-scope>request</managed-bean-scope></managed-bean><navigation-rule><from-view-id>/welcomeJSF.jsp</from-view-id><navigation-case><from-outcome>result</from-outcome><to-view-id>/result.jsp</to-view-id></navigation-case></navigation-rule></faces-config>
neeryck
Voilà plic_ploc
Quero agradecê-lo pela paciência e boa vontade!! Realmente vc estava certo desde o princípio.
Depois de vários fóruns e googladas está resolvido!! Agora só para eu colocar esse tópico na lista dos “Melhores tópicos do GUJ” poderia nos dizer um pouco mais sobre isso:
plic_ploc:
Não são dois requests! Quando você faz um post e omite o target, o resultado do post é exibido na janela que o enviou. Se informado, o resultado é exibido na janela informada e a janela que o enviou não é atualizada.
Eu queria entender o porque a URL permanece a mesma (welcomeJSF.jsp) mesmo na popup?
O redirecionamento (configurado no faces-config) é feito pelo JSF depois que a popup é aberta??