从JSP中的现有表单提交按钮调用applet

时间:2014-12-11 05:31:32

标签: javascript jsp applet

我在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比较新,所以如果我错过了添加任何细节,请告诉我。

1 个答案:

答案 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

希望这有帮助,