无法在grails中显示文件系统中的图像

时间:2011-11-02 17:33:40

标签: image grails

我是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 ,但它也无法在控制台模式下运行。

请帮助。

1 个答案:

答案 0 :(得分:2)

将文件名和目录作为模型中的变量传递时,请勿在标记的src属性中引用它们。然后,Groovy ${}评估将评估变量而不是字符串。

<g:if test="${fname}">
    <img src="${resource(dir:fdir,file:fname)}" alt ="Something"/>
</g:if>