我想在我的网页流中显示一个来自我的域对象的图片。
域对象有一个包含图像的byte []数组。我的控制器中的“图像”方法将图像传送到浏览器。这很好。
在我的网络流程中,我这样做:
<img src="${createLink(controller:'shop', action:'image', id:shopInstance.id)}">
我可以在我的前端(浏览器中)看到图像,但每次点击“下一步”或在webflow中更改我的状态时都会重新加载,因为图像网址包含一个更改webflow中每个事件的参数。
创建的图片网址(上面的示例)如下所示:
http://localhost:8080/project/shop/image/2?execution=e2s5
我不希望执行参数传递到我的图像网址中。我该如何解决这个问题?
答案 0 :(得分:2)
我的猜测是这是一个错误。我使用的解决方法如下
${createLink(controller: 'controller', action: 'action').replaceAll(/\?.*$/, "")}
这将使用正则表达式删除执行参数。
答案 1 :(得分:1)
不确定为什么要获得该执行参数,但您可以尝试:<img src="${resource(dir: 'shop/image', file: shopInstance.id)}">
并确保UrlMappings.groovy文件具有“ship / image”到适当控制器的映射。
答案 2 :(得分: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中呈现的每个链接都包含该执行参数。它看起来像我的错误。