play2中的路由:如何匹配网址的一部分

时间:2012-02-16 13:29:43

标签: 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是网址中显示的文件名的唯一部分:111111222222333333

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

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

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

但语法不正确,错误信息为:

Identifier expected

如何解决?

1 个答案:

答案 0 :(得分:5)

目前无法通过Play 2执行此操作。作为一种解决方法,您可以在控制器操作中处理您的参数:

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