Grails URL映射和URL中的斜杠字符
我面临以下问题: My Grails(2.2.0)应用程序具有以下URL映射:Grails URL映射和URL中的斜杠字符,url,grails,Url,Grails,我面临以下问题: My Grails(2.2.0)应用程序具有以下URL映射: "/api/clientQuote/$labcode/$cliCode/$quoCode"(controller: "clientQuote") { action = [GET: "get"] } 让我们假设以下值: $labcode = BRMIN $cliCode = CL-000236 $quoCode = QT-000965/0-0 由于$quoCode有一个斜杠字符,因此有必要将其替换为%2F。这样
"/api/clientQuote/$labcode/$cliCode/$quoCode"(controller: "clientQuote") {
action = [GET: "get"]
}
让我们假设以下值:
$labcode = BRMIN
$cliCode = CL-000236
$quoCode = QT-000965/0-0
由于$quoCode有一个斜杠字符,因此有必要将其替换为%2F。这样,可能的URL可以是:
当我把这个URL放在任何浏览器中时,一个空白屏幕显示为return。这很奇怪,因为请求甚至没有到达我的Grails控制器
另一方面,如果我更改以下内容的url:
一切正常,我收到了对请求的正确XML响应
问题是:为什么当我使用带有编码字符的特定URL映射时,会收到一个空白屏幕作为返回 URL映射可以使用
$paramName**
来允许在特定参数中使用斜杠-这通常用于CMS之类的东西,您希望将整个虚拟路径层次结构映射到单个控制器,但在您的情况下也可能有用
"/api/clientQuote/$labcode/$cliCode/$quoCode**"(controller: "clientQuote") {
action = [GET: "get"]
}
这将允许
http://myapp.com:9090/CCLASService/api/clientQuote/BRMIN/CL-000236/QT-000965/0-0
即使没有斜杠转义。看起来您访问了错误的URL(与您创建的映射不对应)。尝试将URL中的clientQuote
更改为clientProject
。对不起,我写问题的时候是打字错误。这个问题已经解决了。如果你使用“/api/clientQuote/$labcode/$cliCode/$quoCode**”
(这将允许在quoCode
中使用斜杠),它会工作吗?非常感谢@IanRoberts,你救了我一天。请将您的评论作为答案发布,以便我可以接受。