Есть ли способ автоматически соединить библиотеку Javascript с GWT?

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

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

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

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

1 ответ

Это звучит как работа для 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.

Другие вопросы по тегам