我在这个项目中使用Rhino的javax.scripting。
我有一个Java方法可返回Java对象(Double,Long,Integer等)。我想从javascript调用该方法,并将结果作为Javascript基本类型引用。但是,javacript会将返回类型识别为Object。
如何强制将其转换为JavaScript原语?
这个问题与http://groups.google.com/group/mozilla.dev.tech.js-
engine.rhino/browse_thread/thread/2f3d43bb49d5288a/dde79e1aa72e1301
非常相似
问题在于如何获取上下文和WrapFactory的引用?
样例代码:
public class data
{
Double value = 1.0d;
public Number get() { return value; }
}
public static void main(String[] args)
{
ScriptEngine engine = new ScriptEngineManager().getEngineByName ("rhino");
data data = new data();
try
{
engine.eval("function test(data) { return data.getD('value1') + 5;};");
System.out.println("Result:" + ((Invocable)engine).invokeFunction("test", data));
}
catch (Exception e)
{
e.printStackTrace();
}
}
输出:结果:15
尝试以下
public static void main(String [] args) throws Exception {
ScriptEngine engine = new ScriptEngineManager().getEngineByName ("rhino");
data data = new data();
Context.enter().getWrapFactory().setJavaPrimitiveWrap(false);
try
{
engine.eval("function test(data) { return data.get('value1') + 5;};");
System.out.println("Result:" + ((Invocable)engine).invokeFunction("test", data));
}
catch (Exception e)
{
e.printStackTrace();
}
}
public static class data
{
Double value = 1.0d;
public Number get(String arg) { return value; }
}
另外,您可以修改javascript函数以将值显式转换为数字:
function test(data) { return parseInt(data.get('value1'), 10) + 5;}
我有一个这样的Html字符串: 我需要将此 html 字符串转换为脚本中的对象。也就是说,当在jquery中使用方法时,我应该得到相同的对象结果。我尝试了这样的事情: 但是没有用。我应该在javascript中使用什么方法将HTML字符串转换为对象符号?我应该得到对象形式的每个子节点。我不想在这个解决方案中使用Jquery。我期待控制台中显示的确切输出
问题内容: 当屏幕抓取某些网站时,我从标签中提取数据。 我得到的数据不是标准格式。我不能使用。 目前,我用于将原始数据转换为格式。 但是,当我遇到复杂的数据结构时,我感到非常糟糕。 您有更好的解决方案吗? 问题答案:
问题内容: 假设您网站的用户输入了日期范围。 您需要将此日期发送到服务器进行某些处理,但是服务器希望所有日期和时间都采用UTC。 现在,假设用户位于阿拉斯加,夏威夷或斐济。由于它们所处的时区与UTC完全不同,因此需要将日期范围转换为以下形式: 使用JavaScript Date对象,您如何将第一个“本地化”日期范围转换为服务器可以理解的范围? 问题答案: 该方法返回简化的扩展ISO格式(ISO86
我正在使用一个实现自己的Array类的JDBC库。为了使用所述Array,他们将其转换为Object[]。 https://github.com/housepower/ClickHouse-Native-JDBC/blob/master/src/test/java/com/github/housepower/jdbc/QueryComplexTypeITest.java#L120 我使用的是Clo
所以我想知道怎么才能把一个芬的ID转换到棋盘上。 代码: 我很感激我得到的任何帮助。如果你需要更多的信息,请告诉我。
问题内容: 我发现一些代码我工作的地方的点被强制转换,因为它是传递给方法。 为什么要这样做? 我知道这个问题涉及重载的方法,并使用类型转换来确定要调用的方法的版本。 但是,如果不执行强制类型转换,如果使用空参数调用该方法,那么是否会重选带有其他类型的参数的重载方法呢?那么演员阵容还能完成什么呢? 问题答案: 如果 未 执行转换,则将选择 最具体的 版本。 可以是type 或type 的空引用。因此