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 ?
Do servlet retornar para um iframe ?[RESOLVIDO]
20 Respostas
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…
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!
Como que está a chamada? É por algum botão, link, script que redireciona… o que é ? Coloca ai pra gente ver…
eu mando por javascript mesmo
document.form_desvio.action = "/Intranet/cobranca_movimentoDoc";
document.form_desvio.submit();
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.
bom estou voltando assim :
request.getRequestDispatcher("/paginas/cobrancas/cobranca_movdoc.jsp").forward(request,response);
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 ?
esta dentro do jsp q fica dentro do iframe
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…
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!
fais só um this.request.forwardTo("");
nao entendi ?
mandar um “request.forwardTo(”");" da onde ?
turma ainda nao consegui, alguem ai tem uma ideia ?
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¶m2=y" target="_self">
Dá pra fazer isso no script também… location.href …
nao queria usar queryString ! seu passar por href vou mandar por “get” e eu queria por “post”!
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 ?
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…
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 !!!
É, 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…
tem toda razao !!! brow obrigadao ai pela forca vou colocar como resolvido aqui mas obrigadao ai pela ajuda !!!