出于安全原因,我想传递给Nashorn本地Java类型中的JS函数。
如果我创建了一个引擎并运行以下程序:
NashornScriptEngineFactory nashornScriptEngineFactory = new NashornScriptEngineFactory();
ScriptEngine engine = nashornScriptEngineFactory.getScriptEngine();
engine.eval(script);
Invocable invocable = (Invocable) engine;
JSObject objectWork = (JSObject) engine.get("objectWork");
objectWork.call(null,"eee");
剧本是
function objectWork(arg){
print ("arg is "+ typeof arg);
print ("arg.getClass()"+ arg.getClass());
for (var k in arg){
print(k);
}
}
输出是
arg is string
arg.getClass()class java.lang.String
我对第二个不太满意,我不知道getClass是否公开了java.lang.类对象的任何方法。有没有一种方法来传递将Java字符串包装在本机字符串中的东西,以扩展Nashorn自己的JSObject?
一个琐碎但可行的解决方案。只需让引擎加载一段JS代码,比如
function strclone(str){
return new String(str);
}
然后每次从Java调用它。这将产生一个JSObject和一个可传递给JS函数的propert JS字符串:
JSObject strclone = (JSObject) engine.get("strclone");
JSObject jsString = strclone.call(null,"some Java string");
someOtherJsMethod.call(null, jsString);
JS String基元类型值java.lang.String对象。例如,
jjs> "hello".getClass()
class java.lang.String
jjs> "hello".class
class java.lang.String
也就是说,nashorn中没有单独使用的“JS字符串”类型。Nashorn尽可能避免包装Java /JS类型。
你担心的具体问题是什么?通过“类”对象反射访问字符串?请注意,默认情况下,如果在SecurityManager下运行,则不允许对脚本进行Java反射。
$ jjs -J-Djava.security.manager
jjs> "hello".class
class java.lang.String
jjs> "hello".class.getMethods()
java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "nashorn.JavaReflection")
jjs>
因此,除非您为脚本授予“nashorn.JavaReflection”运行时权限,否则它将无法从脚本执行任何Java反射。因此,访问任何Java对象的类对象不会构成任何安全线程。
这里是HTML文件,在脚本部分,我发出了一个ajax请求,将一些字符串传递给python函数。 在中,我设置了python脚本的路径。Python文件,我希望在该文件中从JS获取所请求的数据并将其打印出来。 注意:这里我没有使用任何框架。只是纯HTML、JS和Python文件。
我通过在我的Java类中调用下面的这个方法加载一个AngularJS页面,只是一个示例。如果我有一个对象,例如人,如何发送到角页面?
问题内容: 当将对象作为参数传递时,JavaScript通过引用传递它们,这使得创建对象的本地副本变得困难。 将有和。 通过克隆可以解决这个问题。简单的例子: 不会或。 题 除了创建本地副本/克隆以外,还有没有更好的方法可以按值传递对象? 问题答案: 并不是的。 根据你的实际需要,一个 可能性 可能是集作为一个新的对象的原型。 因此,您添加到的任何属性都不会添加到中。使用与中的属性相同的属性名称添
问题内容: 这是我的基本功能: 此功能能够连接并在我的数据库上执行查询… 我想创建相同的功能,但更通用。…前一个仅用于一个表(),新表必须能够接受查询的参数作为输入,以及将在其中执行查询的类类型。这将允许我仅使用一行来执行查询。 应该是这样的: 您发现我不知道如何“通用”代码… 我希望已经清楚了… PS 应该是DB()中表的类的代表。 谢谢。 问题答案: 如果您打算返回结果集,请使用:
问题内容: 我正在尝试使用javascript将查询集从Django传递到模板。 我尝试了不同的方法来解决此问题: 1.普通方法-由于命名法[&gt Object:ID&lt,&gt Object:ID&lt,…],Javascript试图解析对象一团糟 Django视图 模板HTML + JS 2. JSON方法-Django无法将对象列表转换为不可序列化的JSON字符串 Django视图 模板
我只想发送数据对象var arrImg中包含的一个字段。我要推送的第一件事是var arrImg的image字段,其条件是checked为true,并将其放入crudData:{'image':[]}上的新数组映像中。然后,第二步,我想在条件为checked为true的情况下,将var arrImg的字段名推送到crudData:{'name':[]}上的新数组名中。选中值首先设置为false,但