gpt4 book ai didi

java - GWT 从小程序调用 JS 方法

转载 作者:行者123 更新时间:2023-11-30 18:07:21 25 4
gpt4 key购买 nike

我试图从小程序调用 Javascript 方法,我阅读了一些示例,但没有任何效果。

小程序:

        JSObject window = JSObject.getWindow(this);
String[] args = new String[]{"some string"};
window.call("alert2 ", args);

GWT, View

    public static native void export() /*-{
$wnd.alert2 = function(result) {
@cl.covepa.client.main.shared.view.DlgVerificarHuellaView::alert2(Ljava/lang/String;)(result);
}
}-*/;

public static void alert2(String result) {
Dialogs.getInstance().alert("CONFIRMACION :" + result);
}

并且在构造函数调用时,我也在 onModuleLoad 中进行了测试。

export();

当小程序运行时,它说

No such method "alert2 " on JavaScript object

没关系,我知道代码被混淆了,但我想这是方法保留其名称的方式,但不起作用,我仍然在客户端看到这个

function dBb(){$wnd.alert2=function(a){T2c((!S2c&&(S2c=new X2c),S2c),'CONFIRMACION :'+a)}}

我想念什么?!,谢谢

更新:

HTMLPanel 包含一个带有此字符串的 HTML 对象,它添加在显示对话框中。

<div> 
<applet id="uploadApplet" code="app.VerifHuella.class"
archive="VerificarHuella.jar" width="322" height="465" MAYSCRIPT>
<param name="RUT" value="15645322"/>
</applet>
</div>

最佳答案

您的问题似乎是您调用该方法时该方法在窗口中不可用。这可能是因为三个原因:

  • 在 gwt 排列的异步加载发生之前,您的 appled 运行。
  • 您没有在 onModuleLoad() 中调用 export() 方法
  • 您的 alert2 方法不是静态的

无论如何,如果你想在不使用一行 jsni 的情况下导出类和方法,你可以尝试 gwtexporter ,在您的情况下,您的代码可能如下所示:

 class DlgVerificarHuellaView implements Exportable {
@Export($wnd.alert2)
public static void alert2(String msg) {
}
}

另一种无需编写 jsni 即可导出函数的好方法是使用 gwtquery :

import static com.google.gwt.query.client.GQuery.*

Properties wnd = window.cast();
wnd.setFunction("alert2", new Function() {
public void f() {
Properties arg = getDataProperties();
DlgVerificarHuellaView.alert2(arg.get(0));
}
});

关于java - GWT 从小程序调用 JS 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15505579/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com