2011-12-08 1 views
0

J'ai écrit une application scientifique GWT qui demande simplement des paramètres, effectue le calcul, puis trace le résultat (les données numériques ne sont pas présentées). Cela fonctionne très bien.Meilleur moyen d'exporter des données à partir d'une application GWT?

Maintenant, un utilisateur m'a demandé un moyen d '"exporter" les données (1000 nombres double précision). Comment dois-je faire cela? Je pense:

a) Le moyen le plus élégant serait un bouton "Exporter des données" qui ouvrirait un dialogue "Enregistrer sous ...". Si j'ai bien compris, cela ne peut pas être fait, pour des raisons de sécurité, du côté client. Mais je ne peux pas exécuter une servlet Java sur le serveur, et l'ensemble de données est trop volumineux pour donner l'URL d'un script PHP.

b) Un bouton qui copie les données dans le presse-papiers serait probablement la meilleure solution. Mais il semble que GWT ne l'implémente pas actuellement, et une solution multi-navigateur serait compliquée dans JSNI. Si quelque chose échoue, l'utilisateur n'aura aucun accès aux données.

c) Un bouton pour ouvrir un PopUpPanel ou une nouvelle fenêtre qui afficherait les données numériques. Dernier recours. Doit être implémenté de manière à permettre à "Sélectionner tout" pour sélectionner uniquement les données.

Des pensées? Quelqu'un peut-il penser à des moyens d'éviter c)? Merci.

Répondre

0

Eh bien, vous pouvez POST les données à un script PHP. Vous n'avez pas à le transmettre dans l'URL. Vous pouvez publier des données dans n'importe quel script côté serveur à l'aide de la classe FormPanel.

Il est un exemple sur la page JavaDoc, mais ce serait quelque chose comme ceci:

FormPanel form = new FormPanel(); 
form.setAction("/yourPhpScript.php"); 
form.setEncoding(FormPanel.ENCODING_MULTIPART); 
form.setMethod(FormPanel.METHOD_POST); 

Hidden postData = new Hidden(); 
postData.setName("dataset"); 
postData.setValue(/* your data set */); 

form.add(postData); 


form.addSubmitCompleteHandler(new FormPanel.SubmitCompleteHandler() { 
    public void onSubmitComplete(SubmitCompleteEvent event) { 
    // When the form submission is successfully completed, this event is 
    // fired. Assuming the service returned a response of type text/html, 
    // we can get the result text here (see the FormPanel documentation for 
    // further explanation). 

    // So what you want to return from your PHP script is a link to a URL of the exported results 
    Window.alert(event.getResults()); 
    } 
}); 

RootPanel.get().add(form); 
+0

Ah, bien sûr. Je vous remercie! – HenriV

Questions connexes