Есть ли способ автоматически соединить библиотеку Javascript с GWT? - PullRequest
1 голос
/ 10 ноября 2010

Мне нужно соединить довольно процедурную библиотеку Javascript, состоящую из некоторых файлов .js, содержащих функции для вызова из GWT.

Уже есть хорошая утилита под названием GWT-Exporter, которая работает с точностью до наоборот (http://code.google.com/p/gwt-exporter/), Мне нужен своего рода GWT-Importer, который автоматически генерирует оболочки .java функций javascript.

Я знаю, что тип - это проблема, но я был бы доволен, если бы все возвращаемые типы стали JavaScriptObject или примитивами.

JSNI, кажется, подходит, но я бы хотел что-то, что создавало классы автоматически вместо того, чтобы вручную связывать через JSNI все методы.

1 Ответ

3 голосов
/ 10 ноября 2010

Это звучит как работа для JSNI.

http://code.google.com/webtoolkit/doc/latest/DevGuideCodingBasicsJSNI.html

Если вы знаете, какие функции вы хотели бы вызвать, довольно легко настроить один служебный класс, содержащий статическиеметоды, представляющие рассматриваемые функции.


Предположим, у вас есть библиотека JavaScript, в которой вы хотите, чтобы функции foo() и bar(number) были доступны для вашего приложения GWT.Вы захотите сделать следующее.

  1. Поместите библиотеку JavaScript в вашу директорию war.(Не требуется, если внешнее размещение.)
  2. Включите скрипт, добавив тег <script> на свою страницу хоста
  3. Создайте служебный класс

public final class LibraryName {

    public static native int foo() /*-{
        $wnd.foo(); // Use $wnd instead of window in JSNI methods
    }-*/;

    public static native void bar(double number) /*-{
       $wnd.bar(number)
    }-*/;

}

Для более подробной статьи о JSNI, посмотрите http://googlewebtoolkit.blogspot.com/2008/07/getting-to-really-know-gwt-part-1-jsni.html.

...