在最新的grails 4.0.4应用程序中,
grails:
views:
gsp:
codecs:
expression: none
在Tomcat 8.5.39中作为war文件部署时,似乎被忽略了。(JVM 11.0.7 + 10-post-Ubuntu-2ubuntu218.04)
加上这个
<head>
...
<script>
var foo = ${[a:23, b:42, c:666] as grails.converters.JSON};
</script>
</head>
生成的grails-app/views/index.gsp
显示为
var foo = {"a":23,"b":42,"c":666};
运行时grails run-app
甚至grails prod run-app
(!),但编码为
var foo = {"a":23,"b":42,"c":666};
在已打包(grails prod war
)部署的war文件中。
的build.gradle
是未经修改的,除了改变
compile "org.grails.plugins:cache"
对此
compile("org.grails.plugins:cache") {
exclude module:'groovy-all'
}
这是错误还是我使用的编解码器设置错误?也许有一个插件可以覆盖此设置(例如此处https://github.com/grails/grails-core/issues/10722),但是我找不到任何其他yml文件。任何帮助表示赞赏!
在Grails 4.0.3中,它就像一个吊饰一样工作。似乎在Grails 4.0.4中已损坏。也许是新的Groovy Page Compiler Task带来了问题。永远不会使用此处的配置文件(aka application.yml
)变量。但这只是在经过快速调查后,很少喝咖啡的假设;-)
一些帮助TagLib像这样:
import grails.converters.JSON
class FooTagLib {
static defaultEncodeAs = [taglib:'none']
static namespace = "foo"
def json = { attrs, body ->
out << raw(attrs.data as JSON)
}
}
用法:
var foo = <foo:json data="[a:23, b:42, c:666]"/>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句