2013-06-19 23 views
0

我在Gxt組件的ListView中使用了以下代碼塊,並且onRender中的以下模板將設置爲默認值。我可以使用image +模型值渲染組件。我想爲渲染圖像編寫onClick事件。如何從javascript代碼調用GWT方法

這裏我設置模板ListView的地方。

rightListView.setTemplate(getTemplate(moduleBaseURL)); 

模板設置:

private native String getTemplate(String base) /*-{ 
return ['<tpl for=".">', 
'<div class="thumb"><img src="'+base+'images/default/tabs/tab-close.gif" width="15" height="15" style="CURSOR:pointer"/>{bookCode}</div>', 
'</div>', 
'</tpl>', 
''].join(""); 

} - * /;

屏幕截圖

enter image description here

在近距離圖像的點擊,我必須執行一些GWT代碼,有沒有辦法做到這一點。

回答

2

是的..你可以在你的gwt代碼中寫入原生javascript。

public static native void exportMyFunction() /*-{ 
    $wnd.myFunction = 
     $entry(@com.myCompany.myProject.client.myClass::onCloseGwtFunction()); 
}-*/; 
public static void onCloseGwtFunction() 
{ 
    // your gwt code tobe executed 
} 

當您的應用程序初始化時,您必須從gwt類調用exportMyFunction()。無法讀取人類 - 你可以從你的親密形象

+0

感謝您的快速響應。現在我可以爲img onClick事件編寫監聽器了。 – Jagadeesh

1

在生產中的Java將被翻譯成JavaScript代碼,這將是obfuscated

<img onClick='window.myFunction()' src="'+base+'images/default/tabs/tab-close.gif" width="15" height="15" style="CURSOR:pointer" /> 
在你的onclick

。因此,您不能編譯您的應用程序,然後調用您的項目中的某個類,因爲它將在編譯期間重命名。

您可以做的是導出其中一種方法,因此它將在全球範圍內提供。然後,您將能夠從JavaScript調用導出的Java方法。 GWT文檔中

Java的> JS和JS-> Java之間的通信是使用JSNI [JavaScript的本機接口]進行說明此鏈接下:

Calling a Java Method from Handwritten JavaScript