2017-03-27 5 views
0

を使用してJavaで文字列クエリの比較私はこのコードを持っている:が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)); 

Iがパラメータとして文字列を渡すことが許可されていないよので、それは私にエラーを与えます。

文字列オブジェクトを.eval()とどのように比較できますか?

+2

'p'がアンバインドされているため、これはエラーではないでしょうか? –

+0

バインドされていませんか?私は束縛されていないものは何も知らない。それを修正するには? – AverageJoe9000

+2

あなたは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'ではなく' String query'にありました。ありがとう! – AverageJoe9000

関連する問題