[英]Call a java applet method via javascript
当Java Applet中发生特定事件时,如何调用函数?
在我的Javascript中,我有以下代码,该代码始终返回空值。
$(function () {
alert(document.applets[0].returnClientId());
});
我需要在执行特定方法时调用此警报。 更具体地说,存在于我的Java Applet中的称为identify的方法。
标识方法存在于我的Util.class中,它不是从JApplet扩展的。 我的FormMain.class从JApplet扩展而来,我从该Util.class调用了一些方法(包括identify方法)。
更新 :我的Java代码
public String getClientid() {
return clientid;
}
public void setClientid(String clientid) {
this.clientid = clientid;
}
public String returnClientId() {
return getClientid();
}
public void identify() {
try {
fingerprintSDK.prepareForIdentification(this.template);
ResultSet rs = identifyStmt.executeQuery();
while (rs.next()) {
byte[] templateBuffer = rs.getBytes("template");
Template referenceTemplate = new Template(templateBuffer);
boolean matched = fingerprintSDK.identify(referenceTemplate);
if (matched) {
// ui is my FormMain instance
ui.showImage(GrFingerJava.getBiometricImage(template,
fingerprint, fingerprintSDK));
ui.writeLog("Found. Client = "
+ rs.getString("Name"));
ui.setClienteid(rs.getString("Cliente_Id"));
ui.disableTemplate();
return;
}
}
ui.writeLog("Not Found.");
ui.enableTemplate();
} catch (SQLException e) {
ui.writeLog(e.getMessage());
} catch (GrFingerJavaException e) {
ui.writeLog(e.getMessage());
}
}
当我的用户将手指放在生物识别设备上时,将执行Identify方法。
有人有主意吗?
假设您具有以下JS函数
function foo(client) {
alert(client);
}
您将按如下所示修改Utils.java
public void identify() {
// the rest of your code
String id = rs.getString("Cliente_Id");
ui.setClienteid(id);
// call the Javascript function
JSObject.getWindow(ui).eval(String.format("foo(%s)", id));
}
要使用netscape.javascript.*
包编译代码,您需要$JAVA_HOME/jre/lib/plugin.jar
。 看这里
为了调用JavaScript,Java代码使用netscape.javascript.JSObject和netscape.javascript.JSException类。 从Java 2 Standard Edition版本1.4发布以来,这些类在Java开发工具包或Java运行时环境的jar文件jre / lib / plugin.jar中提供。 如果引用这些JavaScript类,则需要将plugin.jar添加到编译类路径中。 这可以通过Java IDE(如果使用的话)来完成,也可以通过将-classpath命令行参数传递给Java编译器javac来完成。
在运行时,Java插件自动使这些类可用于applet,因此不需要更改applet或设置它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.