【发布时间】:2014-02-22 12:37:27
【问题描述】:
我想通过直接在视图中嵌入数据将数据从控制器传递到 javascript。 (所以不会有额外的请求。)
我的第一个解决方案是在 GSP 中使用 as JSON,如下所示:
<script>
var data = ${invoice as JSON};
</script>
我认为这不是一个好主意,因为我必须使用 (Grails 2.2)
grails.views.default.codec = "none"
或(Grails 2.3)
grails {
views {
gsp {
codecs {
expression = 'none'
}
}
}
}
现在,我发现我可以像这样创建小标签库:
def json = { attrs, body ->
out << (attrs.model as JSON)
}
我可以在 GSP 中使用以下代码:
<script>
var data = <g:json model="${invoice}" />;
</script>
现在,问题。使用 taglib 是最佳实践吗?如果没有,请给我最好的解决方案。
【问题讨论】:
-
如何将json字符串从控制器发送到视图,并使用
${json.encodeAsJavaScript()}? -
encodeAsJavaScript() 给我:
var data = \u007b\u0022key1\u0022:\u0022val1\u0022\u002c\u0022key2\u0022:3.14\u007d -
哦,对了,在这种情况下,您需要原始数据。
${raw(json)} -
${raw(json)} 有效!但是
json必须是字符串,而不是 JSON 对象。谢谢。
标签: javascript json grails