我正在構建一個集成了「FileCatalyst」Java FTP小程序和標準Drupal表單的Drupal模塊。我正在實現一個鉤子來在文件傳輸完成時提交表單。目前我正在用setTimeout()調用輪詢Applet,但如果它發生得太快,這種方法可能會錯過狀態的變化。如何使用Javascript中的java.util.Observable?
但是,FileCatalyst對象繼承自java.util.Observable - 因此顯然可以註冊applet的觀察者並獲取狀態更改的通知。我想知道如何實現這一點。
我可以使用Javascript中的document.FileCatalyst.addObserver(obj)函數來獲取發送到Javascript對象的這些狀態更改嗎?我傳遞給addObserver的是什麼?我如何構建觀察者?觀察員需要實施哪些方法才能接收狀態改變通知?
這是一個很好的答案,並且完美解決了輪詢問題。 (不知道爲什麼我不這樣做,首先!)我的問題的更大的要點與我已經實施的規範有關。 客戶端已經使用表單實現了一個頁面,並在窗體下面加上了FileCatalyst小程序。他們希望表單在文件成功上傳完成後提交,並且他們希望將文件列表與表單的內容一起發送。不幸的是,callurlaftertransfer方法不包含這些數據。 (請參閱下一條評論...) – 2010-01-12 17:09:57
還有另一種FileCatalyst設置,「postURL」,其中包含上傳文件的列表,但它需要重新加載頁面並且會跳過表單提交。我希望獲得在任何頁面重新加載之前上傳的文件列表,因此可以將它與表單一起發送。 (將applet嵌入到iframe中是我考慮過的一個駭客解決方案。) 最後,我說服客戶改變規範。也就是說,將applet本身顯示爲步驟1,從postURL捕獲上傳的文件,然後將該表單顯示爲步驟2,然後將該postURL信息放在隱藏字段中。 – 2010-01-12 17:11:09