我是grails(1.3.7)的新手,我在文件系统中显示图像时遇到了奇怪的情况。 one.png 图片放入 web-app / images / fotos 目录。 zz.gsp :
<img src="${resource(dir:'images/fotos', file:'one.png')}" alt="Nothing" />
与无效动作相关 def zz = {} 工作正常。但如果我打算在 rawRenderImage.gsp 中显示相同的图片:
<body>
<p>
${fdir} <br/> ${fname} <!-- OK -->
</p>
<g:if test="${fname}">
<img src="${resource(dir:'fdir',file: 'fname')}" alt ="Nothing"/>
</g:if>
</body>
尽管 fdir 和 fname 参数传递给页面,但图片仍未显示。控制器中的操作是:
def rawRenderImage = {
// def basePath = servletContext.getRealPath("/")
// def basePath = grailsAttributes.getApplicationContext().getResource("/").getFile().toString() + "/images/fotos/"
// def basePath = grailsAttributes.getApplicationContext().getResource("/").getFile().toString()
// def fname = params.photoId + ".png"
// def fname = "/images/fotos/" + params.photoId + ".png"
basePath = "images/fotos" // or basePath=”images” for /images/one.png
fname=”one.png”
[fdir:basePath, fname:fname]
}
甚至直接指定 basePath =“images / fotos”和 fname =“one.png”不起作用,以及与 basePath的任何组合获取绝对路径。即使我将图片放在 images 目录中的情况也不起作用。我使用 netbeans ,但它也无法在控制台模式下运行。
请帮助。
答案 0 :(得分:2)
将文件名和目录作为模型中的变量传递时,请勿在标记的src
属性中引用它们。然后,Groovy ${}
评估将评估变量而不是字符串。
<g:if test="${fname}">
<img src="${resource(dir:fdir,file:fname)}" alt ="Something"/>
</g:if>