小编典典

Angular.js和Java Applet

angularjs

我正在尝试使用Angular.js通过applet调用Java函数,但没有成功。我什至没有加载Applet(加载应用程序时Java控制台未启动)。我使用下面的方法没有成功。有任何想法吗?

PS:它在Chrome中并启用了NPAPI。

PS2:我可以使用下面的代码通过Knockout获得它(我们正在迁移到Angular)

var res = document.getElementById("cdigApplet").signFile(file.id().toString(), "" , api.token);

signFile() 是Java Applet内部的一种方法。

HTML:

<applet id="cdigApplet" code="cdig.CDigApplet" archive="cdig-applet-1.0.jar, cdig-0.3.jar, json-20141113.jar" width="1" height="1" classloader_cache="false">
<param name="persistState" value="false" />
<param name="cache_option" value="no"/>

谢谢。


阅读 226

收藏
2020-07-04

共1个答案

小编典典

我们通过以下代码得到它:

index.html

<script>
    <!-- applet id can be used to get a reference to the applet object -->
    var attributes = { id:'cdigApplet', code:'cdig.CDigApplet', archive:'cdig-applet-1.0.jar, cdig-0.3.jar, json-20141113.jar', width:1, height:1, classloader_cache:'false'} ;
    var parameters = {persistState: false, cache_option:'no' } ;
    deployJava.runApplet(attributes, parameters, '1.8');
</script>

signController.js

(function() {
    'use strict';

    angular
        .module('app')
        .controller('signController', signController);

    signController.$inject = ['$rootScope', '$scope','listFactory', 'infoService'];

    /* @ngInject */
    function signController($rootScope, $scope, listFactory, infoService) {
        var vm = this;
        var token = $rootScope.token;
        $scope.name = infoService.getName;

        ////////////////

        $scope.signFile = function () {
            var fileId = infoService.getId();
            var Id = fileId.toString();
            var res = document.getElementById("cdigApplet").signFile(Id, '', token);

            var json = JSON.parse(res);
            if (json.success === true)
            {
                alert("Documento assinado com sucesso! Clique em 'Abrir' para ver a assinatura.");
                $('#sign').modal('hide');
            }
            else
            {
                alert("Documento não assinado!\n" + json.message);
                $('#sign').modal('hide');
            }
        };
    }
})();
2020-07-04