2010-07-21 76 views
1

编码斜线我有在URL编码斜线问题。问题与url中

问题:
从GSP页面请求:
< A HREF = “http://foo.cz/myapp/page/show?url=home/gallery” >廊< /一个>

我:
http://foo.cz/myapp/page/show?url=home%2Fgallery
在地址行中的互联网浏览器。

的问题是与由 “/” 到 “%2F” 编码字符。

说明:
这是链接在我的GSP文件:
< A HREF = “http://foo.cz/myapp/page/show?url=home/gallery” >画廊< /一个>

点击后请求转到控制器:

def show ={ 
    def page = Page.findByUrl(params.url) //it works 
} 


然后我在互联网浏览器得到了GSP页面。所有的工作很好,我得到了需要的页面,但在互联网浏览器ADRESS行我看到:
http://foo.cz/myapp/page/show?url=home%2Fgallery

没有字符 “/”,但编码 “%2F

动机
我想在UrlMapping.groovy设置的URL:

"/${url}" (controller:"page", action:"show") 


并获得:
http://foo.cz/myapp/home/gallery/
但也有编码字符 “/” 的问题。

表面处理
你能帮我吗?

非常感谢汤姆

+0

在地址行,你总是会得到http://foo.cz/myapp/page/show?url=home%2Fgallery因为你的浏览器只是编码的URL。你可以通过使用URL映射来避免这种情况,所以http://foo.cz/myapp/home/gallery/通常会传递到你的控制器(grails会自动解码URL)。 – Oleksandr 2010-07-21 22:15:48

回答

0

它并不难取代 “%2F”,以 “/”,但随后,有问题的URL Grails的解码与URL映射。 转型是Grails标记建立连结。
见来源。像Aaron Saunders告诉我的那样,涉及String方法encodeAsURL()。 例如,您只能编写自己的标记并使用String方法replaceAll(“%F2”,“/”)并且它可以工作。

我得到了在互联网浏览器所需的URL地址中排:
http://foo.cz/myapp/page/show?url=home/gallery

我更换,在MappingURL.groovy到:
http://foo.cz/myapp/home/gallery

嗯,我一定要使用wildcart等脏代码在控制器中。 这不是很好的代码。

现在我知道,是不好的主意在paralex中使用斜杠(/),因为Olexandr告诉我上面。

当您使用例如“ - ”或其他保存URL字符作为参数分隔符时,它工作正常。

非常感谢所有的专家。

汤姆