重定向在grails中

时间:2012-09-13 16:33:10

标签: 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> 

它可以正常工作。

我得到的是浏览器的网址栏中的内容:

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

任何想法?

3 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

如果您将redirect方法与params一起使用,它们将显示在网址中。要省略这一点,您需要以另一种方式思考设计代码。

查看代码,您可能会上传某些图片并需要显示结果。我建议你只将图像的名称传递给你的其他方法并挂载动态链接(并不总是localhost,wright?)。输出网址为:

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

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

答案 2 :(得分:0)

尝试

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

或者

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