当前位置: 首页 > 面试题库 >

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

骆文华
2023-03-14
问题内容

我试图确保我的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


问题答案:

如果您Context.enter()在致电之前正在做,请initGlobal()尝试调换顺序。



 类似资料:
  • 我想编写自己的定位器来访问元素。WebDriver的API目前提供了八个定位器,允许按id、名称属性、标记名、完整或部分链接文本、XPath、类名和css选择器检索元素。然而,这些默认定位器现在对我来说还不够,因为我必须通过一个新属性访问元素。让我举个例子,这样你就能明白我在这里真正想要的是什么。 示例:选择您的用户名: 现在,我想编写一段代码,以便使用myLocator定位器访问用户名按钮,如:

  • 好的,在laravel 4中,如果我想添加自己的自定义类,例如:库\myFunction.php然后我执行以下步骤: 添加myFunctions.php到app/库/myFunctiosn.php 在app/start/global.php,在ClassLoader::addDirectory(数组(,我添加app_path()。 为了在我的刀片视图中调用它,我添加了以下代码 它是有效的。 但是如

  • 问题内容: 我已经到了需要将某些变量传递到所有视图的地步(主要是自定义身份验证类型变量)。 有人告诉我编写自己的上下文处理器是执行此操作的最佳方法,但是我遇到了一些问题。 我的设置文件如下所示 如你所见,我有一个名为“ context_processors”的模块和一个名为“ say_hello”的函数。 看起来像 我是否可以假设自己现在可以在我的观点范围内进行以下操作? 现在,这在我的模板中什么

  • 问题内容: 有什么好的教程/起点可以建议我开发自己的Java库吗? (我现在正在考虑开发一个小型图形库。) 问题答案: 如何开发自己的Java库? 如您所知,Java库通常只是一个包含一些实用程序类的jar文件,目的是在比Java Platform API中的类更高的抽象层次上解决问题。因此,从技术上讲,您只需编写在库中发现有用的类,对其进行编译,将它们打包并编写一些好的文档。 有什么好的教程/起

  • 问题内容: 您如何在Java中以及在何处定义自己的Exception层次结构? 我的主要问题涉及必须定义Exception类的包位置。 我们是否为异常创建一个特殊的程序包并将所有类放入其中? 问题答案: 我将此作为一般规则。 在适当的地方,使用预定义的Java异常。例如,如果您的代码有某种I / O错误,则抛出IOException是可以的。 仅当需要在try / catch块中区分两个异常时,才

  • 问题内容: 我正在寻找访问指令中“父”范围的任何方式。范围,超越,要求,从上方传入变量(或范围本身)的任何组合,等等。我完全愿意向后弯腰,但我想避免某些完全不可靠或难以维护的事情。例如,我知道我现在可以通过从preLink参数中获取并对其范围进行迭代以找到概念上的“父级” 来做到这一点。 重要说明 是,该指令必须在同一父范围内可重用。因此,默认行为(作用域:false)对我不起作用。我需要为指令的