Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从JSP中的现有表单提交按钮调用小程序_Javascript_Jsp_Applet - Fatal编程技术网

Javascript 从JSP中的现有表单提交按钮调用小程序

Javascript 从JSP中的现有表单提交按钮调用小程序,javascript,jsp,applet,Javascript,Jsp,Applet,我在SpringMVC应用程序中添加了一个小程序作为jar。 小程序用于在使用表单提交按钮提交文档之前对文档进行数字签名。 我从JSP调用了小程序代码: <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"> <

我在SpringMVC应用程序中添加了一个小程序作为jar。 小程序用于在使用表单提交按钮提交文档之前对文档进行数字签名。 我从JSP调用了小程序代码:

<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页面上嵌入了一个“加密数据”按钮,点击该按钮调用小程序代码。 我的表单中还有一个提交按钮:

 <form:form id = form> 
   ........................
 ........................ 
 <input type="submit" value="Approve" id="approveBttn" >
 </form:form>
这两个按钮在特定用途下工作正常。 我的要求是在成功处理小程序后,使用单个按钮调用小程序并提交表单。 我可以将小程序调用添加到现有表单提交按钮中吗。或者可以使用用于小程序调用的嵌入式按钮提交我的表单。 我对小程序比较陌生,因此如果我没有添加任何详细信息,请告诉我。

您可以使用主小程序类中的netscape.javascript.JSObject对象,通过小程序java代码调用javascript函数。所以问题是,您可以创建一个javascript函数,当小程序完成其操作时作为回调函数使用,在这个回调函数中,您可以执行提交操作来实现您的目标

这可能类似于:

在您的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

希望这有帮助