【问题标题】:redirect in grails在 grails 中重定向
【发布时间】:2012-09-14 02:36:29
【问题描述】:

我正在像这样在 grails 中重定向上传的图像:

控制器:

    def upload() {
    def f = request.getFile('myFile')
    if (f == null | f.empty) {
        flash.default = "file cannot be empty"
        errors.getFieldError("cannot be empty")
        return
    }
    def fName = f.getOriginalFilename()
    def picture = new Picture(orgName: fName, urlOrg: "http://localhost/"+fName)
    f.transferTo(new File('/Users/sagarmichael/Desktop/photoUpload/'+fName))
    println("saved")
    redirect(action: 'test', params: [url1:picture.urlOrg] )


}

def test(){
    System.out.println(params.url1)
            [url1:params.url1]

}

我希望这会将 url1 发送到我的名为 test 的视图中,我有这个:

<img src="${url1}"/>

我希望这会在屏幕上显示图像。 我正确设置了 apache2 配置,当我转到

http://localhost/<imageName> 

它工作正常。

我在浏览器的 url 栏中得到的是:

http://localhost:8080/FYP/profile/test?url1=http%3A%2F%2Flocalhost%2Flonglogo3.png

有什么想法吗?

【问题讨论】:

    标签: grails


    【解决方案1】:

    如果您将redirect 方法与params 一起使用,它们将出现在url 中。要省略这一点,您需要以另一种方式来设计代码。

    查看您的代码,您似乎上传了一些图像并需要显示结果。我建议您只将图像的名称传递给您的其他方法并动态安装链接(并不总是本地主机,对吗?)。输出网址将是:

    http://localhost:8080/FYP/profile/test?image=longlogo3.png
    

    如果您还需要省略图像的名称,则必须将其存储在会话中。

    【讨论】:

    • 即使这样做,似乎测试页面没有被加载,我应该渲染它而不是重定向吗?
    • 请提供更多信息。 “未加载”是什么意思?它显示404?你有一个 profile/test.gsp 吗?
    • 是的,我有一个 profile/test.gsp 并且在那里我有 localhost${name}" alt="image" /> 其中 name 是唯一通过的东西。在此页面上,我也有一些文字。似乎页面没有从 test() 呈现,只是 url 正在改变。我不明白为什么会这样。我最终想要传递一组上传的图片,然后所有图片都将显示在页面上。
    • 检查生成的html。我认为您缺少斜杠: localhost/${name}
    • 仍然没有运气,我认为我需要放弃这个想法并尝试不同的方式
    【解决方案2】:

    您正在混合模型和 URL 参数。如果你真的需要这样的话,你必须把 param 'url1' 的内容放到 test() 动作中的模型中:

    def test() {
        return [ 'url1': params.url1 ]
    }
    

    我希望你明白了,我绝对建议重新设计代码 ;-)

    【讨论】:

    • 我确实计划更改它,这仅用于测试目的,但以上仍然不起作用我只是浏览器网址中的这个:localhost:8080/FYP/profile/…
    【解决方案3】:

    试试

    render(view:"test", model: [url1:picture.urlOrg])
    

    或者

    chain(action: "test", model: [url1:picture.urlOrg])
    

    【讨论】:

    • 两者的区别在于render不会做任何可能存在于测试动作中的处理。传递模型时,链本质上是重定向。
    猜你喜欢
    • 2012-09-08
    • 2015-02-20
    • 2010-12-29
    • 2011-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-19
    相关资源
    最近更新 更多