我的场景就像是从javascript调用applet API,其返回语句是boolean,但我无法从该方法获得布尔响应。
让我告诉那个方法里面发生了什么
将进入applet方法abc()
在abc()方法中我正在调用servlet,它在服务器端执行某些进程并返回我遇到的任何问题的响应。
在此之后我正在做一些常规的java东西并尝试返回true或false
我没有在javascript中收到此回复
注意:这些要点可能有助于找出问题
1.我的applet实现了runnable接口,用于显示确认对话框,使用swing组件开发,这段代码在某些情况下不会触发。
我使用返回json响应的servlet 如果您需要任何细节,请告诉我
我在foreach中使用以下功能
function abc()
{
var status = printerApplet.startBulkPersoProcessing(a, b, c);
alert("Is it coming here:::");
alert(status);
}
此状态不会打印出来。
答案 0 :(得分:1)
首先,您应确保将applet声明如下:
<APPLET code="MyApplet.class" height="0" id="myApplet" name="myApplet"
archive="/path/to/MyApplet.jar"></APPLET>
之后从JS调用MyApplet,如下所示:
function callMyAppletFromJS() {
alert("callMyAppletFromJS");
document.getElementById('myApplet').jsAppletCall();
}
在您的applet中调用JS,如下所示:
public void jsAppletCall() {
// do you java stuff here
// then
// call the javascript from the applet using the JSOBject
JSObject win = JSObject.getWindow(this);
win.eval("callJSFromMyAppletMessage();");
}
以及从applet调用的JS函数,如下所示:
function callJSFromMyAppletMessage() {
alert("callJSFromMyAppletMessage");
}
所以从applet调用JS的方法是使用 JSObject ,请查看文档here以获取JSObject,因为它描述了此类的用法。
同样@Hemant提到,请查看有关此主题的oracle教程here。
注意: 但请注意,如果您从JS调用您的applet,即使其已签名的applet,它也将被视为未签名的applet,请查看oracle docs here。
希望有助于。
答案 1 :(得分:0)
您可以使用Java的JSObject来回调HTML视图中定义的JS函数。
这是处理异步函数调用的便捷方法之一。
有关JSObject实现的更多信息......
http://docs.oracle.com/javase/tutorial/deployment/applet/invokingJavaScriptFromApplet.html
希望它有所帮助!