2011-02-09 6 views
0

Je suis en train de télécharger un fichier à partir du serveur. L'appel RW GWT normal ne me permet pas de faire cela, et j'ai donc écrit une servlet pour faire ce travail pour moi. Du côté client, je crée un objet Frame, et j'y mets l'URL du servlet, et j'ajoute cet objet Object dans mon panneau racine. Lorsque j'exécute cela dans IE, une fenêtre apparaît demandant le fichier Save/Open. Mais quand j'exécute la même chose dans un navigateur Firefox ou Google Chrome, rien ne se passe. Je ne reçois aucune requête du côté de mon servlet/serveur. Voici une tranche du code: -GWT Cadre ne fonctionne pas dans Mozilla Firefox ou Google Chrome, mais fonctionne bien dans IE

Chaîne servletUrl = "http: // localhost: 13080/Navigateur/ui/dataExportServlet? Level = ZERO";

  Frame frame = new Frame(servletUrl); 
    frame.setVisible(false); 
    RootPanel.get().add(frame); 

Alors, quelqu'un peut-il m'aider s'il vous plaît.

Répondre

0

Ceci peut être lié à la même politique d'origine. La servlet et la webapp fonctionnent-elles sur le port 13080? Si elles diffèrent, SOP peut échouer. Si je comprends bien, IE a une politique plus détendue donc il pourrait fonctionner là mais pas dans le chrome.

Voir http://en.wikipedia.org/wiki/Same_origin_policy et Can I disable SOP (Same Origin Policy) on any browser for development?

+0

Ya, les deux fonctionnent sur le même port. Si je colle l'URL du servlet directement dans chrome/mozilla, j'obtiens le pop-up. Donc, ma servlet fonctionne bien. Mais si je l'invoque via GWT Applictaion, par Frame, la requête n'atteindra pas le servlet .... –

0

Dans Chrome, vous pouvez utiliser les outils de développement (CTRL + MAJ + I) pour vérifier si le IFrame est ajouté au code HTML, et si la source du cadre est correctement définis. Vous devriez également être en mesure de voir quel contenu a été chargé dans l'iframe.

Alternativement, définissez un point d'arrêt dans votre servlet pour voir si l'iframe est en cours de frappe du tout à partir de Chrome.

+0

Bonjour Steve, J'ai vérifié dans Chrome, en utilisant les outils de développement. Dans l'onglet "Réseau", il affiche le nom du servlet et la colonne "État" indique En attente. Si je vois l'onglet "Console", il dit "Impossible de charger la ressource", et la ressource est ma servlet. Lorsque je passe la souris sur le nom du servlet, il me montre l'URL correcte de ce servlet. Si je prends cette URL et la colle dans le navigateur, il se comporte comme prévu. Donc, cela signifie que le servlet est déployé correctement, dans le conteneur Web. Donc, pouvez-vous s'il vous plaît me suggérer, ce dont j'ai besoin pour le faire fonctionner .... –

+0

J'ai fait un peu plus d'enquête. Dans Chrome, je ne parviens pas à accéder à la servlet via l'application GWT, mais dans Mozilla Firefox, je vois que la requête est transmise au servlet, elle obtient les données générées et renvoie le résultat correctement (ce qui est en réalité un Fichier CSV), mais la fenêtre contextuelle n'est pas remplie du côté client. J'ai vraiment besoin de résoudre ce problème au moins dans Mozilla ..... –

0

J'ai trouvé la solution à ce problème. J'ai supprimé les cadres et ajouté le code suivant: -

com.google.gwt.user.client.Window.open (url, "CSVDownload", "");

Maintenant, cela ouvre une nouvelle fenêtre de navigateur, puis je reçois le pop-up pour ouvrir/enregistrer le fichier côté serveur dans les 3 navigateurs Web. (IE, Mozilla FireFox, Chrome).

Merci beaucoup!

Questions connexes