我是Play的新手,目前正在制作Play 2.2.1
我正在尝试为“路由”中定义的端点实现不区分大小写的路由
e.g。我在路径文件中定义了一条路由说/ accessLicense,它看起来像下面的
GET /accessLicense controller.MyController.accessLicense()
现在,如果我开火/访问许可证,它会很棒;正如预期的那样,但是如果尝试使用fir / AccessLicense,/ AcCeSSLicenSe或任何其他拼写完全相同单词的大写/小写字母组合,它就不起作用。
提前感谢您的指导和支持!!!
答案 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