play2 中的路线 : How to match a part of the url

标签 routes playframework-2.0

有一些网址,例如:

http://localhost:9000/images/111111.jpg
http://localhost:9000/images/222222.png
http://localhost:9000/images/333333.gif

它们将被映射到一个方法:

def showImage(id: String) = Action {
    val image = Image.findById(id).get
    Ok.sendFile(new File(image.path)
}

请注意 id是 url 中显示的文件名的唯一部分:111111 , 222222 , 333333

所以我在路由中写了一个映射:

GET  /images/$id<\w+>.*          controllers.Images.showImage(id)

$id<\w+>.*部分, id与 ID 匹配,.*匹配将被忽略的后缀。

但是语法不对,错误信息是:

Identifier expected

如何解决?

最佳答案

Play 2 目前无法做到这一点。作为解决方法,您可以在 Controller 操作中处理您的参数:

GET    /images/:id       controllers.Images.showImage(id)
def showImage(idWithExt: String) = Action {
  val id = idWithExt.takeWhile(_ != '.')
  ...
}

关于play2 中的路线 : How to match a part of the url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9312148/

相关文章:

php - Codeigniter 找不到 Assets (css|js|图像)

asp.net-mvc - ASP.Net MVC Html.ActionLink() 问题

mongodb - 具有枚举值的 Scala 序列化异常

scala - 如何在scala中传递一个或无变量arg?

同一主机上的 Docker 容器但不同网桥无法连接

java - Camel 习惯用法根据消息正文中的值动态路由

Python Linux 路由表查找

java - Play Framework 文档任务列表示例错误

java - 在 Play Framework 中导入 Jar 会出现 java.lang.ClassCastException

java - 绑定(bind)失败会阻止 Playframework 2.2.1 中其他字段的进一步验证