Grails URL映射和URL中的斜杠字符

can*_*oni 3 url grails

我面临以下问题:

我的Grails(2.2.0)应用程序具有以下URL映射:

"/api/clientQuote/$labcode/$cliCode/$quoCode"(controller: "clientQuote") {
  action = [GET: "get"]
}
Run Code Online (Sandbox Code Playgroud)

我们假设以下值:

$labcode = BRMIN
$cliCode = CL-000236
$quoCode = QT-000965/0-0
Run Code Online (Sandbox Code Playgroud)

由于$ quoCode具有斜杠字符,因此必须将其替换为%2F.这样,可能的URL可能是:

http://myapp.com:9090/CCLASService/api/clientQuote/BRMIN/CL-000236/QT-000965%2F0-0

当我将此URL放在任何浏览器中时,会显示一个空白屏幕作为返回.这很奇怪,因为请求甚至没有到达我的Grails控制器.

对于另一方,如果我更改网址:

http://myapp.com:9090/CCLASService/clientQuote/get?labcode=BRMIN&cliCode=CL-000236&quoCode=QT-000965%2F1-0

一切正常,我收到了对我的请求的正确XML响应.

问题是:为什么当我使用特定的URL映射与编码字符时,我收到一个空白屏幕作为返回?

Ian*_*rts 6

URL映射可用于$paramName**允许特定参数中的斜杠 - 这通常用于CMS,您希望将整个虚拟路径层次结构映射到单个控制器,但它也可能对您的情况有用.

"/api/clientQuote/$labcode/$cliCode/$quoCode**"(controller: "clientQuote") {
  action = [GET: "get"]
}
Run Code Online (Sandbox Code Playgroud)

这将允许http://myapp.com:9090/CCLASService/api/clientQuote/BRMIN/CL-000236/QT-000965/0-0即使没有斜线逃脱.