logo

サイト内検索
ココログ最強検索 by 暴想

最近のトラックバック

無料ブログはココログ

« Gwt Ext 特定のHTMLエレメントの属性を調整する | トップページ | GwtExt JSONPでサーバーからデータ入手 »

HTML上のJavaScriptからGWTのJavaコードの呼び出し

  • ソースを表示して文中のリンクをクリックすると該当行が選択されます。

GWTにはJSNIという機能があってJavascript-Java間を入ったり来たりできるわけです。しかし、GWTのソース上に書いたJavaScriptのnativeコードとJavaコードのやり取りではなく、HTMLソース上に書いたJavaScriptからGWTのJavaコードを呼び出す方法に関してはあまり資料が無いようなのここに記述します。

上記ソースはこのソースコードを表示する機能自体のソース(ややこしい)ですが、ブログ文書のリンクから特定の行をフォーカスする機能を持っています。例えばここをクリックすると10行目をフォーカスします。この場合のHTMLのソースは、

    <a href="#" onclick="selLine('10');return false;">ここ</a>

というselLine()というJavaScript関数を呼び出すアンカータグになっています。ちなみにアンカータグなのでhrefのurlにこのままだと飛んでいこうとしますので、falseをreturnしてそれを抑止しています。

このselLine関数が実はGWTのJavaコードにつながるわけですが、そこ仕込んでいるのは、以下の部分です。

	private native static void setup() /*-{
	 $wnd.selLine = function(lines) { @jp.co.kpscorp.gwt.client.SourceButton::sel(Ljava/lang/String;)(lines);}
	 }-*/;

$wndはGWTのnativeコード内で使用できるWindowオブジェクトの参照なので
$wnd.selLine = function(lines) { ・・・・・}
とやるとこのWindowにsetLineというfunctionを定義したことになります。中身はGWTのJavaコードSourceButtonクラスのstaticメソッドselを呼び出す事を意味しています。(JSNIのお約束:詳しくはココを参照)。上記setupメソッドをあらかじめ呼んでおくことで、selLineという関数が有効になり、HTML側から呼ぶことが出来るようになります。

SourceButtonクラスのstaticメソッドselはJavaで書かれたコードで該当の行を選択します。その件はココに書いたとおり。

« Gwt Ext 特定のHTMLエレメントの属性を調整する | トップページ | GwtExt JSONPでサーバーからデータ入手 »

GoogoleWebToolKit」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1482716/39211830

この記事へのトラックバック一覧です: HTML上のJavaScriptからGWTのJavaコードの呼び出し:

« Gwt Ext 特定のHTMLエレメントの属性を調整する | トップページ | GwtExt JSONPでサーバーからデータ入手 »