Grails 2.0:为图像资源使用变量

时间:2011-12-20 01:50:44

标签: grails resources image gsp

我正在传递一个变量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}

我做错了什么?

非常感谢

纳斯

2 个答案:

答案 0 :(得分:7)

您正试图将表达式语言嵌入到表达式语言中。

替换:

 <img src="${resource(dir:'images',file:"${logo}")}" alt="Logo" border="0" /> 

通过

 <img src="${resource(dir:'images',file:logo)}" alt="Logo" border="0" />

在EL内部,您可以直接引用变量

答案 1 :(得分:4)

欧内斯特是对的,你不应该在这种情况下使用GString。实际错误是未正确引用值。 你也可以这样做

<img src='${resource(dir:"images",file:"${logo}")}' alt="Logo" border="0" />

(注意单引号和双引号,它们已正确关闭)