如何将输出重定向到rhino中的writer?

时间:2011-09-17 15:32:12

标签: rhino

是否可以将Context.evaluateString(...)的输出重定向到Writer?我正在寻找与jdk 6提供的类似于ScriptContext.setWriter(http://download.oracle.com/javase/6/docs/api/javax/script/ScriptContext.html#setWriter%28java.io.Writer%29)的东西。

1 个答案:

答案 0 :(得分:0)

Rhino没有标准输入/输出的概念,因此您必须将Writer分配给某个变量。像这样:

import java.io.StringWriter;
import org.mozilla.javascript.Context;
import org.mozilla.javascript.ScriptableObject;

public class SetWriter {
    public static void main(String[] args) {
        Context c=Context.enter();
        ScriptableObject scope = c.initStandardObjects();
        StringWriter writer=new StringWriter();
        ScriptableObject.putProperty(scope, "writer", writer);
        String source = "  writer.write('hello');  ";
        c.evaluateString(scope, source, "TEST", 1, null);
        System.out.println(writer.getBuffer());
    }
}

或者,您在脚本中使用System.out.println,在运行脚本之前请考虑使用System.setOut。