如何不对路由参数进行URL编码?

时间:2015-11-29 18:13:41

标签: playframework routes playframework-2.0

我正在使用Play 2.4 with Java,我已经有了这条路线:

GET /page/:slug controllers.Application.page(slug: String)

因此,例如,如果slug = this-is-a-slug没有问题,那么路线如下:

/page/this-is-a-slug

但是,如果slug = first-part-of-the-slug/second-part-of-the-slug,则网址栏会显示:

/page/first-part-of-the-slug%2Fsecond-part-of-the-slug

我想避免编码slug,知道slug'部分的数量'未定义,并将slug作为一个独特的参数。

我怎么能这样做?任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:2)

您需要使用“*”,如:

/page/*slug

在文档https://www.playframework.com/documentation/2.4.x/JavaRouting

中查找“跨越多个/ 的动态部分”部分
  

如果您希望动态部件捕获多个URI路径段,   通过正斜杠分隔,您可以使用正斜杠定义动态部分   * id语法,它使用。*正则表达式:

GET   /files/*name       controllers.Application.download(name)
     

此处,对于GET /files/images/logo.png之类的请求,name动态   part将捕获images/logo.png值。