技术开发 频道

关于JavaScripting API您不知道的5件事

  4. 将 Java 对象绑定到脚本空间

  仅仅调用一个脚本还不够:脚本通常会与 Java 环境中创建的对象进行交互。这时,Java 主机环境必须创建一些对象并将它们绑定,这样脚本就可以很容易找到和使用这些对象。这个过程是 ScriptContext 对象的任务,如清单 6 所示:

  清单 6. 为脚本绑定对象

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

public class App
{
    
public static void main(String[] args)
    {
        try
        {
            
ScriptEngine engine =
                
new ScriptEngineManager().getEngineByName("javascript");
                
            
for (String arg : args)
            {
                Bindings bindings
= new SimpleBindings();
                bindings.put(
"author", new Person("Ted", "Neward", 39));
                bindings.put(
"title", "5 Things You Didn't Know");
                
                FileReader fr
= new FileReader(arg);
                engine.eval(fr, bindings);
            }
        }
        catch(IOException ioEx)
        {
            ioEx.printStackTrace();
        }
        catch(ScriptException scrEx)
        {
            scrEx.printStackTrace();
        }
    }
}

  访问所绑定的对象很简单 — 所绑定对象的名称是作为全局命名空间引入到脚本的,所以在 Rhino 中使用 Person 很简单,如清单 7 所示:

  清单 7. 是谁撰写了本文?

println("Hello from inside scripting!")

println(
"author.firstName = " + author.firstName)

  您可以看到,JavaBeans 样式的属性被简化为使用名称直接访问,这就好像它们是字段一样。

0
相关文章