2016-09-13 8 views
-1

JavaコードからJavaScript関数を呼び出そうとしています。次のように私のコードは次のとおりです。Javaコードスロー例外のJavaScript

11:53:50,847 ERROR [Login] javax.script.ScriptException: sun.org.mozilla.javascript.internal.EcmaError: ReferenceError: "jQuery" is not defined. (#1) in at line number 1 11:53:50,847 ERROR [Login] Throwing error in the catch part 11:53:50,848 INFO [Login] invoking function 11:53:50,848 ERROR [STDERR] java.lang.NoSuchMethodException: no such method: displayDataCapturePopUp(301,1373864,0);

が、私は多くのことを試みたが、まだこれを取り除くことはできません。私はこのコードを実行すると

ScriptEngineManager manager = new ScriptEngineManager(); 
       ScriptEngine engine = manager.getEngineByName("JavaScript"); 

       String script = baseUrl + "UIConfigurator/includes/js/DataCaptureFramework.js";     

        try { 
        LOGGER.info("evaluating engine"); 
        LOGGER.info(script); 
        URL url1 = new URL(script); 
        LOGGER.info("url1 "+url1.getPath()+url1); 

        BufferedReader in = new BufferedReader(
        new InputStreamReader(url1.openStream())); 
        String inputLine = null; 
        StringBuffer buffer = new StringBuffer(); 
        while ((inputLine = in.readLine()) != null) 
         buffer.append(inputLine);     
        LOGGER.info(buffer.toString()); 
        engine.eval(buffer.toString());      


       } catch (Exception e) { 
        // TODO Auto-generated catch block 
        LOGGER.error(e.toString()); 
        LOGGER.error("Throwing error in the catch part"); 
       } 
       Invocable inv = (Invocable) engine; 
       try { 
        LOGGER.info("invoking function"); 
        inv.invokeFunction("displayDataCapturePopUp("+user.getOrgId()+","+user.getId()+","+session.getLoginType()+");"); 
       } catch (NoSuchMethodException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } catch (ScriptException e) { 
        // TODO Auto-generated catch block 
        LOGGER.error("throwing error in catch block of invoking engine and function"); 
       } 

それは私に、次のエラーが発生します。私が間違っていることを教えてください。 JavaScriptから以下の関数を呼び出そうとしています。

function displayDataCapturePopUp(orgId,userId,loginTypeId){ jQuery("    <link/>", {rel: "stylesheet",type: "text/css",href: 
"/UIConfigurator/includes/css/librarycss/jquery-ui.min.css"}).appendTo("head"); jQuery("<link/>", {rel: "stylesheet",type: "text/css",href: 
"/UIConfigurator/includes/css/DataCaptureFramework.css"}).appendTo("head"); jQuery("<link/>", {rel: "stylesheet",type: "text/css",href: 
"/UIConfigurator/includes/css/librarycss/tooltipster.css"}).appendTo("head"); jQuery("<link/>", {rel: "stylesheet",type: "text/css",href: 
"/UIConfigurator/includes/css/librarycss/jquery.alerts.css"}).appendTo("head"); 
jQuery.getScript('/UIConfigurator/includes/js/UiAjaxInteraction.js',function() {  
jQuery.getScript('/iONjsLib/js/jquery-ui-1.10.4.min.js',function()  {   
jQuery.getScript('/iONjsLib/js/jquery.tooltipster.min.js',function()   {    
jQuery.getScript('/UIConfigurator/includes/js/libraryjs/jquery.alerts.js',function()    {     
jQuery.getScript('/iONjsLib/js/jquery.blockUI.js',function()     {      
getDataCapturePopUpDetails(orgId,userId,loginTypeId);       } 
       );    
                       } 
       );   
                       } 
       );  
                     } 
       ); 
                       } 
       ); 
                 } 
+0

助けを求めるときは、コードを読みやすくしてください。 –

+0

あなたが呼び出しようとしているJavaScript関数はJQueryに依存しており、JQueryを利用できるようにしていないので失敗します。 – yole

+0

「jQuery」は利用できません。あなたは 'jQuery'は標準のJavascriptの一部ではないことを知っていますか?あなたはその定義をスクリプトに含めましたか? – RealSkeptic

答えて

0

ScriptEngineブラウザへのアクセスなしで、完全に独立した環境でJavaScriptを実行します。ブラウザで何らかのポップアップを表示しようとしているようです。これは動作しません。ブラウザをリモートで制御する必要がある場合は、ScriptEngineではなく、別のAPIを使用する必要があります。