我正在构建一个Drupal模块,它将“FileCatalyst”Java FTP applet与标准的Drupal表单集成在一起。我正在实现一个钩子来在文件传输完成时提交表单。目前我正在使用setTimeout()调用轮询applet,但是如果它们发生得太快,这个方法可能会错过状态更改。
但是,FileCatalyst对象继承自java.util.Observable - 因此显然可以为applet注册观察者并获取状态更改的通知。我想知道如何实现这一点。
我可以使用Javascript中的document.FileCatalyst.addObserver(obj)函数将这些状态更改发送到Javascript对象吗?我将什么传递给addObserver?我如何构建观察者?观察者需要采用哪些方法来接收状态变化通知?
答案 0 :(得分:0)
我无法完全回答你的问题,但我读过java.util.Observable有一个黑暗的一面(参见Head First Design Patterns)。也就是说,Observable必须在类层次结构中工作。 java.beans中的PropertyListener是否适合您的使用场景?如果是这样,有很多示例代码显示如何为普通的旧JavaBean设置PropertyListeners。
答案 1 :(得分:0)
每个Java applet也是一个Javascript对象,提供与Java对象相同的方法。因此,您可以从Javascript调用addObserver()。作为参数传递的对象 应该是一个Javascript对象,提供与Observer类型指定的方法相同的方法(假设addObserver()采用Observer类型的单个参数)。
答案 2 :(得分:0)
您需要使用fcupload.js中提供的重定向网址。例如:
var callurlaftertransfer =“javascript:submitForm()”;
然后你会让submitForm()函数调用document.myform.submit();
希望有所帮助!
克里斯