grails中的重定向

grails中的重定向,grails,Grails,我在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

我在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}"/>

有什么想法吗?

您正在混合模型和URL参数。如果确实需要这样做,则必须在test()操作中将参数“url1”的内容放入模型中:


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

如果将
重定向
方法与
参数一起使用,它们将出现在url中。要忽略这一点,您需要以另一种方式来设计代码

看看你的代码,你似乎上传了一些图片,需要显示结果。我建议您只将映像的名称传递给另一个方法,并装载动态链接(不总是localhost,wright?)。输出url将为:

http://localhost:8080/FYP/profile/test?image=longlogo3.png
如果您也需要省略图像的名称,则必须将其存储在会话中。

尝试

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


我确实计划更改它,这只是出于测试目的,但上述仍然不起作用我只是在浏览器url中这样做:即使这样做,似乎测试页面没有被加载我应该呈现它而不是重定向吗?请提供更多信息。“未加载”是什么意思?显示404?你有一个profile/test.gsp吗?是的,我有一个profile/test.gsp,在那里我只有name通过了。在这一页我也有一些文字。页面似乎不是通过test()呈现的,只是url在更改。我不明白这是为什么。我最终想要传递一个上传图像的集合,然后所有的图像都会显示在一个页面上。检查生成的html。我想你错过了斜杠:localhost/${name}仍然不走运,我想我需要放弃这个想法,尝试另一种方法。两者之间的区别是,渲染不会执行测试操作中可能存在的任何处理。链本质上是传递模型时的重定向。
def test() {
    return [ 'url1': params.url1 ]
}
http://localhost:8080/FYP/profile/test?image=longlogo3.png
render(view:"test", model: [url1:picture.urlOrg])
chain(action: "test", model: [url1:picture.urlOrg])