Dim*_*ims 9 javascript java gwt jsni
是否可以从Javascript调用Java(GWT)方法?从文档中还不清楚.此处的所有示例http://code.google.com/intl/ru/webtoolkit/doc/latest/DevGuideCodingBasicsJSNI.html演示了如何从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() {
Window.alert("Callee");
}
}
Run Code Online (Sandbox Code Playgroud)
这是html中的调用者按钮示例:
<input type='button' value='Call' onclick='Test02()'>
Run Code Online (Sandbox Code Playgroud)
这里有一些我尝试过但没有用过的功能:
<script type="text/javascript">
function Test01() {
@com.inthemoon.tests.client.Test_GoogleWeb_JSNI_02::Callee()();
}
function Test02() {
com.inthemoon.tests.client.Test_GoogleWeb_JSNI_02::Callee()();
}
</script>
Run Code Online (Sandbox Code Playgroud)
更新2
以下工作.
Java准备:
public void onModuleLoad() {
Prepare();
}
public static native void Prepare() /*-{
$doc.calleeRunner = @com.inthemoon.tests.client.Test_GoogleWeb_JSNI_02::Callee();
}-*/;
public static void Callee() {
Window.alert("Callee");
}
Run Code Online (Sandbox Code Playgroud)
呼叫者:
function Test03() {
document.calleeRunner();
}
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?
jus*_*sio 12
你的例子不会起作用,因为你试图在一些外部脚本中使用JSNI.如果你想从外部 JS 调用一些东西,你需要使用这个问题中描述的方法或使用GWT导出器
更新:
公开GWT的最安全的方法是将调用包装在其他一些函数中.例如:
public native void expose()/*-{
$wnd.exposedMethod = function(param){
@com.my.MyClass::myFunction(*)(param);
}
}-*/;
Run Code Online (Sandbox Code Playgroud)
否则你可能会在生产模式中遇到一些奇怪的错误=)
| 归档时间: |
|
| 查看次数: |
9563 次 |
| 最近记录: |