我不知道它来自何处:这是它,在Java中我创建了一个在Nashorn中运行Javascript文件的servlet,然后将结果写入响应中。我的Javascript代码返回一个对象,如:
function root(){
return {
"hello": 1
};
}
当我的servlet返回对象时(它只是一个测试):
Object result = invocable.invokeFunction("root", req);
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(resp.getOutputStream());
outputStreamWriter.write(result.toString());
outputStreamWriter.close();
响应原始身体是:
[object Object]
和chrome将执行以下操作:
红色弹出式十字架甚至在点击时关闭它。
这是由我忘记的扩展程序完成的吗?或者它是否与某种语法集成?我真的不知道。
答案 0 :(得分:1)
@ gotch4
结果你正在观察预期。您正在重新调整JavaScript对象的字符串表示形式(从技术上讲,您正在调用Object.protorype.toString
并返回[object Object]
)。
我认为你真正想要的是在返回对浏览器的响应之前调用JSON.stringify
。
Object JSON = e.eval("JSON");
Object result = invocable.invokeMethod(JSON, "stringify", invocable.invokeFunction("root", req));
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(resp.getOutputStream());
outputStreamWriter.write(result.toString());
outputStreamWriter.close();
p.s。代码应该有效,但我没有测试 - 从手机写。