在url中编码斜杠的问题

时间:2010-07-21 14:56:22

标签: grails

我在网址中遇到了编码斜杠的问题。

问题:
来自GSP页面的要求:
< a href =“http://foo.cz/myapp/page/show?url=home/gallery”>图库< / a>

我得到了:
http://foo.cz/myapp/page/show?url=home%2Fgallery
在Internet浏览器的地址行中。

问题是编码字符从“/”到“%2F”。

解释
这是我的gsp文件中的链接:
< a href =“http://foo.cz/myapp/page/show?url=home/gallery”>图库< / a>

点击请求后转到控制器:

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


然后我在我的互联网浏览器中获得了gsp页面。一切正常,我得到了必需的页面,但在互联网浏览器的地址行我看到:
http://foo.cz/myapp/page/show?url=home%2Fgallery

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

动机
我想将UrlMapping.groovy中的网址设置为:

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


得到:
http://foo.cz/myapp/home/gallery/
但编码字符有问题“/".

完成
你能帮我吗?

非常感谢汤姆

2 个答案:

答案 0 :(得分:3)

您需要解析Grails中的Url

http://www.grails.org/Dynamic+Encoding+Methods

答案 1 :(得分:0)

将“%2F”替换为“/”并不困难,但是,url映射存在问题。 转换在Grails标签CreateLink中。
见源。正如Aaron Saunders在上面所说的那样,涉及String方法encodeAsURL()。 例如,您只能编写自己的标记并使用String方法replaceAll(“%F2”,“/”)并且它可以正常工作。

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

我将MappingURL.groovy替换为:
http://foo.cz/myapp/home/gallery

嗯,我必须在控制器中使用wildcart和其他脏代码。 这不是很好的代码。

现在我知道,正如Olexandr告诉我的那样,不是好主意在params 中使用斜杠(/)。

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

非常感谢所有大师。

汤姆