-1

Javaコードでjavascriptメソッドを呼び出そうとしていますが、多くのエラーが発生するため、メソッドをメインに置いてチェックし、コンソールでこれを取得します「sun.org.mozilla.javascript.internal.InterpretedFunction」それを呼び出す方法がわかりません。ありがとう

public static void main(String[] argv) throws Exception
  {
    ScriptEngineManager manager = new ScriptEngineManager();

    ScriptEngine engine = manager.getEngineByName("js");
    String myJSCode = "function calcul()"
            + "{"
            + "alert('Veuillez verifier le nom et le prenom saisis ');"
            + "}";
    System.out.println(engine.eval(myJSCode));

  }
4

4 に答える 4

1

私はこれを試してみましたが、うまくいきました:

public static void main(String[] args) throws Exception {  
        ScriptEngineManager manager = new ScriptEngineManager();  
        ScriptEngine engine = manager.getEngineByName("JavaScript");  


        // JavaScript code in a String  
        String script = "function Msg() {print('Veuillez verifier le nom et le prenom saisis !!! '); }";  
        // evaluate script  
        engine.eval(script);  

        // javax.script.Invocable is an optional interface.  
        // Check whether your script engine implements or not!  
        // Note that the JavaScript engine implements Invocable interface.  
        Invocable inv = (Invocable) engine;  

        // invoke the global function named "hello"  
        inv.invokeFunction("Msg" );  


    } `

今、私はいくつかの変更を行いたい:

1)印刷物をメッセージ ボックスに変更する

2)コード全体をメソッドに入れ、それがhtmlコードで呼び出されるようにします。このように、メッセージボックスが画面でユーザーに表示されます

どうもありがとうございました。

于 2013-05-07T19:44:23.900 に答える
1

このalert()メソッドは、コア Javascript 言語の一部ではありません。スクリプトが Web ブラウザで実行されている場合にのみ表示されます。そのため、JavascriptScriptEngineインスタンスでは使用できません。(いいえ、ScriptEngineJava アプレットでの使用はカウントされません。これは非常に混乱を招くだけであり、まったくお勧めしません。)

何かをコンソールに表示することをテストしたい場合は、print()代わりに呼び出してみてください。この関数は Rhino ランタイムの一部だと思います。

于 2013-05-06T23:23:44.553 に答える