Если я правильно понял, вам нужно вызывать методы GWT из Javascript.Вы можете использовать JSNI.Но я думаю, что вы должны попробовать gwt-exporter на стороне GWT. Обзор . Учебник .Это простой модуль GWT для создания JS_API для ваших модулей GWT.
Не выдавая себя за лучшие практики, просто быстрый пример.
На стороне сервера вы добавляете существующий модуль GWT с DialogBoxes на каждой странице.Вам нужно изменить этот модуль GWT или создать новый.
public class GwtModule implements EntryPoint {
@Override
public void onModuleLoad() {
// exportable class
DialogBoxManager dbm = new DialogBoxManager();
// export all Exportable classes of module
ExporterUtil.exportAll();
// needed cause JS_API will be available only after the GWT is loaded
onLoad();
}
// call when GWT module loaded
private native void onLoad() /*-{
$wnd.loaded();
}-*/;
DialogBoxManager выглядит следующим образом
@Export
@ExportPackage("pkg")
public class DialogBoxManager implements ClickHandler, Exportable {
private DialogBox db;
public DialogBoxManager() {
this.db = new DialogBox();
}
@Export("showDB")
public void showDialog() {
db.setVisible(true);
db.center();
db.show();
}
@Override
public void onClick(ClickEvent event) {
showDialog();
}
}
Строковые значения в @Export ("show"), @ExportPackage ("pkg ") и т. д. аннотации будут использоваться в наших вызовах JS_API для аннотированных методов GWT (вы также можете экспортировать поля).Вы можете использовать только @Export (как я сделал для DialogBoxManager).
Когда модуль GWT загружен в вашу библиотеку JS, вы можете реализовать инициализацию члена JS_API или что вам нужно
var dbManager = null;
...
function loaded() {
dbManager = new pkg.DialogBoxManager();
}
, а затем просто вызвать JS_API следующим образом:
function showDB() {
if (dbManager != null) {
dbManager.showDB();
}
}