[英]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.