Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.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
使用Rhino在Java和javaScript之间传递字符串_Javascript_Java_Switch Statement_Rhino - Fatal编程技术网

使用Rhino在Java和javaScript之间传递字符串

使用Rhino在Java和javaScript之间传递字符串,javascript,java,switch-statement,rhino,Javascript,Java,Switch Statement,Rhino,我试图使用Rhino将Java字符串传递给JavaScript,并将其识别为“本机”JavaScript字符串 例如: Java对象: public class MyTestObject { public Object returnStringValue() { return "Hello"; } } 犀牛设置 import java.io.FileNotFoundException; import javax.script.*; public class T

我试图使用Rhino将Java字符串传递给JavaScript,并将其识别为“本机”JavaScript字符串

例如:

Java对象:

public class MyTestObject {
    public Object returnStringValue() {
        return "Hello";
    }
}
犀牛设置

import java.io.FileNotFoundException;
import javax.script.*;

public class TestRhino{

    public static void main(String[] args) throws FileNotFoundException, ScriptException, NoSuchMethodException {
        // Create my Java Object
        MyTestObject testObject = new MyTestObject();

        // Initiate the JavaScript engine
        ScriptEngine engine = new ScriptEngineManager().getEngineByName("javascript");
        Compilable compEngine = (Compilable)engine;

        // evaluate my JavaScript file; add my Java object to it
        engine.eval(new java.io.FileReader("MyJavaScriptFile.js"));
        engine.put("testObject", testObject); // this adds my Java Object to Rhino

        // Invoke my javaScript function
        Invocable inv = (Invocable) engine;
        Object returnVal = inv.invokeFunction("testFunction");

        // print out the result
        System.out.println(returnVal);
    }
}
JavaScript函数(无法修改此函数)

电流输出:“不正常”

我认为这是因为Rhino应用了严格的开关比较,因为下面返回的
开关比较是严格的。

function testFunction() {
    switch(1) {
        case '1':
            return 'Switch comparison is NOT strict.';
        case 1:
            return 'Switch comparison is strict.';
    }
}
还要注意,以下函数返回
true

function testFunction() {
    let myString = testObject.returnStringValue();
    return myString == "Hello";
}
但是下面的函数返回
false

function testFunction() {
    let myString = testObject.returnStringValue();
    return myString === "Hello";
}
我不能修改JavaScript代码,只能修改Java代码,因此我正在寻找一种解决方案,通过只修改Java代码使switch语句工作

值得注意的是,这在Nashorn(从Java1.8开始实现的默认JavaScript引擎)上运行良好,但是我必须使用Rhino

function testFunction() {
    let myString = testObject.returnStringValue();
    return myString === "Hello";
}