Grails 2.0: используйте переменную для ресурса изображения - PullRequest
2 голосов
/ 20 декабря 2011

Я передаю переменную 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} на имя файла работает.

Что я делаю не так?

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

Jonas

Ответы [ 2 ]

7 голосов
/ 20 декабря 2011

Вы пытаетесь внедрить Expresion Language в Expresion Language.

Заменить:

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

К

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

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

4 голосов
/ 20 декабря 2011

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

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

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

...