【问题标题】:How to use java.util.Observable from Javascript?如何在 Javascript 中使用 java.util.Observable?
【发布时间】:2011-01-03 13:39:27
【问题描述】:

我正在构建一个 Drupal 模块,它将“FileCatalyst”Java FTP 小程序与标准 Drupal 表单集成在一起。我正在实现一个挂钩以在文件传输完成时提交表单。目前我正在使用 setTimeout() 调用轮询小程序,但如果状态更改发生得太快,此方法可能会错过。

但是,FileCatalyst 对象继承自 java.util.Observable——因此显然可以为 applet 注册一个观察者并获得状态变化的通知。我想知道如何实现。

我可以使用 Javascript 中的 document.FileCatalyst.addObserver(obj) 函数将这些状态更改发送到 Javascript 对象吗?我将什么传递给 addObserver?如何构建观察者?观察者需要实现哪些方法才能接收状态更改通知?

【问题讨论】:

    标签: java javascript forms drupal observers


    【解决方案1】:

    我无法完全回答您的问题,但我了解到 java.util.Observable 有一个阴暗面(请参阅 Head First Design Patterns)。也就是说,必须将 Observable 放入类层次结构中。 java.beans 中的 PropertyListener 是否适合您的使用场景?如果是这样,有很多示例代码展示了如何为普通的旧 JavaBean 设置 PropertyListeners。

    【讨论】:

      【解决方案2】:

      每个 Java 小程序也是一个 Javascript 对象,提供与 Java 对象相同的方法。因此,您可以从 Javascript 调用 addObserver()。作为参数传递的对象 应该是一个 Javascript 对象,提供与 Observer 类型指定的方法相同的方法(假设 addObserver() 采用 Observer 类型的单个参数)。

      【讨论】:

        【解决方案3】:

        您需要使用 fcupload.js 中提供的重定向 URL。例如:

        var callurlaftertransfer = "javascript:submitForm()";

        然后您将让 submitForm() 函数进行类似 document.myform.submit() 的调用;

        希望对您有所帮助!

        克里斯

        【讨论】:

        • 这是一个很好的答案,完美地解决了投票问题。 (不知道为什么我一开始不这样做!)我的问题的更大要点与我被赋予实施的规范有关。客户端已经实现了一个带有表单的页面,以及表单下方的 FileCatalyst 小程序。他们希望在文件成功上传完成后提交表单,并且他们希望将文件列表与表单的内容一起发送。不幸的是 callurlaftertransfer 方法不包括这些数据。 (见下一条评论...)
        • 还有另一个 FileCatalyst 设置,“postURL”,其中包括上传文件的列表,但它需要重新加载页面并且会跳过表单提交。我希望在重新加载任何页面之前获得上传的文件列表,以便可以与表单一起发送。 (在 iframe 中嵌入小程序是我考虑过的一种骇人听闻的解决方案。)最后,我说服了客户更改规范。即,将小程序本身显示为步骤 1,从 postURL 捕获上传的文件,然后将表单显示为步骤 2,然后将 postURL 信息放在隐藏字段中。
        猜你喜欢
        • 2011-01-23
        • 2014-02-25
        • 1970-01-01
        • 1970-01-01
        • 2019-08-15
        • 2016-12-26
        • 2012-09-21
        • 2021-05-12
        相关资源
        最近更新 更多