4

実行されたJavaScriptコードの結果をgroovyから取得するにはどうすればよいですか? 次のことを試しましたが、常に「world」という文字列が返されます。オブジェクトまたはマップを期待していたでしょう。

import javax.script.ScriptEngineManager
import javax.script.SimpleBindings

def manager = new ScriptEngineManager()
manager.getEngineByName("JavaScript").eval("""
    {hello: name}
""", [name:'world'] as SimpleBindings)
4

2 に答える 2

4

簡単!

オブジェクトを変数にマップして、それを返すことができます...

import javax.script.*

def bindings = [name:'world']

def response = new ScriptEngineManager()
    .getEngineByName('javascript')
    .eval("var r = {hello:name}; r;", bindings as SimpleBindings)

println response.hello // -> world

responseまたは、 Map オブジェクトを追跡して更新することもできます...

import javax.script.*

def bindings = [name:'world',response:[:]]

new ScriptEngineManager()
    .getEngineByName('javascript')
    .eval("var r = {hello:name}; response.data = r;", bindings as SimpleBindings)

println bindings.response.data.hello // -> world

グルーヴィーなバージョン: 2.4.5

Java のバージョン: 1.8.0_60

于 2016-12-13T03:37:28.297 に答える