【问题标题】:Play Framework 2.2.1 - Case insensitive routingPlay Framework 2.2.1 - 不区分大小写的路由
【发布时间】:2014-03-27 18:38:28
【问题描述】:

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

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

例如我已经在路由文件中定义了一条 /accessLicense 路由,如下所示

GET /accessLicense controller.MyController.accessLicense()

现在,如果我启动 /accessLicense,它会很棒;正如预期的那样,但如果尝试使用 /AccessLicense、/AcCeSSLicenSe 或任何其他拼写完全​​相同的单词的大写/小写字母组合,则不起作用。

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

【问题讨论】:

    标签: java playframework routing playframework-2.2


    【解决方案1】:

    不幸的是,AFAIK,没有办法神奇地打开一个可以做你想做的事情的开关。值得庆幸的是,有一种解决方法,恕我直言,这是次等的,但它是可以做到的最好的。

    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( "/" ) ) )
    }
    

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

    【讨论】:

      猜你喜欢
      • 2014-03-10
      • 2020-01-26
      • 1970-01-01
      • 1970-01-01
      • 2015-06-06
      • 2016-11-24
      • 2016-12-16
      • 1970-01-01
      • 2021-09-07
      相关资源
      最近更新 更多