Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Grails URL映射和URL中的斜杠字符_Url_Grails - Fatal编程技术网

Grails URL映射和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。这样

我面临以下问题:

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。这样,可能的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,你救了我一天。请将您的评论作为答案发布,以便我可以接受。