2011-12-20 3 views
2

я передаю переменную logo, которая содержит имя файла файла изображения из моего контроллера в GSP, а затем я пытаюсь отобразить изображение, как это:Grails 2.0: Использование переменной для ресурса изображения

<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} с именем файла работает.

Что я делаю неправильно?

Большое спасибо

Jonas

ответ

7

Вы пытаетесь embeed Expresion языка внутри Expresion языка.

Заменить:

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

По

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

Внутри EL вы можете обратиться к переменным непосредственно

+0

Конечно ... спасибо большое – Jonas

4

Эрнест прав, что вы не должны использовать GSTRING в этом случае. Фактическая ошибка заключается в том, что значения неправильно указаны. Вы также могли бы сделать

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

(обратите внимание на одинарные кавычки и двойные кавычки, они плотно закрыты)

Смежные вопросы