2

I'm trying to call a java function via applet using Angular.js with no success. I'm not even getting the Applet loaded (java console is not starting when I load the app). I've used the approaches below without success. Any ideas?

Binding applet parameters with angularJS

angularjs and closing tags

PS: it's in Chrome and with the NPAPI enabled.

PS2: I get it with Knockout with the code below (we are migrating to Angular)

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

signFile() is a method inside the 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"/>

Thanks.

8
  • Is it even possible to call a Java method in an Applet from JavaScript? Commented May 21, 2015 at 14:10
  • Yes, as I've said before, I can get with the code above using Knockout instead of Angular. Commented May 21, 2015 at 14:44
  • @user489041 Yep. It sure is, so long as the applet loads, the methods are public and the HTML declares the right attributes. Commented May 22, 2015 at 10:03
  • Show the entire HTML. Is the applet somewhere we can visit it? What is the URL? Commented May 22, 2015 at 10:04
  • @AndrewThompson I've updated the post with the HTML. Thanks. Commented May 22, 2015 at 12:14

1 Answer 1

2

We got it with the code below:

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');
            }
        };
    }
})();
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.