2017-03-27 1 views
0

nashorn 사용하여 자바에서 문자열 쿼리를 비교 :는이 코드를

내가 매개 변수로 문자열을 통과 할 수 있지 않다 때문에 그것은 나에게 오류를 제공
 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'는 아무 데나 묶여 있지 않습니다. 엄격한 버전의 자바 스크립트는 런타임 오류를 발생시킵니다. –

답변

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

중 하나를 사용 'yourString' 또는 \"yourString\" (자바에서 탈출을 필요로하는), 예를 들어,

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

다른 방법으로 : 의견에 제안 된대로 p에 대한 제본을 제공하십시오.

+0

아, 문제는'SimpleBindings'가 아니라'String query'와 관련이 있습니다. 감사! – AverageJoe9000