JavaScript-Вызова Java
Директория $NSHOME\js\samples\bugbase содержит простое приложение, иллюстрирующее использование LiveConnect. В этом разделе описан код JavaScript этого приложения-образца. См. в разделе описание кода Java этого приложения.
Приложение bugbase представляет собой простую БД "жучков". Вы вводите bug, заполняя клиентскую форму номером жучка, приоритетом, продуктом, в котором он обнаружен, и кратким описанием. Другая форма позволяет просмотреть существующий bug.
Следующий JavaScript обрабатывает акцию входа:
// . проверить, что ID был введён.
if (request.bugId != "") {
// . Создаётся Bug-экземпляр и присваивается переменной.
var bug = new Packages.bugbase.Bug(parseInt(request.bugId),
request.bugPriority, request);
// . Получить доступ к массиву и сохранить экземпляр в нём.
project.bugsLock.lock();
project.bugs[parseInt(request.bugId)] = bug;
project.bugsLock.unlock();
// . Отобразить информацию.
write("<P><b><I>====>Committed bug: </I></b>");
write(bug, "<BR>");
}
// . Если ID не был введён, предупредить пользователя.
else {
write("<P><b><I>====>Couldn't commit bug: please complete
all fields.</I></b>");
}
Шаги в этом коде:
- Проверить, что пользователь ввёл ID для bug. Только в этом случае выполняется вход в bug.
-
Создать экземпляр Java-класса Bug и присвоить его переменной bug. Конструктор класса Bug принимает три параметра: два из них являются свойствами объекта request; третий это сам объект JavaScript request. Поскольку они являются элементами формы, эти свойства объекта request являются строками JavaScript. Код изменяет ID на целое число перед передачей его Java-конструктору. После передачи request -объекта Java-конструктору этот конструктор может затем вызывать его методы. Этот процесс обсуждается в разделе .
- Использовать project.bugsLock для получения исключительного доступа к массиву project.bugs и сохранить затем новый Bug -экземпляр в этом массиве, индексированным по номеру bug'а, специфицированному в форме. Заметьте, что этот код сохраняет ссылку на Java-объект как значение свойства JavaScript-объекта. О блокировке см. .
-
Отобразить клиенту информацию о bug'е, который Вы только что сохранили.
- Если bug ID не введён, вывести сообщение о том, что bug не может быть найден в БД.