我在spring-mvc应用程序中添加了一个applet作为jar。 applet用于在使用表单提交按钮提交文档之前对其进行数字签名。 我从我的JSP调用了applet代码:
<object
codebase="http://java.sun.com/update/1.5.0/jinstall-1_5-windows-i586.cab#Version=5,0,0,5"
width="130" height="25" name="SmartCardSignerApplet">
<param name="type" value="application/x-java-applet;version=1.5">
<param name="code" value="com.smartcard.encryption.SmartCardSignerApplet">
<param name="archive" value="SmartCardSignerApplet.jar">
<param name="codebase" value="/Application/applet">
<param name="mayscript" value="true">
<param name="scriptable" value="true">
<param name="fileNameField" value="hashCode">
<param name="formNameField" value="approvalForm">
<param name="certificationChainField" value="certChain">
<param name="signatureField" value="encryptedtext">
<param name="signButtonCaption" value="Encrypt Data">
<comment>
<embed
type="application/x-java-applet;version=1.5"
pluginspage="http://java.sun.com/products/plugin/index.html#download"
code="com.smartcard.encryption.SmartCardSignerApplet"
archive="/Application/applet/SmartCardSignerApplet.jar"
width="130"
height="25"
mayscript="true"
scriptable="true"
scriptable="true"
fileNameField="hashCode"
formNameField="approvalForm"
certificationChainField="certChain"
signatureField="encryptedtext"
signButtonCaption="Encrypt Data">
</embed>
<noembed>
Smart card signing applet can not be started because
Java Plugin 1.5 or newer is not installed.
</noembed>
</comment>
</object>
在JSP页面上嵌入一个“加密数据”按钮,单击此按钮可调用applet代码。 我的表格中还有一个提交按钮:
<form:form id = form>
........................
........................
<input type="submit" value="Approve" id="approveBttn" >
</form:form>
这两个按钮适用于特定用途。 我的要求是使用单个按钮进行applet调用和表单提交(在成功处理applet之后)。 我可以将applet调用添加到现有表单提交按钮。或者是否可以使用用于applet调用的嵌入式按钮提交我的表单。 我对applet比较新,所以如果我错过了添加任何细节,请告诉我。
答案 0 :(得分:0)
您可以使用主applet类中的javascript
对象通过applet java代码调用netscape.javascript.JSObject
函数。所以问题在于你可以创建一个javascript
函数,当applet完成其操作时它可以作为回调函数,在这个callback
函数中你可以执行你的提交操作来实现你的目标。
这可能是这样的:
在你的JS中:
// this callback function will be called from applet
function callbackFn(){
document.getElementById('yourFormId').submit();
}
在您的小程序中:
public class YourApplet extends JApplet {
...
public void yourMethod() {
// perform your operations
...
// when it's finished call javascript function
Object[] params = ...; // params are passed to javascript function, could be null
JSObject.getWindow(this).call("callbackFn", params);
}
}
因此,当用户点击applet按钮时,执行操作,然后applet调用提交表单的javascript回调函数。
注意:要在源代码中使用netscape.javascript.JSObject
,您必须在构建路径中添加JRE_HOME/lib/plugin.jar
。
希望这有帮助,