2010-10-05 4 views
-1

Je n'arrive pas à résoudre ce problème.window.location et window.open problème

A l'origine le code JSP a une fonction Javascript qui appellerait un jsp d'un autre serveur:

window.open("<%= otherServer %>/ourreports/Company/fooreport.jsp?index"+index,"Foo",options); 

otherServer était un serveur local (http://192.168.4.40:8080) Cela a bien fonctionné , et sortirait une nouvelle fenêtre avec fooreport.jsp.

La tâche est maintenant de pointer vers un fichier jsp sur le même serveur. Alors, je l'ai changé

window.open("/reports/Company/fooreport.jsp?index"+index,"Foo", options); 

Et je recevrais un télécharger le fichier pop-up au lieu d'une page

J'ai aussi essayé de faire toutes les opérations suivantes:

window.location = "/reports/Company/fooreport.jsp?index="+index; 
window.location.href = "/reports/Company/fooreport.jsp?index="+index; 
window.location = "http://localhost:9080/reports/Company/fooreport.jsp?index="+index; 
window.location.href = "http://localhost:9080/reports/Company/fooreport.jsp?index="+index; 

Et j'ai toujours le popup pour télécharger le fooreport.jsp sur mon ordinateur.

Le jsp est bien formé, a le DOCTYPE, les balises, les déclarations de page @ <% de ... C'est essentiellement la même jsp qui était appelé avant

J'utilise WebSphere 7.5.4 et java est 1.5

+2

Quel est le type MIME (ou simplement l'en-tête HTTP 'Content-type') que le JSP a quand il essaie de télécharger? –

+2

Si vous tapez les adresses dans le navigateur, fonctionnent-elles ou affichent-elles toujours le téléchargement? aussi si vous téléchargez le fichier montre-t-il les pages rendues? ou le code source avec le '<%' .. dedans? –

+0

Est-ce que 'fooreport.jsp? Index" + index'' une faute de frappe? Vous devriez avoir un '=' entre les clés et les valeurs de la chaîne querystring Comme dans 'fooreport.jsp? Index =" + index'' – Robusto

Répondre

0

Le problème résidait dans la JSP. Les appels utilisant window.location et window.open ont bien fonctionné pour les autres JSP.

Le problème était dans les déclarations "<% page". Je les ai supprimés, donc je ne m'en souviens pas exactement, mais cela avait à voir avec Content-Type et ISO. Je les ai tous sortis, je n'ai laissé que les déclarations "<% page import", et maintenant cela fonctionne correctement.

0

window.location devrait fonctionner si l'en-tête Content-Disposition de la réponse a été défini sur Attachment.

response.setHeader("Content-Disposition", "attachment; filename=yourfile.ext"); 

Noté devrait être que cela à l'intérieur d'un JSP est une mauvaise idée. Si la réponse concerne des données binaires, JSP peut éventuellement la corrompre. Faites ce travail dans une servlet. JSP est destiné à écrire le texte du modèle dans, not pour y écrire le code Java.

+0

Ouais, je sais ... malheureusement, je suis en train de mettre à jour le code de 4 ans, où la servlet appelle juste le JSP. .. et vous l'avez deviné ... tout le code est là en <% %> tags.La réponse finale est une JSP qui charge un rapport Crystal .rpt – elcool

+0

Tant qu'il est basé sur le texte, il ne peut pas nécessairement malformé les données, non. Mais est-ce que le réglage de la disposition du contenu a fonctionné pour vous? – BalusC