我想直接在視圖中通過嵌入數據將數據從控制器傳遞到JavaScript。 (所以不會有額外的請求。)將數據從控制器傳遞到GSP中的JavaScript
我的第一個解決方案是使用as JSON
在GSP這樣的:
<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' – Meam
呵呵,在這種情況下您需要原始數據。 '$ {raw(json)}' –