如何从javascript代码调用GWT方法

时间:2013-06-19 17:19:30

标签: gwt gxt

我在Gxt组件的ListView中使用以下代码块,而onRender将以下模板设置为默认值。我能够使用图像+模型值渲染组件。我想为渲染图像编写onClick事件。

这里我将模板设置为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 个答案:

答案 0 :(得分: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()。你可以给出

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

来自你的近景图片

答案 1 :(得分:1)

在生产中,Java将被翻译成JavaScript代码,即obfuscated - 人类无法读取。因此,您不能只编译应用程序,然后调用项目中的某个类,因为它将在编译期间重命名。

您可以做的是导出其中一种方法,以便全局可用。然后,您将能够从JavaScript调用该导出的Java方法。

Java-&gt; JS和JS-&gt; Java之间的通信使用JSTI [JavaScript Native Interface]在GWT文档中解释此链接:

  
    

Calling a Java Method from Handwritten JavaScript