Play Framework 2.2.1 - 不区分大小写的路由

时间:2014-02-25 13:40:06

标签: java playframework routing playframework-2.2

我是Play的新手,目前正在制作Play 2.2.1

我正在尝试为“路由”中定义的端点实现不区分大小写的路由

e.g。我在路径文件中定义了一条路由说/ accessLicense,它看起来像下面的

GET /accessLicense controller.MyController.accessLicense()

现在,如果我开火/访问许可证,它会很棒;正如预期的那样,但是如果尝试使用fir / AccessLicense,/ AcCeSSLicenSe或任何其他拼写完全​​相同单词的大写/小写字母组合,它就不起作用。

提前感谢您的指导和支持!!!

1 个答案:

答案 0 :(得分:2)

不幸的是,AFAIK,没有办法神奇地打开一个可以做你想要的开关。值得庆幸的是,有一个解决方法,劣质恕我直言,但它是最好的。

GET / [aA] [cC] [cC] [eE] [sS] [sS] .....

编辑:我做了以下操作,这符合我对URL的第一部分的低层框架的特定要求。所以GET / AbCdE / XyZ将成为GET / abcde / XyZ,如果它在路线中有一个动作,那么它将被妥善处理。

override def onRouteRequest( request: RequestHeader ) = {
   val path = request.path
   val split = path.split( "/" ).toList

   val lowerCasePath = split match{
     case ""::Nil  => ""::Nil
     case ""::x::y => ""::x.toLowerCase::y
   }

   logger.error( lowerCasePath.toString )

   super.onRouteRequest( request.copy( path = lowerCasePath.mkString( "/" ) ) )
}

编辑见:https://jazzy.id.au/2013/05/08/advanced_routing_in_play_framework.html