如何在Java中指定自己的Rhino上下文?

时间:2010-04-29 19:04:43

标签: java javascript rhino javax.script

我正在努力确保我的Rhino脚本(在Java 6下运行)是严格的,这样如果脚本开发人员拼错了表达式,我希望抛出异常。目前发生的事情是表达式只是评估为“未定义”。

现在根据Mozilla org https://developer.mozilla.org/en/New_in_Rhino_1.6R6,有一些功能可以在上下文中启用严格检查。我找不到一个有效的例子。

到目前为止,我所做的是编写一个类来扩展ContextFactory,然后覆盖hasFeature方法。

public class ScriptContextFactory extends ContextFactory {

    protected boolean hasFeature(Context context, int featureIndex) {

        switch (featureIndex) {
            case Context.FEATURE_STRICT_EVAL:
                return true;

            case Context.FEATURE_STRICT_VARS:
                return true;
        }

        return super.hasFeature(context, featureIndex);
    }
  }

然后在Main中我将我设置为默认值。

ContextFactory.initGlobal(new ScriptContextFactory());

我得到了一个非法的州例外。 :(

关于这如何运作的任何想法或样本?

TIA

1 个答案:

答案 0 :(得分:2)

如果您在致电Context.enter()之前正在initGlobal()尝试撤消订单。