Есть ли способ автоматически соединить библиотеку 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. Вы хотите сделать следующее.
- Поместите библиотеку JavaScript в свой
war
каталог. (Не требуется, если внешнее размещение.) - Включить скрипт, добавив
<script>
тег на вашей странице хоста - Создать служебный класс
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.