我希望直接在视图中通过嵌入数据将数据从控制器传递到javascript.(因此不会有额外的请求.)
我的第一个解决方案是as JSON在GSP中使用这样的:
<script>
var data = ${invoice as JSON};
</script>
Run Code Online (Sandbox Code Playgroud)
我不认为这是个好主意,因为我必须使用(Grails 2.2)
grails.views.default.codec = "none"
Run Code Online (Sandbox Code Playgroud)
或(Grails 2.3)
grails {
views {
gsp {
codecs {
expression = 'none'
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我发现我可以像这样创建一个小的taglib:
def json = { attrs, body ->
out << (attrs.model as JSON)
}
Run Code Online (Sandbox Code Playgroud)
我可以在GSP中使用以下代码:
<script>
var data = <g:json model="${invoice}" />;
</script>
Run Code Online (Sandbox Code Playgroud)
现在,问题.使用taglib是最佳做法吗?如果没有,请给我最好的解决方案.