私が正しく理解していれば、JavascriptからGWTメソッドを呼び出す必要があります。 JSNIを使用できます。 しかし、私はGWT側でgwt-exporterを試してみるべきだと思います。 Overview。 Tutorial。 GWTモジュール用のJS_APIを作成するための単純なGWTモジュールです。
ベストプラクティスではない、簡単な例です。
サーバー側には、すべてのページにダイアログボックスを含む既存のGWTモジュールが含まれています。 この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でこの
@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();
}
}
文字列値( "ショー")のように見える@ExportPackage( "PKG")などの注釈は注釈付きGWTのための私達のJS_API呼び出しで使用されますメソッド(フィールドもエクスポートできます)。 @Exportだけを使用できます(DialogBoxManagerの場合と同じです)。 GWTモジュールは、あなたのJSライブラリにロードされると
あなたはJS_APIメンバーの初期化を実現することができます。また、
var dbManager = null;
...
function loaded() {
dbManager = new pkg.DialogBoxManager();
}
が必要なものをしてからちょうどこの
function showDB() {
if (dbManager != null) {
dbManager.showDB();
}
}
おかげのようJS_APIを呼び出します。 http://code.google.com/webtoolkit/doc/latest/DevGuideCodingBasicsJSNI.html#callingしたがって、私はonModuleLoad()で書くことができます:$ wnd.computeLoanInterest = $ entry(@mypackage。MyUtilityClass :: computeLoanInterest(IFI)); –
新しいプロジェクトがすべてGWTで書かれている場合は、JSNIが選択されます。また、ホストページごとに他のモジュールを集約するのが好ましいモジュールです。しかし、あなたはもっと好きなだけ使うことができます。 – trupanka