如何将输出重定向到犀牛的编写器?

发布于 2024-12-05 03:32:22 字数 343 浏览 0 评论 0原文

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

Is it possible to redirect the output from the Context.evaluateString(...) to a Writer? I am looking for something that is similar to ScriptContext.setWriter (http://download.oracle.com/javase/6/docs/api/javax/script/ScriptContext.html#setWriter%28java.io.Writer%29) provided with jdk 6.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

太阳哥哥 2024-12-12 03:32:22

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。

Rhino does not have concepts of standard input/output, so you have to assign the Writer to some variable. like this:

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());
    }
}

Or, you are using System.out.println in your script, consider using System.setOut before you run the script.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文