【问题标题】:How to create link in grails webflow without execution state in url?如何在grails webflow中创建链接而不在url中执行状态?
【发布时间】:2012-07-26 07:40:42
【问题描述】:

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

域对象有一个 byte[] 数组保存图像。我的控制器中的“图像”方法将图像传送到浏览器。这很好用。

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

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

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

创建的图片网址(如上例)如下所示:

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

我不希望将执行参数传递到我的图片网址中。我该如何解决这个问题?

【问题讨论】:

    标签: grails spring-webflow gsp


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        从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 中呈现的每个链接都包含该执行参数。对我来说它看起来像错误。

        【讨论】:

          猜你喜欢
          • 2011-11-09
          • 1970-01-01
          • 2011-06-13
          • 1970-01-01
          • 2013-10-16
          • 1970-01-01
          • 1970-01-01
          • 2019-07-01
          • 2023-03-08
          相关资源
          最近更新 更多