使用grailsLinkGenerator在bootstrap.groovy中生成指向图像的链接

时间:2013-01-09 20:50:40

标签: grails

我正在尝试使用Grails 2.0.3中的underdocumented grailsLinkGenerator类在我的bootsrap文件中创建一个图像资源的链接

我已成功使用

注入服务
...
LinkGenerator grailsLinkGenerator 
...

但是由以下代码生成的网址不正确

grailsLinkGenerator.resource(dir:'images', file:'1.jpg')

没有错误,并且生成的路径几乎看起来正确,除了它在网址中缺少“静态”。我用错了吗?是否有另一种方法可以在bootstrap中访问静态资源?

1 个答案:

答案 0 :(得分:1)

查看ApplicationTagLib来源,您可以看到g:resource仅在未安装资源插件时才使用linkGenerator

Closure resource = { attrs ->
    if (!attrs.pluginContextPath && pageScope.pluginContextPath) {
        attrs.pluginContextPath = pageScope.pluginContextPath
    }
    // Use resources plugin if present, but only if file is specified - resources require files
    // But users often need to link to a folder just using dir
    return ((hasResourceProcessor && attrs.file) ? r.resource(attrs) : linkGenerator.resource(attrs))
}

因此,这可能是您的链接没有静态路径的原因。

我不认为将完整链接存储到数据库中的缩略图是一个不错的选择。如果您更改结构中的某些内容,则需要更新所有链接。您可以存储缩略图的名称(或使用约定),并在TagLib中生成链接,该链接将负责显示它们。

在TagLib中,您只需使用g:resource即可创建正确的网址。