Direcionar resposta a diferentes frames

10 respostas
J

Bom dia amigos,
montei um servlet que me devolve duas páginas com dados, uma deveria aparecer no frame1 e a outra no frame 2.
Só que não sei como redirecionar o frame para aonde vai a página, as duas estão aparecendo no frame que fora indicado no botão de submmit, como alterar isso ?

De antemão agradeço a todos que ajudarem.

Um abraço a todos

10 Respostas

C

oba!!

Este controle deve ser feito do lado cliente.

tipo … quando vc chamar seu Servlet
faça algo do tipo .:

<A HREF="/meucontexto/meuServlet?param=xxx" target="parent.nomedoframe"></A>

beleza?

J

Isto está sendo feito e é justamente o problema.
São duas telas que terão que ser exibidas em diferentes frames, dessa maneira ambas irão para o mesmo.
Eu preciso arranjar uma maneira de enviar uma para o frame 1 e outra para o frame 2

_fs

Crie um form invisível no frame 2 e, ao ser clicado o botão submit no frame 1, dê submit no form no frame 2 \o/

Mas pode não ser nada disso, depende do que você está fazendo …

danieldestro

mande seu servlet retornar uma pagina que é um frameset (html), que esse sim chama as duas outras páginas!

J

Só que as duas paginas que irei exibir são dinâmicas, montadas pelo meu servlet.
Eu teria que encontrar uma maneira de fornecer ao response o nome do frame que irá ser exibida a página, só não sei se isso é possível.

danieldestro

Me explica, pois eu não entendí… COMO o seu sevlet gera duas páginas diferentes???

J

Bom vamos lá, eu tenho um objeto chamado InicializadorSistema que extende HttpServlet
Este Inicializador por sua vez chama um outro objeto chamado ConectorSistema , que executa em threads objetos do tipo (“Empresa”,“Unidade”) entre outros, que montam Html’s com os resultados de pesquisa, e seu retorno é um Hash contendo as mesmas html’s citadas.
Esta Hash retorna até o InicializadorSistema onde é varrida uma a uma (através de um while) e exibida com o código abaixo.

response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println(strTodaTela);
        out.close();

Até aí tudo bem, ele faz corretamenta só que no mesmo frame, uma tela sobrepõe a outra.
Eu precisaria de uma maneira que pudesse redirecionar o target de cada html exibido.

Espero ter sido claro, caso não, realmente me perdoem.

Um abraço e agradeço a todos por todo tempo dispendido até agora

danieldestro

Bom, pelo o que eu entendí o seu Servlet (InicializadorSistema) está atuando como um agregador de diversos pedaços da uma página HTML.

Existem muitas maineiras de se fazer isso, bem mais elegantes, produtivas e com mais reuso.

Tente dar uma olhada em Struts e Tiles. Tiles faz o que você deseja.

Caso não queira usar Tiles/Struts, então crie um index.html, que será um frameset. E cada um dos frames chamará um Servlet que apenas exibe o pedaço desejado. Entendeu?

J

Entendi a sua solução, mas como o submit está no frame 1 e é ele quem faz a chamada do Inicializador, ele exibe as duas telas no mesmo frame. (O index.htm já está da maneira sugerida).
Irei dar uma olhada no Struts e no Tiles para ver se consigo resolver isso, valeu mesmo pela dica e obrigado pela força.

danieldestro

É só vc fazer assim:

<a href="SeuServlet" target="_parent">clique aqui</a>
Criado 17 de março de 2004
Ultima resposta 17 de mar. de 2004
Respostas 10
Participantes 4