2010-11-09 4 views
1

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

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

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

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

ответ

3

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

+0

Большое спасибо за усилия, которые вы поставили в своем примере. Конечно, JSNI - это способ, но библиотеке, которую мне нужно вызвать (WebGLU), есть множество методов, которые мне нужно будет связывать вручную. Я ищу какой-то инструмент, который мог бы автоматизировать этот процесс. –

+0

Возможно, было бы целесообразно обновить ваш вопрос. Существует ли глобальный объект WebGLU (например, '$' с JQuery)? В противном случае функции связаны с объектом 'window'? Чем более конкретным вы можете быть, тем лучше решение, которое может быть предоставлено. – Wesley

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