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

Kun*_*ale 6 java routing playframework playframework-2.2

我是Play的新手,目前正在使用Play 2.2.1

我试图为"路由"中定义的端点实现不区分大小写的路由

例如,我在路径文件中定义了一条路由说/ accessLicense,它看起来如下所示

GET /accessLicense controller.MyController.accessLicense()

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

在此先感谢您的指导和支持!

0fn*_*fnt 2

不幸的是,据我所知,没有办法神奇地打开一个开关来完成你想要的事情。值得庆幸的是,有一个解决方法,恕我直言,但它是最好的解决方法。

GET /[aA][cC][cC][eE][sS][s​​S].....

编辑:我做了以下操作,这符合我仅将 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( "/" ) ) )
}
Run Code Online (Sandbox Code Playgroud)

编辑请参阅此处: https: //jazzy.id.au/2013/05/08/advanced_routing_in_play_framework.html