Je construis un module Drupal qui intègre l'applet FTP Java "FileCatalyst" avec un formulaire Drupal standard. J'implémente un hook pour soumettre le formulaire quand un transfert de fichier se termine. Actuellement, j'interroge l'applet avec un appel setTimeout(), mais cette méthode peut manquer des changements d'état s'ils se produisent trop rapidement.Comment utiliser java.util.Observable de Javascript?
Cependant, l'objet FileCatalyst hérite de java.util.Observable - il est donc apparemment possible d'enregistrer un observateur pour l'applet et d'obtenir des notifications de changements d'état. Je voudrais savoir comment mettre en œuvre cela. Puis-je utiliser la fonction document.FileCatalyst.addObserver (obj) de Javascript pour obtenir ces changements d'état envoyés à un objet Javascript? Que dois-je passer à addObserver? Comment puis-je construire l'observateur? Quelles méthodes l'observateur doit-il mettre en œuvre pour recevoir des notifications de changement d'état?
C'est une bonne réponse et répond parfaitement au problème d'interrogation. (Je ne sais pas pourquoi je ne l'ai pas fait de cette façon en premier lieu!) La plus grande partie de ma question est liée à une spécification que l'on m'a donné à mettre en œuvre. Le client a déjà implémenté une page avec un formulaire, plus l'applet FileCatalyst sous le formulaire. Ils souhaitent que le formulaire soit soumis lorsque les fichiers sont téléchargés correctement et ils souhaitent que la liste de fichiers soit envoyée avec le contenu du formulaire. Malheureusement, la méthode callurlaftertransfer n'inclut pas ces données. (voir le commentaire suivant ...) –
Il existe un autre paramètre FileCatalyst, "postURL" qui inclut la liste des fichiers téléchargés, mais qui nécessite un rechargement de la page et ignore la soumission du formulaire. J'espérais obtenir la liste des fichiers téléchargés avant le rechargement de la page, donc il pourrait être envoyé avec le formulaire. (Incorporer l'applet dans un iframe est une solution hackish que j'avais envisagée.) Finalement, j'ai convaincu le client de changer la spécification. À savoir, affichez l'applet en elle-même en tant qu'étape 1, capturez les fichiers téléchargés à partir de postURL, puis affichez le formulaire en tant qu'étape 2, qui affichera ensuite les informations postURL dans un champ masqué. –