Spring surf javascript 支持的 webscript 和 JSON 对象
Posted
技术标签:
【中文标题】Spring surf javascript 支持的 webscript 和 JSON 对象【英文标题】:Spring surf javascript backed webscript and JSON objects 【发布时间】:2012-07-18 14:59:42 【问题描述】:我真的需要帮助。在过去的 2 或 3 小时内,我试图简单地在 freemarker 中列出一个带有 javascript 支持的 webscript 的 JSON 对象,但没有运气。
让我们将我的脚本命名为 x,所以:
x.get.js
function main()
//model.data = 'name':'Test Object','size':100;
model.data=
"2012":
"A":
"a": "on",
"b": "off",
"list": [
1,
2,
3,
4
]
,
"2013":
"B":
"c": "on",
"d": "off"
;
logger.log(jsonUtils.toJSONString(model.data));
main();
x.get.html.ftl
<#assign keys = data?keys>
<#list keys as tag>
$jsonUtils.encodeJSONString(tag)<#if tag_has_next>,</#if>
</#list>
当我尝试仅使用第一个 model.data(已注释掉)时,它工作正常,并且记录器写出完整的 JSON,我在呈现的 HTML 中得到“名称、大小”。
但是,当我这样尝试时,我在呈现的 HTML 中什么也得不到,并且记录器会说一些奇怪的事情:
"2012":"org.mozilla.javascript.UniqueTag@1a31e0a: NOT_FOUND","2013":"org.mozilla.javascript.UniqueTag@1a31e0a: NOT_FOUND"
那又怎样?这个 JSON 也是有效的,所以我错过了一些对话或神秘的功能或什么?
感谢您的帮助
J.
【问题讨论】:
好的,我解决了!记录器还为以下 json 记录奇怪的事情:model.data = '123':'Test Object','size':100;
确切地说:"123":"org.mozilla.javascript.UniqueTag@1a31e0a: NOT_FOUND", 'size' : 100
当控制器脚本被执行时,如果你的字符串中有一个小数(你希望被解释为一个字符串,因为这是一个有效的json!),如“123”,将被解析为十进制!我不知道为什么。我正在寻找答案。 所以不要在字符串字面量中使用整数,作为 JSON 标识符,在玩网络脚本时。
【参考方案1】:
通常你应该使用 js 中的普通对象/值填充你的模型,并在你的 ftl 模板 x.get.json.ftl 中生成 json
【讨论】:
以上是关于Spring surf javascript 支持的 webscript 和 JSON 对象的主要内容,如果未能解决你的问题,请参考以下文章
Spring 4:MappingJackson2HttpMessageConverter 不支持 jsonp 的 application/javascript