Do servlet retornar para um iframe ?[RESOLVIDO]

20 respostas
dijava

pessoal minha aplicacao possui um iframe e é nele q faz a aquisição para o meu servlet, o problema ta ai qnd chega no meu servlet eu tenho q voltar para a mesma pagina q estava antes, eu dou um “request.getRequestDispatcher(”/paginas/cobrancas/cobranca_movdoc.jsp").forward(request,response);" para o jsp q esta dentro iframe e ele volta certinho qnd eu acesso localmente, mas se eu acesso externamente pelo IE ele se perder e so retorna o jsp do iframe ignorando o conteudo exterior, mas no firefox funciona!!! alguem sabe o pq ?

20 Respostas

marcelo.bellissimo

Cara, eu já peguei um caso assim uns tempos atrás mas não lembro como resolvi… você está disparando o request por onde, por dentro do iFrame mesmo, ou de fora dele e redirecionando para o iFrame? Eu lembro que no meu caso fiquei brincando com o “target” do iFrame…

dijava

o passo é :
1 - do iframe eu mando para o servlet
2 - do servlet volto para o iframe.

mas so quero mudar o conteudo do iframe ! o exterior tem q ficar!

marcelo.bellissimo

Como que está a chamada? É por algum botão, link, script que redireciona… o que é ? Coloca ai pra gente ver…

dijava

eu mando por javascript mesmo

document.form_desvio.action = "/Intranet/cobranca_movimentoDoc";
document.form_desvio.submit();
juliofsn

Se você chama no iframe, devia voltar pro próprio iframe. Em algum lugar, você está alterando esse fluxo normal. Talvez utilizando um target dentro do iframe apontando pra página externa.

dijava

bom estou voltando assim :

request.getRequestDispatcher("/paginas/cobrancas/cobranca_movdoc.jsp").forward(request,response);
marcelo.bellissimo

Cara, realmente é alguma coisa relativa ao seu target… tenta “forçar” o target, ali no seu script:

document.form_desvio.action = "/Intranet/cobranca_movimentoDoc"; document.form_desvio.target= "id_do_iframe"; document.form_desvio.submit();

Aliás, esse script aqui está no iframe, ou fora? Fora né ? E “form_desvio” seria o seu iframe ?

dijava

esta dentro do jsp q fica dentro do iframe

marcelo.bellissimo

Ahhhhhhh, então… vc tem que fazer o seguinte… nesse script, faça assim:

document.id_do_iframe.action = "/Intranet/cobranca_movimentoDoc"; document.id_do_iframe.submit();

Entendeu? Voce deve disparar o submit() do iframe, você está disparando o submit do form de fora…

dijava

mas é isso q eu estou fazendo, eu estou disparando o submit do form de dentro do iframe, esse “form_desvio” é q esta dentro do jsp q esta dentro do iframe!

Scoobydoo

fais só um this.request.forwardTo("");

dijava

nao entendi ?

mandar um “request.forwardTo(”");" da onde ?

dijava

turma ainda nao consegui, alguem ai tem uma ideia ?

marcelo.bellissimo

Tenta, ao invés de dar submit, fazer um “link” com o target pra ele mesmo (_self) e chamando como URL essa sua servlet, passando os parâmetros necessários… algo assim:

<a href="/Intranet/cobranca_movimentoDoc?param1=x&param2=y" target="_self">

Dá pra fazer isso no script também… location.href …

dijava

nao queria usar queryString ! seu passar por href vou mandar por “get” e eu queria por “post”!

dijava

alguem pode me explicar o comportamento do href e de um onclick pq a solução q eu encontrei para isso foi passar a funcao javascript por dentro do href e na funcao eu dou “location.href=/servlet?var=valor&…” se eu mandar pelo onclick ou submeter a pagina na hora que volta do meu servlet o iframe some e volta a pagina q deveria estar dentro do iframe, agora c eu mandar pelo href vai direitinho alguem sabe o pq ? e pode me explicar esse comportamento ?

marcelo.bellissimo

O problema não está entre o href (que é uma “propriedade” da página) e o onclick() (que é uma função), está entre o href e o submit()

O ‘href’ é um atributo da página atual, que diz qual a página deve exibir… e o submit() é uma função que envia o form inteiro e aguarda uma resposta… eu acho, veja bem, eu acho que o submit() sempre vai retornar pra página pai, isso é, se houverem iFrame’s na página, qualquer submit() tende á mudar o ‘href’ (ahá!) da página pai… mas, se você usar o href do iFrame e alterar seu valor, ao invés de disparar o submit(), voce consegue controlar qual o “frame” que deseja alterar a página…

Agora, esse comportamento do submit() realmente não é padronizado, acho que no IE ele sempre retorna pra “janela” pai, no FF não faz isso… alguem ai tá pisando na bola, e eu acho que é o IE… faz mais sentido redirecionar a página apenas do frame que disparou o submit(), e não o form pai… bem, sei lá, opinião minha…

dijava

pos é acho q isso responderia minha duvida em relação o comportamento dos browser isso deveria ser padrao, mas olha q bizarro, madei por href e funcionou , ai comecei a testar ai testei o seguinte "

function acao(acao){
    document.form.action="/meuServlet..."
    document.form.submit();
}
.
.
.
<a href="#" onclick = "acao('gravar')"

ignorou o iframe!!!

ai fiz o seguinte

function acao(acao){
    document.form.action="/meuServlet..."
    document.form.submit();
}
.
.
.
<a href="javascript:acao('gravar')" ....

funcionou !!!

marcelo.bellissimo

É, realmente… o modo “obscuro” como cada browser trata os seus eventos é o que mais atrapalha na hora de programar pra Web… “padrão” é lenda, e quem tá nessa área sabe disso… infelizmente…

dijava

tem toda razao !!! brow obrigadao ai pela forca vou colocar como resolvido aqui mas obrigadao ai pela ajuda !!!

Criado 29 de janeiro de 2010
Ultima resposta 4 de fev. de 2010
Respostas 20
Participantes 4