2010-01-10 13 views
1

Я создаю модуль Drupal, который объединяет апплет Java FTP FileCatalyst со стандартной формой Drupal. Я реализую привязку для отправки формы при завершении передачи файла. В настоящее время я обрабатываю апплет с помощью вызова setTimeout(), но этот метод может пропустить изменения состояния, если они происходят слишком быстро.Как использовать java.util.Observable из Javascript?

Однако объект FileCatalyst наследуется от java.util.Observable - так что, по-видимому, возможно зарегистрировать наблюдателя для апплета и получить уведомления об изменениях состояния. Я хотел бы знать, как это реализовать.

Могу ли я использовать функцию document.FileCatalyst.addObserver (obj) из Javascript для получения этих изменений состояния, отправленных на объект Javascript? Что я могу передать в addObserver? Как я могу построить наблюдателя? Какие методы должен выполнять наблюдатель для получения уведомлений об изменении состояния?

ответ

0

Я не могу полностью ответить на ваш вопрос, но я прочитал, что есть темная сторона для java.util.Observable (см. Главы First Design Patterns). А именно, Observable должен работать в иерархии классов. Будет ли PropertyListener в java.beans соответствовать вашему сценарию использования? Если это так, есть много примеров кода, который показывает, как настроить PropertyListeners для простого старого JavaBean.

0

Каждый апплет Java также является объектом Javascript, предлагающим те же методы, что и объект Java. Таким образом, вы можете вызывать addObserver() из Javascript. Объект, который вы передаете как параметр , должен быть объектом Javascript, предлагающим те же методы, что и те, которые заданы типом Observer (при условии, что addObserver() принимает один параметр типа Observer).

0

Необходимо использовать URL-адреса переадресации, указанные в файле fcupload.js. Например:

var callurlaftertransfer = "javascript: submitForm()";

Тогда у вас будет функция submitForm() сделать вызов типа document.myform.submit();

Надеюсь, что это поможет!

Chris

+0

Это хороший ответ и отлично подходит к вопросу опроса. (Не знаю, почему я так не делал этого в первую очередь!). Большой смысл моего вопроса связан со спецификацией, которую мне дали реализовать. Клиент уже реализовал страницу с формой, а также апплет FileCatalyst под формой. Они хотят, чтобы форма отправлялась, когда файлы успешно загружались, и они хотят, чтобы список файлов отправлялся вместе с содержимым формы. К сожалению, метод callurlaftertransfer не включает эти данные. (см. Следующий комментарий ...) –

+0

Существует еще одна настройка FileCatalyst, «postURL», которая включает в себя список загружаемых файлов, но для этого требуется перезагрузка страницы и пропустить отправку формы. Я надеялся получить список файлов, загруженных до перезагрузки любой страницы, поэтому его можно было отправить вместе с формой. (Вложение апплета в iframe - это одно хакерское решение, которое я рассмотрел.) В конце концов, я убедил клиента изменить спецификацию. А именно, покажите апплет сам по себе как шаг 1, захватите загруженные файлы из postURL, а затем покажите форму как шаг 2, которая затем будет содержать информацию postURL в скрытом поле. –

 Смежные вопросы

  • Нет связанных вопросов^_^