我正在传递一个变量logo
,其中包含从我的控制器到GSP的图像文件的文件名,然后我尝试像这样显示图像:
<img src="${resource(dir:'images',file:"${logo}")}" alt="Logo" border="0" />
即使变量logo
包含正确的值,我得到一个Unclosed GSP expression
错误:
java.lang.RuntimeException: Error initializing GroovyPageView
at org.grails.plugin.resource.DevModeSanityFilter.doFilter(DevModeSanityFilter.groovy:26) ~[plugin-classes/:na]
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [na:1.6.0_26]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [na:1.6.0_26]
at java.lang.Thread.run(Thread.java:662) [na:1.6.0_26]
Caused by: org.codehaus.groovy.grails.web.taglib.exceptions.GrailsTagException: Unclosed GSP expression
... 4 common frames omitted
将${logo}
替换为文件名有效
我做错了什么?
Thanks a lot
乔纳斯
您正在尝试将表达式语言嵌入到表达式语言中。
替换:
<img src="${resource(dir:'images',file:"${logo}")}" alt="Logo" border="0" />
<img src="${resource(dir:'images',file:logo)}" alt="Logo" border="0" />
在EL中你可以直接引用变量
Ernest是对的,在这种情况下你不应该使用GString。实际的错误是没有正确地引用值。你也可以写
<img src='${resource(dir:"images",file:"${logo}")}' alt="Logo" border="0" />
(注意单引号和双引号,它们是正确关闭的)