我如何才能拥有一个类型为Java.util.Arraylist的javascript对象
How can I have a javascript object that has a type of Java.util.Arraylist?
使用Solr ScriptUpdateProcessor进行修补,因此我有一个在没有浏览器的情况下执行的javascript文件。我对这方面还很陌生,不知道如何在调试器中运行它,并且仅限于系统日志记录。
在这个javascript文件中,我有一个对象,我认为它是一个数组,但奇怪的是,它缺少javascript数组的基本属性。
所以我用这个函数转储对象:
function log_object(object) {
var output = '';
for (var property in object) {
output += property + ': ' + object[property]+'; 'n';
}
logger.info(output);
}
返回的结果看起来像"真正的"Java。最值得注意的是:
class: class java.util.ArrayList;
更多的是:
clone: function clone() {/*
java.lang.Object clone()
*/}
;
toArray: function toArray() {/*
java.lang.Object[] toArray()
java.lang.Object[] toArray(java.lang.Object[])
*/}
;
iterator: function iterator() {/*
java.util.Iterator iterator()
*/}
;
addAll: function addAll() {/*
boolean addAll(int,java.util.Collection)
boolean addAll(java.util.Collection)
*/}
;
get: function get() {/*
java.lang.Object get(int)
*/}
;
equals: function equals() {/*
boolean equals(java.lang.Object)
*/}
等等。令人震惊。
我是如何在javascript函数中得到一个基本的java对象的?这是怎么回事?
更新
java与javascript之间存在一些我以前不知道的灰色地带。test-update-script.js中的最后一个"工作代码"如下:
doc = cmd.solrDoc; // org.apache.solr.common.SolrInputDocument <- note this is also java?
var contents = []; <-- 'normal' js Array.
vals = doc.getFieldValues(my_multivalued_field); // <--- vals is now java.util.arraylist
jsFriendlyAry = vals.toArray(); // <-- jsFriendlyAry is String[]
for (j = 0; j < jsFriendlyAry.length; j++) {
contents.push(jsFriendlyAry[j]);
}
因此,可以将服务器端javascript和java混合使用。Oracle从脚本使用Java指南中的片段似乎需要一个我还没有弄清楚的include(特别是Java.to和Java.from),但要确认行为。
默认情况下,使用Java对脚本的支持来执行更新脚本(https://lucene.apache.org/solr/4_7_0/solr-core/org/apache/solr/update/processor/StatelessScriptUpdateProcessorFactory.html)
在Rhino Javascript引擎的最初实现中,JS被编译成Java类,并且这些脚本自1998年以来一直被解释。
因此,这些脚本似乎仍然是从Java作为Java运行的,而不是孤立运行的。这就解释了为什么转储的对象与POJO比"普通"JS对象有更多的共同点。
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 借助asp.net验证或java脚本对多个文本进行验证
- java.net和javascript之间正则表达式的差异
- 如何从Java/scala调用js美化程序
- 如何使用json将对象列表从java转换为javascript
- Java脚本时间添加
- Node JS,传统的数据结构?(如Set等),任何类似Java.util的node
- 我如何才能拥有一个类型为Java.util.Arraylist的javascript对象
- 无法反序列化 java.util.List 的实例VALUE_STRING
- Java.util.date - 打印其对象而不是值
- GWT java.util.Date serialization
- 什么'JavaScriptdeflate和java.util.zip.Deflater之间的区别是什么
- 如何从javascript访问java.util.List会话
- Javascript Date和java.util.Date构造函数参数
- Nashorn NativeDate conversion to java.util.Date
- 如何从java.util.Date类型的JavaScript对象返回
- 在Java.util.Date中解析org.mozilla.javascript.NativeDate
- 使用Javascript将java.util.List与下拉列表绑定
- javascript implementation of java.util.calendar api
- java.util.PropertyPermission文件.为已签名的applet读取编码