如何从Javascript调用GWT java函数?
可以从Javascript调用Java(GWT)方法吗?文件中也不清楚。这里的所有示例都演示了如何从JSNI(而不是JS)函数调用java函数 更新1 下面是一个Java代码:如何从Javascript调用GWT java函数?,java,javascript,gwt,jsni,Java,Javascript,Gwt,Jsni,可以从Javascript调用Java(GWT)方法吗?文件中也不清楚。这里的所有示例都演示了如何从JSNI(而不是JS)函数调用java函数 更新1 下面是一个Java代码: public class Test_GoogleWeb_JSNI_02 implements EntryPoint { /** * This is the entry point method. */ public void onModuleLoad() { } public static void Callee(
public class Test_GoogleWeb_JSNI_02 implements EntryPoint {
/**
* This is the entry point method.
*/
public void onModuleLoad() {
}
public static void Callee() {
Window.alert("Callee");
}
}
以下是html中的调用方按钮示例:
<input type='button' value='Call' onclick='Test02()'>
来电者:
function Test03() {
document.calleeRunner();
}
有更好的方法吗?您的示例不起作用,因为您试图在一些外部脚本中使用JSNI。如果您想从外部JS调用某个东西,您需要使用本文中描述的方法或使用 更新: 公开GWT内容最安全的方法是将调用包装到其他函数中。例如:
public native void expose()/*-{
$wnd.exposedMethod = function(param){
@com.my.MyClass::myFunction(*)(param);
}
}-*/;
否则,您可能会在生产模式中遇到一些奇怪的错误=)谢谢!你在更新我的更新吗?我的意思是,您是否建议不要编写
$wnd.exposedMethod=@com.my.MyClass::myFunction(*)(param)
?为什么?这可能会阻止GWT进行一些基本的优化。性能影响很可能不会很大,但您应该记住这一点。另外,您的方法只适用于静态方法的公开,如果您尝试调用某个实例方法,很可能会中断。您能调用返回对象的javascrypt方法吗?并使用该对象?公开的函数应该用$entry(…)
函数包装,请参见:`$wnd.exposedMethod=$entry(函数(参数){…});可以这样调用非静态方法吗?可以调用返回对象的javascrypt方法吗?使用那个物体?
function Test03() {
document.calleeRunner();
}
public native void expose()/*-{
$wnd.exposedMethod = function(param){
@com.my.MyClass::myFunction(*)(param);
}
}-*/;