Как перенаправить вывод писателю в носорога? - PullRequest
1 голос
/ 17 сентября 2011

Можно ли перенаправить вывод из Context.evaluateString (...) в Writer? Я ищу что-то похожее на ScriptContext.setWriter (http://download.oracle.com/javase/6/docs/api/javax/script/ScriptContext.html#setWriter%28java.io.Writer%29) предоставляется с jdk 6.

1 Ответ

0 голосов
/ 29 сентября 2011

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 перед запуском скрипта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...