我在网址中遇到了编码斜杠的问题。
问题:
来自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/
但编码字符有问题“/".
完成
你能帮我吗?
非常感谢汤姆
答案 0 :(得分:3)
您需要解析Grails中的Url
答案 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字符作为参数分隔符时,它可以正常工作。
非常感谢所有大师。
汤姆