表达式编解码器 (grails.views.gsp.codecs.expression) 似乎在部署的 war 文件中被忽略
Expression codec (grails.views.gsp.codecs.expression) seems to be ignored in deployed war file
在新的 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 中被破坏了......
也许 the new Groovy Page Compiler Task. The config file (aka application.yml
) variable here 带来的问题从未被使用过。但这只是在咖啡太少的情况下快速调查后的假设 ;-)
解决方法或我的首选方法(仍在 Grails 4.0.4 中工作)
像这样的一些助手 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]"/>
在新的 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 中被破坏了......
也许 the new Groovy Page Compiler Task. The config file (aka application.yml
) variable here 带来的问题从未被使用过。但这只是在咖啡太少的情况下快速调查后的假设 ;-)
解决方法或我的首选方法(仍在 Grails 4.0.4 中工作)
像这样的一些助手 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]"/>