2017-03-27 25 views
0

比较查询字符串在Java中我有这样的代码:使用犀牛

 String query = "a == someRandomWord && b != 2"; 

     ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn"); 

     SimpleBindings variables = new SimpleBindings(); 
     variables.put("a", "someRandomWord"); 
     variables.put("b", 1); 
     System.out.println(engine.eval(query, variables)); 

,因为我不能传递字符串作为参数它给了我一个错误。

如何比较字符串对象与.eval()函数?

+2

这不是一个错误,因为'p'没有绑定? –

+0

没有约束力?我不知道什么是无约束的。如何解决这个问题? – AverageJoe9000

+2

你有两个变量:比较中有'a'和'p' - 但是你在简单的绑定中声明了变量'a'和'b'。变量'p'没有被绑定到任何地方,如果你这样做的话,javascript的严格版本会产生一个运行时错误。 –

回答

2
String query = "a == p && a != 2"; 
        ^^^ 
        this is not a string but a variable 

要么使用'yourString'\"yourString\"(因为你需要逃避它在Java中),例如

String query = "a == 'someRandomWord' && b != 2"; 

或者,按照注释中的建议提供p的绑定。

+0

哦,问题是与“字符串查询”,而不是'SimpleBindings'。谢谢! – AverageJoe9000