1

我想在我的 webflow 中显示来自我的域对象的图像。

域对象有一个包含图像的 byte[] 数组。我的控制器中的“图像”方法将图像传送到浏览器。这工作正常。

在我的网络流中,我正在这样做:

<img src="${createLink(controller:'shop', action:'image', id:shopInstance.id)}">

我可以在我的前端(在浏览器中)看到图像,但是每次我单击“下一步”或更改 webflow 中的状态时它都会重新加载,因为图像 url 包含一个更改 webflow 中每个事件的参数。

创建的图像 url(上面的示例)如下所示:

http://localhost:8080/project/shop/image/2?execution=e2s5

我不希望将执行参数传递到我的图像 url 中。我怎样才能解决这个问题?

4

3 回答 3

2

我的猜测是这是一个错误。我使用的解决方法如下

${createLink(controller: 'controller', action: 'action').replaceAll(/\?.*$/, "")}

这将使用正则表达式来删除执行参数。

于 2013-09-16T18:53:02.090 回答
1

不确定为什么要获得该执行参数,但您可以尝试:<img src="${resource(dir: 'shop/image', file: shopInstance.id)}">并确保 UrlMappings.groovy 文件具有“ship/image”到正确控制器的映射。

于 2012-07-27T21:08:13.100 回答
1

从 Grails 2.0.4 开始,查看 ApplicationTagLib.groovy,可以看到

if (request['flowExecutionKey']) {
    params."execution" = request['flowExecutionKey']
    urlAttrs.params = params
    if (attrs.controller == null && attrs.action == null && attrs.url == null && attrs.uri == null) {
        urlAttrs[LinkGenerator.ATTRIBUTE_ACTION] = GrailsWebRequest.lookup().actionName
    }
}

因此,Grails 强制在 webflow 中呈现的每个链接都包含该执行参数。对我来说它看起来像错误。

于 2012-08-16T10:53:50.520 回答